При обработке изображений бикубическая интерполяция часто выбирается вместо билинейной или интерполяции ближайшего соседа при повторной выборке изображения , когда скорость не имеет значения. В отличие от билинейной интерполяции, которая учитывает только 4 пикселя (2×2), бикубическая интерполяция учитывает 16 пикселей (4×4). Изображения, повторно выбранные с помощью бикубической интерполяции, могут иметь различные артефакты интерполяции в зависимости от выбранных значений b и c.
Вычисление
Предположим, что значения функции и производные , и известны в четырех углах , , , и единичного квадрата. Тогда интерполированную поверхность можно записать как
Задача интерполяции состоит в определении 16 коэффициентов . Сопоставление со значениями функции дает четыре уравнения:
Аналогично, восемь уравнений для производных по направлениям и :
В приведенных выше выражениях использованы следующие идентичности:
Эта процедура дает поверхность на единичном квадрате , которая является непрерывной и имеет непрерывные производные. Бикубическая интерполяция на произвольной размерной регулярной сетке может быть затем выполнена путем склеивания таких бикубических поверхностей, гарантируя, что производные совпадают на границах.
Группируем неизвестные параметры в вектор
и позволяем
приведенной выше системе уравнений быть переформулированной в матрицу для линейного уравнения .
Обращение матрицы дает более полезное линейное уравнение , где
которое позволяет быстро и легко производить вычисления.
Может быть и другая краткая матричная форма для 16 коэффициентов:
или
где
Расширение до прямолинейных сеток
Часто приложения требуют бикубической интерполяции с использованием данных на прямоугольной сетке, а не единичного квадрата. В этом случае тождества для и становятся
где — интервал ячейки, содержащей точку , и аналогичными для . В этом случае наиболее практичным подходом к вычислению коэффициентов является то, чтобы позволить
затем решить с помощью , как и прежде. Затем нормализованные интерполирующие переменные вычисляются как
где и — и координаты точек сетки, окружающих точку . Затем интерполирующая поверхность становится
Нахождение производных от значений функции
Если производные неизвестны, их обычно аппроксимируют по значениям функции в точках, соседних с углами единичного квадрата, например, с помощью конечных разностей .
Чтобы найти одну из отдельных производных или , используя этот метод, найдите наклон между двумя окружающими точками на соответствующей оси. Например, чтобы вычислить для одной из точек, найдите для точек слева и справа от целевой точки и вычислите их наклон, и аналогично для .
Чтобы найти перекрестную производную , возьмите производную по обеим осям, по одной за раз. Например, можно сначала использовать процедуру для нахождения производных точек выше и ниже целевой точки, затем использовать процедуру на этих значениях (а не, как обычно, значениях для этих точек), чтобы получить значение для целевой точки. (Или можно сделать это в обратном направлении, сначала вычислив , а затем из них. Оба дают эквивалентные результаты.)
На краях набора данных, когда отсутствуют некоторые окружающие точки, недостающие точки могут быть аппроксимированы несколькими методами. Простой и распространенный метод заключается в том, чтобы предположить, что наклон от существующей точки до целевой продолжается без дальнейших изменений, и использовать это для вычисления гипотетического значения для недостающей точки.
Алгоритм бикубической свертки
Бикубическая сплайн-интерполяция требует решения линейной системы, описанной выше, для каждой ячейки сетки. Интерполятор с аналогичными свойствами может быть получен путем применения свертки со следующим ядром в обоих измерениях:
где обычно устанавливается равным −0,5 или −0,75. Обратите внимание, что и для всех ненулевых целых чисел .
Этот подход был предложен Кейсом, который показал, что он обеспечивает сходимость третьего порядка относительно интервала выборки исходной функции. [1]
Если мы используем матричную запись для общего случая , мы можем выразить уравнение более удобным образом:
для между 0 и 1 для одного измерения. Обратите внимание, что для интерполяции одномерной кубической свертки требуются 4 точки выборки. Для каждого запроса два образца расположены слева и два образца справа. Эти точки индексируются от −1 до 2 в этом тексте. Расстояние от точки с индексом 0 до точки запроса обозначается здесь .
Для двух измерений, впервые примененных один раз в и еще раз в :
Использование в компьютерной графике
Бикубический алгоритм часто используется для масштабирования изображений и видео для отображения (см. передискретизация растровых изображений ). Он сохраняет мелкие детали лучше, чем обычный билинейный алгоритм.
Однако из-за отрицательных лепестков на ядре это вызывает перерегулирование (ореол). Это может вызвать обрезание и является артефактом (см. также артефакты звона ), но это увеличивает остроту (кажущуюся резкость) и может быть желательным.
^ R. Keys (1981). «Интерполяция кубической свертки для цифровой обработки изображений». Труды IEEE по акустике, речи и обработке сигналов . 29 (6): 1153–1160. Bibcode :1981ITASS..29.1153K. CiteSeerX 10.1.1.320.776 . doi :10.1109/TASSP.1981.1163711.
Внешние ссылки
Применение интерполяции к выборкам высот
Теория интерполяции
Объяснение и реализация (би)кубической интерполяции на Java/C++
Функция Excel Worksheet для бикубической интерполяции Лагранжа