双线性插值-推导和应用
先来个新人的愚蠢问题:(这些都是本人之前不理解的 - -!)
为什么要使用双线性插值,它有何应用?
输入时什么,输出是什么?
先回答第一个问题-----
插值多应用于上采样(图片放大)中对放大像素的插值方法。 比如下图:
在一幅2*2的图像中已知四点的像素值,那么如果我们要放大1/2变为右图所示,四个角的像素值不变,新增的5个像素该取什么值呢。所以这就是我们要处理的具体应用场景。
先来理解线性插值,理解了这个后双线性就可以类推了。
首先化为数学问题分析条件:
一幅图中, 已知:两个点(点具有坐标信息和点所取的值) ,求在两点直线上的一点的值(已知位置信息,值为未知数),
简而言之:已知两点的值求两点直线上一点的值。 已知 a0, a1, (x0,y0), (x1,y1), (x,y) ---求 b
数学好的人心中大概已经知道该怎么求b的值了 ~~
由于三角形相似 所以求b的值可用下面公式
然后将这个公式展开,化简就可以得到如下公式
看到这个大家就非常眼熟了,这就是很多博客或百度得出的结果公式,然后这就是这个公式的推理过程。
那知道了线性插值之后,那再讲双线性就非常easy的了 = =
首先,既然有了线性插值那我们为什么还需要双线性插值??
很简单,线性插值,插的值都是在两点连线上的点,而如果在二维平面上。我们要插入的点并不在连线上,这时候就引入双线性插值。
先来一张大家都很眼熟的图
然后接着分析; 已知四个点的值和对应四个点的位置,我们求p点的对应值。
思路:将求解过程拆两步,先用已知的两个点,加上p点的一个位置信息x坐标值,求对应r1和r2; 然后利用r1,r2作为已知两点加上p点的位置信息y坐标,求得最终p点的值。
步骤一 : 和线性插值一样的道理,q11和q21作为已知点,求q11和q21线上的r1点的值
直接利用线性插值的公式带入 即可求出r1的值
步骤二:利用q12和q22作为已知点,求q12和q22线上的r2点的值
步骤三:利用r1和r2作为已知点,求r1和r2线上的p点的值
ps:先进行x轴计算和先进行y轴计算最终得到的答案是一样的。
这样就完成一次双线性插值。那回到最初的应用场景。
这该如何插值呢?很简单-----由于像素与像素间距离都是1,所以只需求两个之间的平均即可。
那在这种场景中,双线性的优势并没有体现出来,下面列举另一个场景:
假如在一幅4*4的图片中,我们需要提取一个3*3的目标,该目标出现在如图里面的位置,那么3*3的9个像素点值都得通过周围4个已知点进行双线性插值求得。
注意并不是方块代表像素点,这里使用交点代表像素点。也就是在4*4图片中定位3*3位置的像素。
最后再回到开头提到的第二个问题。
我们双线性插值输入是四个点的值和四点内一点的位置。
输出是该位置点的值。