Билинейная интерполяция выполняется с использованием линейной интерполяции сначала в одном направлении, а затем снова в другом направлении. Хотя каждый шаг линеен по выборочным значениям и по положению, интерполяция в целом не линейна, а скорее квадратична по положению выборки.
Предположим, что мы хотим найти значение неизвестной функции f в точке ( x , y ). Предполагается, что мы знаем значение f в четырех точках Q 11 = ( x 1 , y 1 ), Q 12 = ( x 1 , y 2 ), Q 21 = ( x 2 , y 1 ) и Q 22 = ( x 2 , y 2 ).
Повторная линейная интерполяция
Сначала мы делаем линейную интерполяцию в направлении x . Это дает
Продолжаем интерполяцию в направлении y, чтобы получить желаемую оценку:
Обратите внимание, что мы придем к тому же результату, если интерполяция будет выполнена сначала по направлению y , а затем по направлению x . [1]
Полиномиальная подгонка
Альтернативный способ — записать решение задачи интерполяции в виде полилинейного полинома
где коэффициенты находятся путем решения линейной системы
давая результат
Средневзвешенное значение
Решение также можно записать в виде средневзвешенного значения f ( Q ):
где сумма весов равна 1 и удовлетворяет транспонированной линейной системе
давая результат
что упрощается до
в соответствии с результатом, полученным путем повторной линейной интерполяции. Набор весов также можно интерпретировать как набор обобщенных барицентрических координат для прямоугольника.
Альтернативная матричная форма
Объединяя вышесказанное, мы имеем
На единичной площади
Если мы выберем систему координат, в которой четыре точки, в которых известна f , это (0, 0), (0, 1), (1, 0) и (1, 1), то формула интерполяции упрощается до
или, что эквивалентно, в матричных операциях:
Здесь мы также узнаем веса:
В качестве альтернативы интерполянт на единичном квадрате можно записать как
где
В обоих случаях количество констант (четыре) соответствует количеству точек данных, где задана f .
Характеристики
Как следует из названия, билинейный интерполянт не является линейным; но он линеен (т.е. аффинен) вдоль линий, параллельных направлению x или y , что эквивалентно, если x или y остаются постоянными. Вдоль любой другой прямой линии интерполянт является квадратичным . Несмотря на то, что интерполяция не является линейной в позиции ( x и y ), в фиксированной точке она линейна в значениях интерполяции, как можно видеть в (матричных) уравнениях выше.
Результат билинейной интерполяции не зависит от того, какая ось интерполируется первой, а какая второй. Если бы мы сначала выполнили линейную интерполяцию в направлении y , а затем в направлении x , то полученное приближение было бы тем же самым.
В общем случае интерполянт будет принимать любое значение (в выпуклой оболочке значений вершин) в бесконечном числе точек (образующих ветви гипербол [2] ), поэтому интерполяция необратима.
Однако, когда билинейная интерполяция применяется к двум функциям одновременно, например, при интерполяции векторного поля , то интерполяция обратима (при определенных условиях). В частности, это обратное можно использовать для нахождения «координат единичного квадрата» точки внутри любого выпуклого четырехугольника (рассматривая координаты четырехугольника как векторное поле, которое билинейно интерполируется на единичном квадрате). Используя эту процедуру, билинейную интерполяцию можно распространить на любой выпуклый четырехугольник, хотя вычисление значительно усложняется, если это не параллелограмм. [3] Полученное отображение между четырехугольниками известно как билинейная трансформация , билинейная деформация или билинейная деформация .
В качестве альтернативы можно использовать проективное отображение между четырехугольником и единичным квадратом, но полученный интерполянт не будет билинейным.
В частном случае, когда четырехугольник является параллелограммом , существует линейное отображение на единичный квадрат, и обобщение следует легко.
Очевидное расширение билинейной интерполяции на три измерения называется трилинейной интерполяцией .
Применение в обработке изображений
В компьютерном зрении и обработке изображений билинейная интерполяция используется для повторной выборки изображений и текстур. Алгоритм используется для сопоставления местоположения пикселя экрана с соответствующей точкой на текстурной карте . Средневзвешенное значение атрибутов (цвет, прозрачность и т. д.) четырех окружающих текселей вычисляется и применяется к пикселю экрана. Этот процесс повторяется для каждого пикселя, образующего текстурируемый объект. [4]
Когда изображение необходимо масштабировать, каждый пиксель исходного изображения необходимо переместить в определенном направлении на основе константы масштаба. Однако при масштабировании изображения с нецелым масштабным коэффициентом есть пиксели (т. е. дыры ), которым не назначены соответствующие значения пикселей. В этом случае этим дырам следует назначить соответствующие значения RGB или оттенков серого , чтобы выходное изображение не имело незначимых пикселей.
Билинейная интерполяция может использоваться там, где невозможно идеальное преобразование изображения с сопоставлением пикселей, так что можно вычислить и назначить соответствующие значения интенсивности пикселям. В отличие от других методов интерполяции, таких как интерполяция по ближайшему соседу и бикубическая интерполяция , билинейная интерполяция использует значения только 4 ближайших пикселей, расположенных в диагональных направлениях от заданного пикселя, чтобы найти соответствующие значения интенсивности цвета этого пикселя.
Билинейная интерполяция рассматривает ближайшее соседство 2 × 2 известных значений пикселей, окружающих вычисленное местоположение неизвестного пикселя. Затем она берет средневзвешенное значение этих 4 пикселей, чтобы получить его окончательное интерполированное значение. [5] [6]
Пример
Как видно из примера справа, значение интенсивности в пикселе, вычисленное как находящееся в строке 20.2, столбце 14.5, можно вычислить, сначала выполнив линейную интерполяцию между значениями в столбцах 14 и 15 в каждой строке 20 и 21, что даст
и затем линейно интерполируя между этими значениями, получаем
Этот алгоритм уменьшает некоторые визуальные искажения, вызванные изменением размера изображения с помощью нецелочисленного коэффициента масштабирования, в отличие от интерполяции по ближайшим соседям, из-за которой некоторые пиксели на измененном изображении будут выглядеть больше других.
Упрощение терминов
В этом примере представлены табличные данные о давлении (столбцы) и температуре (строки) для поиска по некоторой переменной.
Следующий стандартный расчет по частям имеет 18 требуемых операций.
Все это можно упростить, сократив первоначальные 18 отдельных операций до 16 отдельных операций;
Вышеприведенный пример содержит две повторяющиеся операции.
Эти два повторения могут быть назначены временными переменными во время вычисления одной интерполяции, что сократит количество вычислений до 14 операций, что является минимальным количеством шагов, необходимых для получения желаемой интерполяции. Выполнение этой интерполяции за 14 вместо 18 операций делает ее на 22% более эффективной.
Упрощение терминов является хорошей практикой применения математической методологии в инженерных приложениях и может снизить вычислительные и энергетические требования к процессу.
^ Пресс, Уильям Х.; Тьюколски, Сол А.; Веттерлинг, Уильям Т.; Фланнери, Брайан П. (1992). Численные рецепты на языке C: искусство научных вычислений (2-е изд.). Нью-Йорк, Нью-Йорк, США: Cambridge University Press. стр. 123-128. ISBN 0-521-43108-5.
^ Монасс, Паскаль (2019-08-10). «Извлечение линий уровня билинейного изображения». Обработка изображений в режиме реального времени . 9 : 205–219. doi : 10.5201/ipol.2019.269 . ISSN 2105-1232.
^ Определение билинейной интерполяции (популярная статья на www.pcmag.com.
^ Хосрави, MR (19.03.2021). «BL-ALM: слепой масштабируемый фильтр реконструкции с граничным управлением для интеллектуального мониторинга окружающей среды через зеленые сети IoMT-UAV». Труды IEEE по зеленым коммуникациям и сетям . 5 (2): 727–736. doi : 10.1109/TGCN.2021.3067555. S2CID 233669511.