Билинейная интерполяция: различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
→‎Билинейная интерполяция в компьютерной графике: уточнение, оформление, стилевые правки
Строка 55:
== Билинейная интерполяция в компьютерной графике ==
[[Файл:Bilinear Interpolation example.png|frame|right|Пример увеличения части изображения — простым масштабированием и с применением билинейной интерполяции]]
В компьютерной графике билинейная интерполяция получила широкое распространение в процессе [[ресемплинг]]а (или, проще говоря, масштабирования) изображений. Применение этого метода обусловлено относительно низкой вычислительной ресурсоёмкости, что снижает время на ресемплинг.
 
При увеличении цифровых изображений наблюдаетсябез обработки происходит сильная [[пикселизация]] картинки. Билинейная интерполяция — один из методов интерполяции используется для расчета цветов дополнительных пикселей (<math>P</math>) относительно основных, исходных (с известными цветовыми координатами <math>Q</math>), причем цветовые координаты, или одна координата в полутоновых изображений, вычисляются во всех точках между опорными точками, что позволяет сглаживать переходырезкие границы между пикселями исходного изображения. ЗначениемЗначения функциифункций <math>f</math> в данном случае выступаетвычисляется цветпо пикселяцветовым (егокоординатам составляющие)опорных точек. При этом квадратсторона квадрата, образованныйобразованного четырьмя смежными рассматриваемыми основными точками принимается [[Единичныйза квадрат|единичным]]единицу.
 
=== Недостаток метода ===
ГлавнымГлавный минусомнедостаток метода билинейной интерполяции при масштабировании изображений является тот факт, что — при увеличении в <math>N</math> раз изображения размером <math>W</math> на <math>H</math> пикселей в результате будет получено изображение размером не <math>NW</math> на <math>NH</math> пикселей, а <math>(N(W-1)+1)</math> на <math>(N(H-1)+1)</math> пикселей.
 
Связано это с тем, что в исходном изображении, например, по горизонтали имеется <math>W</math> точек, то есть <math>(W-1)</math> смежных пар. При увеличении изображения в <math>N</math> раз между каждой парой основных точек вставляется по <math>(N-1)</math> дополнительных точек (то есть при увеличении вдвое между основными точками вставляется ещеещё по одной, при увеличении втрое — по две и т. д.). Итого в результате ширина результирующего изображения будет равна сумме количества основных и дополнительных точек:
 
Связано это с тем, что в исходном изображении, например, по горизонтали имеется <math>W</math> точек, то есть <math>(W-1)</math> смежных пар. При увеличении изображения в <math>N</math> раз между каждой парой основных точек вставляется по <math>(N-1)</math> дополнительных точек (то есть при увеличении вдвое между основными точками вставляется еще по одной, при увеличении втрое — по две и т. д.). Итого в результате ширина результирующего изображения будет равна сумме количества основных и дополнительных точек:
: <math>W + (W-1)(N-1) = N(W-1)+1</math>.
Проще говоря, для последнего пикселя (в каждой строке и столбце) исходного изображения не находится пары, с которой можно было бы провести интерполирование.
 
Проще говоря, для последнегопикселей пикселяпо границам изображения (в каждой строке и столбце) исходного изображения не находится пары, с которой можно было бы провести интерполирование.
Для обхода данного ограничения, во-первых, обычно принимается, что в исходном и полученном изображениях цветовые значения пикселей семплированы из их ''центров'', нежели из углов, то есть например, если принять абсолютную длину и ширину изображения равными 1, в изображении размером 2 на 2 координатами исходных точек являются (0.25;0.25), (0.25;0.75), (0.75;0.25), и (0.75;0.75), нежели (0;0), (0;0.5), (0.5;0), и (0.5;0.5) (поправка на дискретизацию). Таким образом обеспечивается правильная центровка изображения при масштабировании, но проблемными оказываются не только последняя строка и последний столбец, а все пограничные пиксели получаемого изображения в равной степени, ибо их координаты выпадают за пределы прямоугольника, очерчивающего точки семплирования исходного изображения (например, при масштабировании в 4 на 4 нужно вычислить значения в точках (0.125;0.125), (0.125;0.875) и т. д.). Затем, так как значения в этих точках не могут быть интерполированы, то нужно расширить исходное изображение одним из способов (выбор которого зависит от способа дальнейшего использования изображения):
 
Для обхода данного ограничения, во-первых, обычно принимается, что в исходном и полученном изображениях цветовые значения пикселей семплированы из их ''центров'', нежели из углов, то есть например, если принять абсолютную длину и ширину изображения равными 1, в изображении размером 2 на 2 координатами исходных точек являются (0.,25; 0.,25), (0.,25; 0.,75), (0.,75; 0.,25), и (0.,75; 0.,75), нежели (0; 0), (0; 0.,5), (0.,5; 0), и (0.,5; 0.,5) (поправка на дискретизацию). Таким образом обеспечивается правильная центровка изображения при масштабировании, но проблемными оказываются не только последняя строка и последний столбец, а все пограничные пиксели получаемого изображения в равной степени, ибо их координаты выпадают за пределы прямоугольника, очерчивающего точки семплирования исходного изображения (например, при масштабировании в 4 на 4 нужно вычислить значения в точках (0.,125; 0.,125), (0.,125; 0.,875) и т. д.). Затем, так как значения в этих точках не могут быть интерполированы, то нужно расширить исходное изображение одним из способов (выбор которого зависит от способа дальнейшего использования изображения):
* [[Экстраполяция]] значений краевых пикселей;
* Зеркальное отражение исходного изображения относительно каждого края, и центральное по углам. В качестве значений отсутствующих пикселей используются копии значений пикселей с того же края; таким образом, пиксели, выпадающие за исходные координаты, являются интерполянтами лишь в одном измерении, а в другом копиями краевых значений;
* [[Тесселяция]] исходного изображения;: копии исходного изображения «приклеиваются» встык с каждого края и из углов. В качестве цветовых значений отсутствующих пикселей, таким образом, используются значения пикселей с противоположного края. Метод подходит, если интерполированное изображение само будет использоваться для тесселяции (например, для заполнения многоугольников при [[Текстура (трёхмерная графика)|текстурировании]]).
После подобной предварительной обработки процедура билинейной интерполяции применяется в исходном виде, с получением изображения ожидаемого размера (<math>NWN_W</math> на <math>NHN_H</math>).
 
== См. также ==