双线性内插方法
双线性内插方法公式为:
公式中的参数如下图所示,(x,y)以Z1点作为原点。
可以看出,(x,y)点取Z1,Z2,Z3,Z4值的权重,与它们的曼哈顿距离成反比,则可程序表示为:
void Bilinear_interpolation::Calculate(float *Z1, float * Z2, float *Z3, float * Z4, float * UnknowPoint)
{
float ValueZ3 = Z3[2] * (1-abs(Z3[0] - UnknowPoint[0]))* (1-abs(Z3[1] - UnknowPoint[1]) );
float ValueZ4 = Z4[2] * (1-abs(Z4[0] - UnknowPoint[0]))* (1-abs(Z4[1] - UnknowPoint[1]));
float ValueZ1= Z1[2] * (1-abs(Z1[0] - UnknowPoint[0]))* (1-abs(Z1[1] - UnknowPoint[1]));
float ValueZ2 = Z2[2] * (1-abs(Z2[0] - UnknowPoint[0]))* (1-abs(Z2[1] - UnknowPoint[1]));
UnknowPoint[2] = ValueLU + ValueRU + ValueLD + ValueRD;
}