双线性插值及其在图像中的应用

    本文旨在翻译维基百科中关于Bilinear interpolation的解释。

    数学中,双线性插值是直线二维网格中关于两个变量(如x, y)的线性插值函数的扩展。

    实现该方法的关键在于先从一个方向进行线性插值,然后对另一个方向执行相同操作。尽管上述两步操作在位置和样本点的值上都是线性的,但双线性插值在整个样本位置中不是线性的而是二次的

算法

    

    假设已知函数f在四个点Q11=(x1,y1), Q12=(x1,y2), Q21=(x1,y1), Q22=(x2,y2)的函数值,想由此找到函数f在(x,y)点的函数值。首先,对X方向进行线性插值,可以获得如下公式


    然后再Y方向执行插值操作,以便获得函数f在(x,y)点期望的输出。


    注意:插值的最终结果与执行线性插值的顺序无关,即先在Y方向插值,后在X方向进行插值将会得到相同的结果。

替代算法

    插值问题的另一种解决方法是


    公式中的系数可通过如下线性方程获得。


    类似的,也可通过f(Q)来获得插值结果。


    公式中的系数可通过如下线性方程获得。


单位正方形

    如果选择一个坐标系,函数f的已知的四个点为(0,0), (0,1), (1,0), (1,1),则插值公式可简化为如下形式。


    可用下图直观的表示其运算过程:中心点的函数值等于周围四个顶点的值与其对应面积的乘积和,并除以该矩形的面积。


    上述插值公式也等价于如下矩阵运算


非线性

    双线性插值不是线性的,而是两个线性函数的乘积。

    另外,在单位正方形中的插值也可以写成如下形式。


    其中,

    

    

        

    

    在单位正方形和非线性这两种情况中,四个常数项的值对应函数f已知的数据点的值。沿着平行于x或y方向的任意一条直线的插值是线性的,这等价于x或y的其中一个被设置为常数项。沿着其他的直线进行插值则是二次的。然而,尽管双线性插值就位置而言非线性的,但对于插值后的大小却是线性的,因为从公式中可以明显看出,所有相关系数的值与函数f的值是成比例的。

    双线性插值的结果独立于坐标轴插值的顺序,即先从Y方向插值,后从X方向插值得到的结果是一样的。

    双线性插值的一个扩展是可以应用于三线性插值。

双线性插值在图像处理中的应用

    在计算机视觉和图像处理中,双线性插值是重采样的技术之一。

    在纹理映射中,双线性插值也称为双线性滤波或双线性纹理映射,用于生成更加逼真的图片。算法将屏幕像素点的位置映射到纹理图中对应的点,并计算该映射点的四个邻近纹元属性(颜色,透明度等)的加权平均值作为该屏幕像素的属性值。对所有像素执行上述过程即可完成物体的纹理化。

    当需要放大图像时,原图上的每个像素需要根据比例系数以特定的方向移动。当以非整数比例系数放大时,会存在一些像素位置没有适当的像素值,从而形成孔。此时,这些孔需要分配适当的RGB或灰度值,以便输出图像中不包含无像素值的像素。

    双线性插值可用于不可能通过像素匹配来获得图像间完美转换的情况,该方法可为像素分配适当的亮度值。不同于最近邻插值双三次插值,双线性插值仅使用其对角方向的四个最近像素的值来获得当前像素的颜色值。

    双线性插值利用未知像素周围的四个最近邻的已知像素,通过计算这四个像素值的加权平均值获得未知像素的值。


    可通过上图直观的反映出插值像素的计算过程。未知像素位于(行,列)=(20.2,14,.5),其亮度值的计算过程是,首先沿着列的方向进行插值,获得(20, 14.5)和(21, 14.5)两个位置的值;


    然后在(20, 14.5)和(21, 14.5)两个位置间进行线性插值,获得最终位置(20.2, 14.5)的像素值。


    双线性插值算法减少了非整数比例因子放大的图片产生的视觉失真,相反的,最近邻插值后的放大图片中,会存在一些像素值明显大于其他像素值的情况。


参考文献:

  1. https://en.wikipedia.org/wiki/Bilinear_interpolation
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值