欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

双线性二次插值

最编程 2024-06-22 16:13:04
...

线性插值的概念简单粗暴,就是两个点A,B,要在AB中间插入一个点C(点C坐标在AB连线上),就直接让C的值落在AB的值的连线上就可以了。如A点坐标(0,0),值为3,B点坐标(0,2),值为5,那要对坐标为(0,1)的点C进行插值,就让C落在AB线上,值为4就可以了。 但是如果C不在AB的线上肿么办捏,所以就有了双线性插值。双线性插值,顾名思义就是两个方向的线性插值加起来(这解释同样简单粗暴)。所以只要了解什么是线性插值,分别在x轴和y轴都做一遍,就是双线性插值了。 如图,已知P12,P22,P11,P21,但是要插值的点为P点,这就要用双线性插值了,首先在x轴方向上,对R1和R2两个点进行插值,这个很简单,然后根据R1和R2对P点进行线性插值,这就是所谓的双线性插值。

根据水平方向上的双线性二次插值,由f(i,j)和f(i+1,j)求取f(x,j),由 f(i,j+1)和f(i+1,j+1)求f(x,j+1),然后再根据这两点的二次插值求f(x,y)。

根据拉格朗日插值,我们可以很容易的求取各点插值如下: f(x,j)=(i+1-x)f(i,j)+(x-i)f(i+1,j) f(x,j+1)=(i+1-x)f(i,j+1)+(x-i)f(i+1,j+1) f(x,y)=(i+1-y)f(x,j)+(y-j)f(x,j+1) 以上三式综合可以得到: f(x,y)=(j+1-y)(i+1-x)f(i,j)+(j+1-y)(x-i)f(i+1,j)+(y-j)(i+1-x)f(i,j+1)+(y-j)(x-i)f(i+1,j+1) 令x=i+p,y=j+q得: f(i+p,j+q)=(1-q)(1-p)f(i,j)+p(1-q)f(i+1,j)+q(1-p)f(i,j+1)+

pqf(i+1,j+1)

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