1、 小议“双线性插值”摄影测量课上老师说“双线性插值”之所以叫做“双线性” ,是因为在插值的时候在x、y 两个方向上权是线性的,这应该是从地理要素的相关性方面来说的吧,不过我们也可以从纯数学的角度来看这个问题,并且在更一般的情况下,数学上的描述更易理解。先来看看在二维平面的线性插值,这也是我们最熟悉的线性插值:已知平面曲线上两个点(x1,f ( x1) ) 、 (x2 ,f(x2) )(x1x2),现在有一 x 落在区间x1,x2上,欲求 x 所对应的函数值 f(x) ,由于只知道两个点,存在不能求出曲线方程的情况,于是当 x2-x1 为一个很小的值(即 x1 与 x2 相距很近)的情况下,我们
2、可以认为曲线在这一个区间上是一段线段(有点像求曲率一样,呵呵) ,于是(x,f(x) )就是这条线段上的一点,于是想要求f(x )可以如下计算:f(x)=(x-x1)/(x2-x1)*f(x2)-f(x1)+f(x1) 1式即所谓的线性插值的计算式(教材上的计算公式可能不是这样,但是结果是完全一样 1的) ,(x-x1)/(x2-x1)实际上表示的是当自变量从 x1 增加到 x 时,因变量从 f(x1)增加到f(x)时,增量在 f(x2 )-f (x1)这一差值上所占的比例,可以设为 ,线性函数情况下十分容易证明。当 x1、x2 恰好相差一个单位长度时,令 x-x1 为 x(x0,1) ,则=
3、x, 式可以变为 1f(x)= x*f(x2)-f(x1)+f(x1) 2整理得:f(x)=(1-x)*f(x1)+x*f(x2) 3当用 替换 x 时,就可以用来讨论函数的凸性了。式已经初具双线性插值的“形态” ,下面来考虑在三维空间的线性插值,已知曲面上的四 3个点(x1,y1,f(x1 ,y1) ) 、 (x2,y2,f(x2,y2 ) )(x1x2), (x3 ,y3,f (x3 ,y3 ) ) 、(x4,y4,f(x4 ,y4) )(x3x4),:现有一点(x,y,0 )落在(x1,y1,0) 、 (x2 ,y2 ,0 ) 、(x3,y3,0) 、 (x4,y4,0)四个点组成的四边
4、形内,如下图所示图 1和平面内一样,存在已知的四个点不能求出曲面方程的情况,于是假设四个点在一个很小的区域内,将这一区域看成一个平面,于是 f(x,y)的计算过程如下:图 2如图 2,这是图 1 中从 Z 轴正上方对曲面进行平行投影得到的,两条虚线是两个平行于 Z轴,分别垂直于 X 轴、Y 轴的两个平面与平面 XOY 的交线,两条虚线的交点就是(x,y, 0) ,则过(x,y ,0)的一条垂直于曲面的交点就是(x,y,f(x,y) ) ,又由于区域 1234 对应的曲面此时看做平面,故两个平行于 Z 轴的平面与此曲面的交线是两条线段,将组成区域 1234 的四条边在 Z 方向上“延伸” ,则得
5、到的四个平面与区域 1234 对应的曲面的交线也是线段,于是想要求得 f(x,y) ,只需现在 X 轴方向以 3、4 点和 1、2 点线性内插出 M、N 点对应的 f(M) 、f(N) ,然后用(M,f(M) ) 、 (N,f(N)两个点在 Y 轴方向再做一次线性内插,就可以求得 f(x,y) ,但是由于在内插过程中还要计算(也可以使用线性内插计算)出 M、N 的 y 坐标值,很繁琐,不再描述。和二维平面一样,假设1、 2、3、4 四个点排列十分规整,当从 Z 轴正上方对其进行平行投影是,在平面 XOY 上,四个投影点的位置如下图所示,且设 X、Y 方向都只相距一个单位长度,图 3即四个点的坐
6、标为 1(x1,y1,f(x1,y1) ) 、2 (x2,y1,f(x2,y1) ) 、3( x1,y2 ,f (x1 ,y2 ) ) 、4( x2,y2,f(x2,y2) )(x1x2,y1y2) ,再令 x-x1=x,y-y1=y ,x,y0,1) ,那么按照前述的内插方法计算 f(x,y)的计算式为f(x,y)= (1-x )* f(x1,y1 )+x* f(x2,y1)*(1-y )+ ( 1-x)* f(x1,y2)+ x* f(x2,y2 )* y整理得:f(x,y)=(1- x )*(1- y )* f(x1,y1 )+ x*(1-y )* f(x2,y1)+(1-x)* y *
7、 f(x1 ,y2 )+x* y * f(x2 ,y2)可见此式与课本上完全相同,然后再写成矩阵形式,那么上面计算过程就是一个卷积过程了,然而实际上,卷积的计算变为上式速度更快。当线性内插问题提升到四维空间的时候,我们就需要知道 8 个点才能进行先行内插了,此时是将一个“超曲面”的一小部分看做了一个超平面,同样在每一个维度上仍然是线性关系,想象一个顶点排列十分规则(如前所述)的单位立方体,已知八个顶点在四维空间的坐标,需要内插出(x,y , z)对应的函数值 f(x,y , z) ,那么我们可以先在立方体的上下两个面内,利用每个面的四个顶点各自内插出一个点,最后再在 Z 轴方向上做一次内插即可
8、,如果已知的八个点的前三维坐标构成的不是上述的立方体,而是一个一般的六面体,那么计算就会非常麻烦,前面在三维空间里就可以略见一斑了。到了 N 为空间时,就需要已知 2(N-1)个点才能进行线性内插,如果我们按照内插的顺序对每一维度编号为1,2,3,,N-1,那么每一个维度上内插需要两个点,而这一个维度上的一个点来自于其前一维度上内插时产生的两个点(第一维度除外,在第一维度内插时使用的就是已知点,并且每个点都会用到) 。其实,考虑在 N 维空间里的一个平面的表达式为:f(x1 , x2,x3 ,xn-1 )=a0+a1*x1+a2*x2+a3*x3+an-1*xn-1则:f(x1+x1,x2+
9、x2 ,x3+x3,xn-1+xn-1)=a0+a1*x1+a2*x2+a3*x3+an-1*xn-1+a1*x1 +a2*x2 +a3*x3 +an-1*xn-1可见,求出在每一维度上的线性增量后,再与 f(x1,x2,x3 ,xn-1 )相加就可以求出f(x1+ x1,x2+x2 ,x3+x3,xn-1+xn-1) ,而每一维度上的增量正好是 中除掉 1最后一项的部分,在实际计算中并不需要确定在某一维度上相应的坐标值之间的大小关系,以上限制只是为了表述方便。总之,所谓的双线性内插灰度值重采样不过上三维空间里的线性内插罢了,只需把单位长度设为一个像素,而曲面的函数表达式就是灰度函数 g(x,y ) 。但是我并没有找到线性内插与地物在空间上的相关性之间的联系,既然他们具有如此想通之处也应该有着一定的联系,只是我没有发现,一旦发现了,那么我们就可以把它们归而为一,学习起来会更加方便一点,并且用数学的眼光看世界,也是一件十分令人兴奋的事情。