在涉及到坐标的程序中,(不局限于图像处理)经常会遇到计算出来的坐标不是整数的时候,那么那个小数的坐标左上左下右上右下最多有四个点,究竟取哪个点的值呢,亦或者自己计算一个相对公平的值,这里提供了一种叫做双线性差值的方法。
双线性差值无非就是用两次线性差值而已,线性差值很好理解,就是等比平均。比方说一条线段中间一点的值就是左右两个端点的平均值。如果是靠近左右二八开那么就用二八加权平均,离的近的权值大。双线性差值也是用的图样的原理,只不过上升到二维平面了,如图所示:
图中黑点就是计算出来的位置,它位于四个绿点的中间,这种情况我们先算出某一纬度的两个端点,然后再用那两个端点进行差值。如图我们先计算出了两个橙色的端点的值,用的方法也是线性差值,就是距离各自上下两个绿点的距离加权平均。然后根据橙色点的值再进行差值,求出黑色点的值。
注:这里的值不是坐标值,而是那个点对应的内容的值,例如灰度图代表的是某个点的灰度值。
代码如下: