Бикубическая интерполяция
Бикубическая интерполяция — в вычислительной математике расширение кубической интерполяции на случай функции двух переменных, значения которой заданы на двумерной регулярной сетке. Поверхность, полученная в результате бикубической интерполяции является гладкой функцией, в отличие от поверхностей, полученных в результате билинейной интерполяции или интерполяции методом ближайшего соседа. Также бикубическая интерполяция часто используется в обработке изображений, давая более качественное изображение по сравнению с билинейной интерполяцией. В случае бикубической интерполяции значение функции в искомой точке вычисляется через ее значения в 16 соседних точках. При использовании приведённых ниже формул для программной реализации бикубической интерполяции следует помнить, что значения
и
являются относительными, а не абсолютными. Например, для пикселя с координатами
. Для получения относительных значений координат необходимо округлить вещественные координаты вниз, и вычесть полученные числа из вещественных координат.

, где
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
Подобным образом можно использовать и другие виды интерполяции, вычисляя значения функции по соседним
точкам.
Бикубическая интерполяция сплайнами [править]
Допустим, что необходимо интерполировать значение функции
в точке
, лежащей внутри квадрата
, и известно значение функции
в шестнадцати соседних точках
. Тогда общий вид функции, задающей интерполированную поверхность, может быть записан следующим образом: 
Для нахождения коэффициентов
необходимо подставить в выше приведённое уравнение значения функции в известных шестнадцати точках. Например:
.
Полностью в матричном виде:
,
где
,
,
.
Решая получившуюся систему линейных алгебраических уравнений, можно найти значения
в явном виде:
.
Единожды найденные коэффициенты
теперь могут быть использованы для многократного вычисления интерполированного значения функции в произвольных точках квадрата
.
Следует отметить, что такой способ обеспечивает непрерывность самой функции и ее второй производной на границах ячеек, но приводит к разрыву первых производных на границах ячеек. Для обеспечения непрерывности самой функции и ее первой производной необходимо подставлять в исходное выражение значения функции и значения первых производных по направлениям x и y в вершинах центральной ячейки, производные рассчитываются через центральные разности. Для подстановки производных выражение должно быть продифферинцировано соответствующим образом.
Последовательная кубическая интерполяция [править]
Другая интерпретация метода заключается в том, что для нахождения интерполированного значения можно сначала произвести кубическую интерполяцию в одном направлении, а затем в другом.
Для функции
с известными значениями
,
,
,
можно построить кубический сплайн:
, или в матричном виде
,
где
,
.
Таким образом, для нахождения интерполированного значения
в квадрате
можно сначала рассчитать четыре значения
,
,
,
для зафиксированного
, затем через полученные четыре точки построить кубический сплайн, и этим завершить вычисление
:
![p(x, y) =
\left[\begin{smallmatrix} 1 & y & y^2 & y^3 \end{smallmatrix}\right] A
\left(
\left[\begin{smallmatrix} 1 & x & x^2 & x^3 \end{smallmatrix}\right] A
\left[\begin{smallmatrix}
& f(-1, -1) & f(0, -1) & f(1, -1) & f(2, -1) \\
& f(-1, 0) & f(0, 0) & f(1, 0) & f(2, 0) \\
& f(-1, 1) & f(0, 1) & f(1, 1) & f(2, 1) \\
& f(-1, 2) & f(0, 2) & f(1, 2) & f(2, 2) \\
\end{smallmatrix}\right]
\right)^T
=](http://upload.wikimedia.org/math/8/3/f/83fdaa459b58bbd27adab3ee6cf3bd6a.png)
![=
\left[\begin{smallmatrix} 1 & y & y^2 & y^3 \end{smallmatrix}\right] A
\left[\begin{smallmatrix}
f(-1, -1) & f(-1, 0) & f(-1, 1) & f(-1, 2) \\
f(0, -1) & f(0, 0) & f(0, 1) & f(0, 2) \\
f(1, -1) & f(1, 0) & f(1, 1) & f(1, 2) \\
f(2, -1) & f(2, 0) & f(2, 1) & f(2, 2)
\end{smallmatrix}\right]
A^T
\left[\begin{smallmatrix}
1 \\ x \\ x^2 \\ x^3
\end{smallmatrix}\right]](http://upload.wikimedia.org/math/4/e/7/4e771c066bad65ab0cea2e575f7d836e.png)
Следует отметить, что такой подход обеспечивает непрерывность самой функции и ее вторых производных на границе ячеек, но не обеспечивает непрерывности первой производной. Для обеспечения непрерывности первой производной необходимо подставлять значения функции и ее первых производных на границе центральной ячейки. Тогда коэффициенты сплайна будут иметь вид:
,
.


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