双线性插值

来自testwiki
跳转到导航 跳转到搜索
单位矩形的四个角的z值分别是0、1、1、0.5,如果将坐标解释为颜色,整个单位矩形上的双线性插值结果如图。

雙線性插值,又稱為雙線性內插。在数学上,双线性插值是对线性插值在二维直角网格上的扩展,用于对双变量函数(例如 xy)进行插值。其核心思想是在两个方向分别进行一次线性插值。

算法

红色的数据点与待插值得到的绿色点

假如我们想得到未知函数 f 在点 P=(x,y) 的值,假设我们已知函数 fQ11=(x1,y1), Q12=(x1,y2), Q21=(x2,y1), 及 Q22=(x2,y2) 四个点的值。

首先在 x 方向进行线性插值,得到

f(x,y1)x2xx2x1f(Q11)+xx1x2x1f(Q21),f(x,y2)x2xx2x1f(Q12)+xx1x2x1f(Q22).

然后在 y 方向进行线性插值,得到

f(x,y)y2yy2y1f(x,y1)+yy1y2y1f(x,y2)=y2yy2y1(x2xx2x1f(Q11)+xx1x2x1f(Q21))+yy1y2y1(x2xx2x1f(Q12)+xx1x2x1f(Q22))=1(x2x1)(y2y1)(f(Q11)(x2x)(y2y)+f(Q21)(xx1)(y2y)+f(Q12)(x2x)(yy1)+f(Q22)(xx1)(yy1))=1(x2x1)(y2y1)[x2xxx1][f(Q11)f(Q12)f(Q21)f(Q22)][y2yyy1].

注意此处如果先在 y 方向插值、再在 x 方向插值,其结果与按照上述顺序双线性插值的结果是一样的。

单位正方形

如果选择一个坐标系统使得 f 的四个已知点坐标分别为 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那么插值公式就可以化简为

f(x,y)f(0,0)(1x)(1y)+f(1,0)x(1y)+f(0,1)(1x)y+f(1,1)xy.

或者用矩阵运算表示为

f(x,y)[1xx][f(0,0)f(0,1)f(1,0)f(1,1)][1yy]

非线性

顾名思义,双线性插值的结果不是线性的,它是两个线性函数的积。在单位正方形上,双线性插值可以记作

f(x,y)=i=01j=01aijxiyj=a00+a10x+a01y+a11xy

常数的数目(四)对应于给定的 f 的数据点数目

a00=f(0,0),
a10=f(1,0)f(0,0),
a01=f(0,1)f(0,0),
a11=f(1,1)+f(0,0)(f(1,0)+f(0,1)).

双线性插值的结果与插值的顺序无关。首先进行 y 方向的插值,然后进行 x 方向的插值,所得到的结果是一样的。

双线性插值的一个显然的三维空间延伸是三线性插值

在图像处理领域的应用

对灰度值进行双线性插值

计算机视觉图像处理领域,双线性插值是一种基本的重采样技术。

材质贴图中,双线性插值也叫双线性过滤或者双线性材质贴图。图像的双线性插值放大算法中,目标图像中新创造的象素值,是由源图像位置在它附近的2*2区域4个邻近象素的值通过加权平均计算得出的。双线性内插值算法放大后的图像质量较高,不会出现像素值不连续的的情况。然而此算法具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。

参见