Билинейная интерполяция: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Содержимое удалено Содержимое добавлено
Нет описания правки |
Д.Ильин (обсуждение | вклад) →Билинейная интерполяция в компьютерной графике: уточнение, оформление, стилевые правки |
||
Строка 55:
== Билинейная интерполяция в компьютерной графике ==
[[Файл:Bilinear Interpolation example.png|frame|right|Пример увеличения части изображения — простым масштабированием и с применением билинейной интерполяции]]
В компьютерной графике билинейная интерполяция получила широкое распространение в процессе [[ресемплинг]]а (или, проще говоря, масштабирования) изображений. Применение этого метода обусловлено относительно низкой вычислительной ресурсоёмкости, что снижает время на ресемплинг.
При увеличении цифровых изображений
=== Недостаток метода ===
Связано это с тем, что в исходном изображении, например, по горизонтали имеется <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
* [[Экстраполяция]] значений краевых пикселей;
* Зеркальное отражение исходного изображения относительно каждого края, и центральное по углам. В качестве значений отсутствующих пикселей используются копии значений пикселей с того же края; таким образом, пиксели, выпадающие за исходные координаты, являются интерполянтами лишь в одном измерении, а в другом копиями краевых значений;
* [[Тесселяция]] исходного изображения
После подобной предварительной обработки процедура билинейной интерполяции применяется в исходном виде, с получением изображения ожидаемого размера (<math>
== См. также ==
|