stringtranslate.com

Бикубическая интерполяция

Сравнение бикубической интерполяции с некоторыми 1- и 2-мерными интерполяциями.
Черные и красные / желтые / зеленые / синие точки соответствуют интерполированной точке и соседним образцам соответственно.
Их высоты над землей соответствуют их значениям.

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

При обработке изображений бикубическая интерполяция часто выбирается вместо билинейной или интерполяции ближайшего соседа при повторной выборке изображения , когда скорость не имеет значения. В отличие от билинейной интерполяции, которая учитывает только 4 пикселя (2×2), бикубическая интерполяция учитывает 16 пикселей (4×4). Изображения, повторно выбранные с помощью бикубической интерполяции, могут иметь различные артефакты интерполяции в зависимости от выбранных значений b и c.

Вычисление

Бикубическая интерполяция на квадрате, состоящем из 25 единичных квадратов, соединенных вместе. Бикубическая интерполяция согласно реализации Matplotlib . Цвет указывает значение функции. Черные точки — это местоположения заданных интерполируемых данных. Обратите внимание, что цветовые образцы не являются радиально-симметричными.
Билинейная интерполяция на том же наборе данных, что и выше. Производные поверхности не являются непрерывными по границам квадрата.
Интерполяция по методу ближайшего соседа на том же наборе данных, что и выше.

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

Задача интерполяции состоит в определении 16 коэффициентов . Сопоставление со значениями функции дает четыре уравнения:

Аналогично, восемь уравнений для производных по направлениям и :

И четыре уравнения для смешанной частной производной :

В приведенных выше выражениях использованы следующие идентичности:

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

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

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

Может быть и другая краткая матричная форма для 16 коэффициентов: или где

Расширение до прямолинейных сеток

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

Нахождение производных от значений функции

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

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

Чтобы найти перекрестную производную , возьмите производную по обеим осям, по одной за раз. Например, можно сначала использовать процедуру для нахождения производных точек выше и ниже целевой точки, затем использовать процедуру на этих значениях (а не, как обычно, значениях для этих точек), чтобы получить значение для целевой точки. (Или можно сделать это в обратном направлении, сначала вычислив , а затем из них. Оба дают эквивалентные результаты.)

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

Алгоритм бикубической свертки

Бикубическая сплайн-интерполяция требует решения линейной системы, описанной выше, для каждой ячейки сетки. Интерполятор с аналогичными свойствами может быть получен путем применения свертки со следующим ядром в обоих измерениях: где обычно устанавливается равным −0,5 или −0,75. Обратите внимание, что и для всех ненулевых целых чисел .

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

Если мы используем матричную запись для общего случая , мы можем выразить уравнение более удобным образом: для между 0 и 1 для одного измерения. Обратите внимание, что для интерполяции одномерной кубической свертки требуются 4 точки выборки. Для каждого запроса два образца расположены слева и два образца справа. Эти точки индексируются от −1 до 2 в этом тексте. Расстояние от точки с индексом 0 до точки запроса обозначается здесь .

Для двух измерений, впервые примененных один раз в и еще раз в :

Использование в компьютерной графике

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

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

Однако из-за отрицательных лепестков на ядре это вызывает перерегулирование (ореол). Это может вызвать обрезание и является артефактом (см. также артефакты звона ), но это увеличивает остроту (кажущуюся резкость) и может быть желательным.

Смотрите также

Ссылки

  1. ^ R. Keys (1981). «Интерполяция кубической свертки для цифровой обработки изображений». Труды IEEE по акустике, речи и обработке сигналов . 29 (6): 1153–1160. Bibcode :1981ITASS..29.1153K. CiteSeerX  10.1.1.320.776 . doi :10.1109/TASSP.1981.1163711.

Внешние ссылки