单位矩形的四个角的z值分别是0、1、1、0.5,如果将坐标解释为颜色,整个单位矩形上的双线性插值结果如图。
雙線性插值,又稱為雙線性內插。在数学上,双线性插值是对线性插值在二维直角网格上的扩展,用于对双变量函数(例如 x 和 y)进行插值。其核心思想是在两个方向分别进行一次线性插值。
红色的数据点与待插值得到的绿色点
假如我们想得到未知函数 f 在点
的值,假设我们已知函数 f 在
,
,
, 及
四个点的值。
首先在 x 方向进行线性插值,得到
![{\displaystyle {\begin{aligned}f(x,y_{1})&\approx {\frac {x_{2}-x}{x_{2}-x_{1}}}f(Q_{11})+{\frac {x-x_{1}}{x_{2}-x_{1}}}f(Q_{21}),\\f(x,y_{2})&\approx {\frac {x_{2}-x}{x_{2}-x_{1}}}f(Q_{12})+{\frac {x-x_{1}}{x_{2}-x_{1}}}f(Q_{22}).\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/64d921f5a4c3c8de6e6ff7503f187e8186037e3c)
然后在 y 方向进行线性插值,得到
![{\displaystyle {\begin{aligned}f(x,y)&\approx {\frac {y_{2}-y}{y_{2}-y_{1}}}f(x,y_{1})+{\frac {y-y_{1}}{y_{2}-y_{1}}}f(x,y_{2})\\&={\frac {y_{2}-y}{y_{2}-y_{1}}}\left({\frac {x_{2}-x}{x_{2}-x_{1}}}f(Q_{11})+{\frac {x-x_{1}}{x_{2}-x_{1}}}f(Q_{21})\right)+{\frac {y-y_{1}}{y_{2}-y_{1}}}\left({\frac {x_{2}-x}{x_{2}-x_{1}}}f(Q_{12})+{\frac {x-x_{1}}{x_{2}-x_{1}}}f(Q_{22})\right)\\&={\frac {1}{(x_{2}-x_{1})(y_{2}-y_{1})}}{\big (}f(Q_{11})(x_{2}-x)(y_{2}-y)+f(Q_{21})(x-x_{1})(y_{2}-y)+f(Q_{12})(x_{2}-x)(y-y_{1})+f(Q_{22})(x-x_{1})(y-y_{1}){\big )}\\&={\frac {1}{(x_{2}-x_{1})(y_{2}-y_{1})}}{\begin{bmatrix}x_{2}-x&x-x_{1}\end{bmatrix}}{\begin{bmatrix}f(Q_{11})&f(Q_{12})\\f(Q_{21})&f(Q_{22})\end{bmatrix}}{\begin{bmatrix}y_{2}-y\\y-y_{1}\end{bmatrix}}.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e62d0c5e655663e9ddf4793005557c54b2e4f2d6)
注意此处如果先在 y 方向插值、再在 x 方向插值,其结果与按照上述顺序双线性插值的结果是一样的。
如果选择一个坐标系统使得 f 的四个已知点坐标分别为 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那么插值公式就可以化简为
![{\displaystyle f(x,y)\approx f(0,0)\,(1-x)(1-y)+f(1,0)\,x(1-y)+f(0,1)\,(1-x)y+f(1,1)xy.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d4fc1cee1726d12c6559ee8a6225c3a438e4b311)
或者用矩阵运算表示为
![{\displaystyle f(x,y)\approx {\begin{bmatrix}1-x&x\end{bmatrix}}{\begin{bmatrix}f(0,0)&f(0,1)\\f(1,0)&f(1,1)\end{bmatrix}}{\begin{bmatrix}1-y\\y\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c8d9e3401c3878d8bfba70c49a51c9c007e2647d)
顾名思义,双线性插值的结果不是线性的,它是两个线性函数的积。在单位正方形上,双线性插值可以记作
![{\displaystyle f(x,y)=\sum _{i=0}^{1}\sum _{j=0}^{1}a_{ij}x^{i}y^{j}=a_{00}+a_{10}x+a_{01}y+a_{11}xy}](https://wikimedia.org/api/rest_v1/media/math/render/svg/597c62c5bd68fe4a3ec8e59a7eb92dca3f18b44a)
常数的数目(四)对应于给定的 f 的数据点数目
![{\displaystyle a_{00}=f(0,0),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c1a96aa841b6a34a0c31370971cc95f84cc71060)
![{\displaystyle a_{10}=f(1,0)-f(0,0),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/11e35267eefc1606fc07be57f46157fa596b8821)
![{\displaystyle a_{01}=f(0,1)-f(0,0),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/fe8e7b88f03c48aa21b75b316276302b4e557a65)
![{\displaystyle a_{11}=f(1,1)+f(0,0)-{\big (}f(1,0)+f(0,1){\big )}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/acf3a2630f0c93179605326a7f0e5d7724f4ba4d)
双线性插值的结果与插值的顺序无关。首先进行 y 方向的插值,然后进行 x 方向的插值,所得到的结果是一样的。
双线性插值的一个显然的三维空间延伸是三线性插值。
对灰度值进行双线性插值
在计算机视觉及图像处理领域,双线性插值是一种基本的重采样技术。
材质贴图中,双线性插值也叫双线性过滤或者双线性材质贴图。图像的双线性插值放大算法中,目标图像中新创造的象素值,是由源图像位置在它附近的2*2区域4个邻近象素的值通过加权平均计算得出的。双线性内插值算法放大后的图像质量较高,不会出现像素值不连续的的情况。然而此算法具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。