在數值分析 這個數學 分支中,雙三次插值 (英語:Bicubic interpolation )是二維 空間中最常用的插值 方法。在這種方法中,函數 f 在點 (x , y ) 的值可以通過矩形 網格 中最近的十六個採樣點的加權平均 得到,在這裡需要使用兩個多項式插值 三次函數 ,每個方向使用一個。
屬性
通過雙三次插值可以得到一個連續的插值函數,它的一階偏導數連續,並且交叉導數處處連續。
公式
Bicubic interpolation on the square
[
0
,
4
]
×
[
0
,
4
]
{\displaystyle [0,4]\times [0,4]}
consisting of 25 unit squares patched together. Bicubic interpolation as per Matplotlib 's implementation. Colour indicates function value. The black dots are the locations of the prescribed data being interpolated. Note how the color samples are not radially symmetric.
Bilinear interpolation on the same dataset as above. Derivatives of the surface are not continuous over the square boundaries.
Nearest-neighbor interpolation on the same dataset as above.
雙三次插值通過下式進行計算:
p
(
x
,
y
)
=
∑
i
=
0
3
∑
j
=
0
3
a
i
j
x
i
y
j
.
{\displaystyle p(x,y)=\sum \limits _{i=0}^{3}\sum _{j=0}^{3}a_{ij}x^{i}y^{j}.}
或者用展開的形式,
a
00
+
a
10
x
+
a
01
y
+
a
20
x
2
+
a
11
x
y
+
a
02
y
2
+
a
21
x
2
y
+
a
12
x
y
2
+
a
22
x
2
y
2
+
a
30
x
3
+
a
03
y
3
+
a
31
x
3
y
+
a
13
x
y
3
+
a
32
x
3
y
2
+
a
23
x
2
y
3
+
a
33
x
3
y
3
{\displaystyle a_{00}+a_{10}x+a_{01}y+a_{20}x^{2}+a_{11}xy+a_{02}y^{2}+a_{21}x^{2}y+a_{12}xy^{2}+a_{22}x^{2}y^{2}+a_{30}x^{3}+a_{03}y^{3}+a_{31}x^{3}y+a_{13}xy^{3}+a_{32}x^{3}y^{2}+a_{23}x^{2}y^{3}+a_{33}x^{3}y^{3}}
計算係數
a
i
j
{\displaystyle a_{ij}}
的過程依賴於插值數據的特性。如果已知插值函數的導數,常用的方法就是使用四個頂點的高度以及每個頂點的三個導數。一階導數
h
′
x
{\displaystyle h'x}
與
h
′
y
{\displaystyle h'y}
表示 x 與 y 方向的表面斜率,二階相互導數
h
″
x
y
{\displaystyle h''xy}
表示同時在 x 與 y 方向的斜率。這些值可以通過分別連續對 x 與 y 向量取微分得到。對於網格單元的每個頂點,將局部坐標(0,0, 1,0, 0,1 和 1,1) 帶入這些方程,再解這 16 個方程。
在計算機圖形學中的應用
雙三次插值算法經常用於圖像或者影片的縮放,它能比占主導地位的雙線性濾波 算法保留更好的細節品質。
參見
外部連結