双线性插值(也称双线性内插),核心是在两个方向分别进行一次线性插值,在图像处理、信号分析等领域广泛应用。
一元函数 y = f ( x ) y=f(x) y=f(x)可以在二维空间(如平面直角坐标系)绘制成曲线,设一元函数 f ( x ) f(x) f(x),已知两点 P 1 ( x 1 , f ( x 1 ) ) P_1(x_1,f(x_1)) P1(x1,f(x1))、 P 2 ( x 2 , f ( x 2 ) ) P_2(x_2,f(x_2)) P2(x2,f(x2)),则根据一维线性插值求两点所连直线上的一点 ( x , y ) (x,y) (x,y)公式如下:
y − f ( x 1 ) f ( x 2 ) − f ( x 1 ) = x − x 1 x 2 − x 1 (1) \frac{y-f(x_1)}{f(x_2)-f(x_1)} =\frac{x-x_1}{x_2-x_1} \tag{1} f(x2)−f(x1)y−f(x1)=x2−x1x−x1(1) 即
y = x 2 − x x 2 − x 1 f ( x 1 ) + x − x 1 x 2 − x 1 f ( x 2 ) (2) y=\frac{x_2-x}{x_2-x_1}f(x_1)+\frac{x-x_1}{x_2-x_1}f(x_2) \tag{2} y=x2−x1x2−xf(x1)+x2−x1x−x1f(x2)(2)
二元函数 z = f ( x , y ) z=f(x,y) z=f(x,y)可以在三维空间(如空间直角坐标系)绘制曲面,设二元函数 z = f ( x , y ) z=f(x,y) z=f(x,y),已知四个点 Q 1 ( x 1 , y 1 , f ( x 1 , y 1 ) ) Q_1(x_1,y_1,f(x_1,y_1)) Q1(x1,y1,f(x1,y1))、 Q 2 ( x 1 , y 2 , f ( x 1 , y 2 ) ) Q_2(x_1,y_2,f(x_1,y_2)) Q2(x1,y2,f(x1,y2))、 Q 3 ( x 2 , y 1 , f ( x 2 , y 1 ) ) Q_3(x_2,y_1,f(x_2,y_1)) Q3(x2,y1,f(x2,y1))、 Q 4 ( x 2 , y 2 , f ( x 2 , y 2 ) ) Q_4(x_2,y_2,f(x_2,y_2)) Q4(x2,y2,f(x2,y2))利用双线性插值的本质:在两个方向上分别进行一次线性插值求解最后的插值点 ( x , y , z ) (x,y,z) (x,y,z)
首先在X方向上进行插值(需要固定y1、y2平面):
在 y = y 1 y=y_1 y=y1平面, f ( x , y 1 ) = x 2 − x x 2 − x 1 f ( x 1 , y 1 ) + x − x 1 x 2 − x 1 f ( x 2 , y 1 ) (3) f(x,y_1)=\frac{x_2-x}{x_2-x_1}f(x_1,y_1)+\frac{x-x_1}{x_2-x_1}f(x_2,y_1) \tag{3} f(x,y1)=x2−x1x2−xf(x1,y1)+x2−x1x−x1f(x2,y1)(3)
在 y = y 2 y=y_2 y=y2平面, f ( x , y 2 ) = x 2 − x x 2 − x 1 f ( x 1 , y 2 ) + x − x 1 x 2 − x 1 f ( x 2 , y 2 ) (4) f(x,y_2)=\frac{x_2-x}{x_2-x_1}f(x_1,y_2)+\frac{x-x_1}{x_2-x_1}f(x_2,y_2) \tag{4} f(x,y2)=x2−x1x2−xf(x1,y2)+x2−x1x−x1f(x2,y2)(4)
然后在Y方向上进行插值(需要固定x平面):
z = y 2 − y y 2 − y 1 f ( x , y 1 ) + y − y 1 y 2 − y 1 f ( x , y 2 ) (5) z =\frac{y_2-y}{y_2-y_1}f(x,y_1)+\frac{y-y_1}{y_2-y_1} f(x,y_2) \tag{5} z=y2−y1y2−yf(x,y1)+y2−y1y−y1f(x,y2)(5)
综上可得:
z = a ∗ f ( x 1 , y 1 ) + b ∗ f ( x 2 , y 1 ) + c ∗ f ( x 1 , y 2 ) + d ∗ f ( x 2 , y 2 ) (6) z=a*f(x_1,y_1)+b*f(x_2,y_1)+c*f(x_1,y_2)+d*f(x_2,y_2) \tag{6} z=a∗f(x1,y1)+b∗f(x2,y1)+c∗f(x1,y2)+d∗f(x2,y2)(6)
其中 a = x 2 − x x 2 − x 1 y 2 − y y 2 − y 1 a=\frac{x_2-x}{x_2-x_1}\frac{y_2-y}{y_2-y_1} a=x2−x1x2−xy2−y1y2−y b = x − x 1 x 2 − x 1 y 2 − y y 2 − y 1 b=\frac{x-x_1}{x_2-x_1}\frac{y_2-y}{y_2-y_1} b=x2−x1x−x1y2−y1y2−y c = x 2 − x x 2 − x 1 y − y 1 y 2 − y 1 c=\frac{x_2-x}{x_2-x_1}\frac{y-y_1}{y_2-y_1} c=x2−x1x2−xy2−y1y−y1 d = x − x 1 x 2 − x 1 y − y 1 y 2 − y 1 d=\frac{x-x_1}{x_2-x_1}\frac{y-y_1}{y_2-y_1} d=x2−x1x−x1y2−y1y−y1
一张二维图像本质可以看成二维函数 z = f ( x , y ) z=f(x,y) z=f(x,y),如 ( x , y ) (x,y) (x,y)即某个像素点的坐标,z即像素点处的函数值。对于二维图像来说,经常用相邻四个像素点, x 2 − x 1 = 1 , y 2 − y 1 = 1 x_2-x_1=1,y_2-y_1=1 x2−x1=1,y2−y1=1,所以式(6)中分母都为1
设图像上四个相邻点为 ( x 1 , y 1 ) (x_1,y_1) (x1,y1)、 ( x 1 , y 2 ) (x_1,y_2) (x1,y2)、 ( x 2 , y 1 ) (x_2,y_1) (x2,y1)、 ( x 2 , y 2 ) (x_2,y_2) (x2,y2),可令 x 1 = i , y 1 = j x_1=i, y_1=j x1=i,y1=j,则 x 2 = i + 1 , y 2 = j + 1 x_2=i+1, y_2 = j+1 x2=i+1,y2=j+1,同时令 x − x 1 = u x-x_1=u x−x1=u, y − y 1 = v y-y_1=v y−y1=v,则 x 2 − x = 1 − u x_2-x=1-u x2−x=1−u, y 2 − y = 1 − v y_2-y=1-v y2−y=1−v
带入式(6)后如下:
f ( i + u , j + v ) = ( 1 − u ) ( 1 − v ) f ( i , j ) + u ( 1 − v ) f ( i + 1 , j ) + ( 1 − u ) v f ( i , j + 1 ) + u v f ( i + 1 , j + 1 ) (7) f(i+u,j+v)=(1-u)(1-v)f(i,j)+u(1-v)f(i+1,j)+(1-u)vf(i,j+1)+uvf(i+1,j+1) \tag{7} f(i+u,j+v)=(1−u)(1−v)f(i,j)+u(1−v)f(i+1,j)+(1−u)vf(i,j+1)+uvf(i+1,j+1)(7)