双线性插值又成为双线性内插,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。
如果我们想得到函数f(x, y)在点 P(x,y)处的值,并且我知道函数f(x,y) 在点 A(x1,y1),B(x2,y1),C(x1,y2),D(x2,y2)处的值分别为V1,V2,V3, V4。
图 一
我们现在X方向上插值:
得到函数f(x,y) 在R1(x,y1),R2(x,y2)处的值分别为:
VR1 = V1 * (x2 - x) / (x2-x1) + V2 * (x - x1) / (x2 - x1); (1)
VR2 = V3 * (x2 - x) / (x2-x1) + V4 * (x - x1) / (x2 - x1); (2)
然后再Y方向上插值:
得到函数f(x,y) 在P 点处的值:
f(x,y) = VR1 *(y2 - y)/(y2 - y1) + VR2*(y - y1) / (x2 - x1); (3)
将VR1 和VR2 带入 (3) 式:
得:
f(x,y) = V1*(x2- x)(y2 - y)/(x2 - x1)(y2 - y1) + V2*(x- x1)(y2 - y)/(x2 - x1)(y2 - y1) +
V3*(x2- x)(y - y1)/(x2 - x1)(y2 - y1) + V4*(x- x1)(y - y1)/(x2 - x1)(y2 - y1);
如果我们令已知的四点的坐标分别为A(0,0),B(1,0),C(0,1),D(1,1);
那么 f(x,y) 简化为:
f(x,y) = V1 * (1 - x)(1 - y) + V2 * x(1 - y) + V3 * (1- x)y + V4 * xy;
整理的到:
f(x,y) = V1 + (V2-V1) * x + (V3-V1) * y + (V4 + V1 - V2 - V3) * xy;
令: a0 = V1;
a1 = (V2 - V1);
a2 = (V3 - V1);
a3 = (V1 - V2 - V3 + V4);
则:
f(x,y) = a0 + a1x + a2y + a3xy;