Билинейная интерполяция

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Билине́йная интерполя́ция — в вычислительной математике — обобщение линейной интерполяции одной переменной для функций двух переменных.

Обобщение основано на применении обычной линейной интерполяции сначала в направлении одной из координат, а затем в перпендикулярном направлении.

Функция билинейной интерполяции имеет вид:

и интерполирует значения исходной функции двух переменных в произвольном прямоугольнике по четырём её значениям в вершинах прямоугольника и экстраполирует функцию на всю остальную поверхность.

Рис. 1. В четырёх красных точках с координатами значения исходной функции известны. Требуется получить приближённое (интерполированное) значение исходной функции в зелёной точке с координатами должно быть интерполировано.
Рис. 2. Пример билинейной интерполяции в единичном квадрате. Значения интерполируемой функции в вершинах в этом примере равны 0; 1; 1 и 0,5. Интерполированные значения функции внутри квадрата в каждой точке представлены условным цветом.
Рис. 3 Функция билинейной интерполяции порождает линейчатую поверхность

Принцип построения билинейной интерполяции

[править | править код]

Допустим, что необходимо интерполировать значение функции в точке . Значения функции в окружающих точку точках и известны (рис. 1).

Первым шагом линейно интерполируется значение вспомогательных точек и вдоль оси абсцисс, где

Теперь проводится линейная интерполяция между вспомогательными точками и .

Это и есть интерполируемое (экстраполируемое) значение функции , причём значения интерполирующей функции равны значениям интерполируемой функции в исходных точках :

Другим эквивалентным способом неизвестные коэффициенты интерполирующей функции (интерполянта) можно найти из решения системы линейных уравнений относительно коэффициентов интерполянта :

В частном случае, когда известны значения интерполируемой функции в точках, являющихся вершинами единичного квадрата с координатами вершин (0, 0), (0, 1), (1, 0), и (1, 1), формула билинейной интерполяции упрощается до:

Или же в обозначениях умножения векторов на матрицу:

Обратите внимание, что сам интерполянт не линеен, а билинеен:

где

.

Результат билинейной интерполяции не зависит от порядка шагов по координатам. Возможно сначала интерполировать между заданными точками вдоль оси ординат и затем, получив два вспомогательных значения, интерполировать между ними вдоль оси абсцисс.

Обобщение билинейной интерполяции на функции трёх и более переменных

[править | править код]

Интерполянт билинейной интерполяции можно записать в виде:

соответственно, интерполянт трилинейной интерполяции функции трёх переменных записывается как:

Неизвестные коэффициенты находятся из решения системы 8-ми линейных уравнений по известным значениям интерполируемой функции в 8-ми точках, принадлежащих вершинам прямоугольного параллелепипеда в координатах :

В случае линейной интерполяции функции переменных линейный интерполянт будет:

коэффициентов интерполянта находятся из решения системы линейных уравнений по известным значениям интерполируемой функции в вершинах прямоугольного гиперпараллелепипеда.

Использование билинейной интерполяции

[править | править код]

Билинейная интерполяция применяется при обработке числовых данных, в метеорологии и гидродинамике, сопротивлении материалов, в компьютерной графике, для компенсации ошибок перемещения инструмента по координатам в станках с ЧПУ и др.

Билинейная интерполяция двумерных векторных полей

[править | править код]

Помимо интерполяции скалярного двумерного поля, — то есть функции двух переменных (координат), билинейная интерполяция также применяется для интерполяции двумерных векторных полей. При такой интерполяции интерполируются обе компоненты векторного поля — проекции вектора в точках на оси координат. Результат интерполяции двух скалярных функций — компонентов вектора, порождает интерполированный вектор.

Этот подход применяется в метеорологии для построения интерполированной карты ветров в прямоугольной области по измеренным данным значений векторов ветра в опорных точках, принадлежащих вершинам прямоугольника[1].

Билинейная интерполяция в компьютерной графике

[править | править код]
Рис. 4. Некоторые распространённые виды одномерной и двумерной интерполяций.
Заданные значения функции изображены цветными точками, значение функции в интерполируемой точке — черными точками.
Изображены одномерная и двумерная интерполяции к ближайшему соседу, линейная, квадратическая, кубическая билинейная, биквадратная и бикубическая интерполяции.
Рис. 5. Пример увеличения части изображения — простым масштабированием и с применением билинейной интерполяции.

В компьютерной графике билинейная интерполяция наряду с другими методами интерполяций получила широкое распространение в процессе ресемплинга (или, проще говоря, масштабирования) изображений. Билинейную интерполяцию в приложениях обработки изображений обычно называют «билинейной фильтрацией». Применение этого метода обусловлено относительно низкой вычислительной ресурсоёмкости, что снижает время на ресемплинг при удовлетворительном качестве обработки изображений.

Необходимость интерполяции цветов в обработке цифровых изображений обусловлена тем, что при простом увеличении изображений без обработки происходит сильная пикселизация картинки.

Билинейная интерполяция — один из методов интерполяции и используется для вычисления цветов дополнительных пикселей () относительно основных, исходных, заданных в оригинальном изображении с известными цветовыми координатами , причем цветовые координаты пикселей, лежащих внутри прямоугольника с заданными цветовыми координатами в вершинах его, или одна цветовая координата в случае полутоновых изображений, вычисляются во всех точках между опорными точками, что позволяет сглаживать резкие границы между пикселями исходного изображения. Значения функций в данном случае вычисляется по цветовым координатам опорных точек. При этом сторона квадрата, образованного четырьмя смежными рассматриваемыми основными точками обычно принимается за единицу.

Недостаток метода билинейной интерполяции при масштабировании изображений

[править | править код]

Главный недостаток метода билинейной интерполяции при масштабировании изображений — при увеличении в раз исходного изображения размером на пикселей в результате будет получено изображение размером не на пикселей, а на пикселей.

Связано это с тем, что в исходном изображении, например, по горизонтали имеется точек, то есть смежных пар. При увеличении изображения в раз между каждой парой основных точек вставляется по дополнительных точек (то есть при увеличении вдвое между основными точками вставляется ещё по одной, при увеличении втрое — по две и т. д.). Итого в результате ширина результирующего изображения будет равна сумме количества основных и дополнительных точек:

.

Проще говоря, для пикселей по границам изображения (в каждой строке и столбце) исходного изображения не находится пары, с которой можно было бы провести интерполирование.

Для обхода данного ограничения, во-первых, обычно принимается, что в исходном и полученном изображениях цветовые значения пикселей семплированы из их центров, нежели из углов, то есть например, если принять абсолютную длину и ширину изображения равными 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. Объективный анализ метеорологических полей. Дата обращения: 12 февраля 2018. Архивировано 13 февраля 2018 года.