图像插值

    图像插值是图像处理领域比较热门的话题。其目的在于利用已知邻近像素点的灰度值。预估未知像素点的灰度值。从而把一副低分辨率的图像变成相应高分辨率版本以改善图像的视觉效果。

图像插值算法分类

    其中,图像插值算法主要分为两类:

  1. 线性图像插值方法
      常见的有最近邻插值双线性插值以及双三次插值等等。
  2. 非线性图像插值方法
     
     
     

插值resize图像扩大 图像插值的作用_插值resize图像扩大


 

 

 

线性图像插值方法

 

最近邻插值法

    最近邻插值算法,又称零阶插值。它是一种比较容易实现,且算法复杂度较低的插值算法。其原是取代插值点周围四个相邻像素点中欧式距离最短的一个邻点的灰度值作为该点的灰度值。此算法由于仅用对插值点影响最大的(即最近的)像素的灰度值作为该点的值。

 

 

图像实现:

当我们插入一个为点插值resize图像扩大 图像插值的作用_计算机视觉_02,矩阵插值resize图像扩大 图像插值的作用_人工智能_03可等分切为四块

显而易见,其中点插值resize图像扩大 图像插值的作用_计算机视觉_02插值resize图像扩大 图像插值的作用_计算机视觉_05点的欧式距离最短,此时插值resize图像扩大 图像插值的作用_计算机视觉_02点的图像灰度值等于插值resize图像扩大 图像插值的作用_计算机视觉_05点的灰度值

插值resize图像扩大 图像插值的作用_算法_08


 

 

 

 

如下图所示,将一幅插值resize图像扩大 图像插值的作用_计算机视觉_09的图像放大到插值resize图像扩大 图像插值的作用_深度学习_10,用插值resize图像扩大 图像插值的作用_插值resize图像扩大_11表示目标图像,插值resize图像扩大 图像插值的作用_计算机视觉_12表示原图像,我们有如下公式:

插值resize图像扩大 图像插值的作用_算法_13

插值resize图像扩大 图像插值的作用_深度学习_14插值resize图像扩大 图像插值的作用_深度学习_15插值resize图像扩大 图像插值的作用_计算机视觉_16插值resize图像扩大 图像插值的作用_计算机视觉_17以此类推计算得插值resize图像扩大 图像插值的作用_深度学习_10的图像

插值resize图像扩大 图像插值的作用_人工智能_19

最近邻插值缺点

    此算法由于仅用考虑最近的像素插值,没有考虑其他相邻像素的影响,因此插值后得到的图像。容易产生块效应,造成图像模糊,放大效果一般不够理想。

    
    

双线性插值算法

    为了改善最近邻插值算法的不足,提出了一种新的插值方法。即双线性插值算法。双线性插值又称一阶插值。其插值原理是。待插点像素值取原图像中与其相邻的四个像素值的水平、垂直两个方向上的线性内插。即根据待采样点与周围四个邻点的距离。确定相应的权重,从而计算出待采样点的像素值。会产生许多新的像素值,它们主要有插值点周围像素的灰度值通过插值运算获得。

    在深度学习模型的upsample上采样模块中,常用的就是BiLinear双线性插值
    

线性插值

    先了解一下基础的线性插值

插值resize图像扩大 图像插值的作用_插值resize图像扩大_20


已知点插值resize图像扩大 图像插值的作用_插值resize图像扩大_21求取插值点插值resize图像扩大 图像插值的作用_计算机视觉_22处的插值resize图像扩大 图像插值的作用_深度学习_23,推导如下:插值resize图像扩大 图像插值的作用_计算机视觉_24

由于插值resize图像扩大 图像插值的作用_计算机视觉_22值已知,可得:插值resize图像扩大 图像插值的作用_人工智能_26

假如已知插值resize图像扩大 图像插值的作用_深度学习_23插值resize图像扩大 图像插值的作用_计算机视觉_22也是以上相同的推导过程。

    

双线性插值

插值resize图像扩大 图像插值的作用_计算机视觉_29


已知插值resize图像扩大 图像插值的作用_算法_30四个点的值,求插值resize图像扩大 图像插值的作用_计算机视觉_02点值。

    

双线性插值求解过程:

        首先在插值resize图像扩大 图像插值的作用_人工智能_32方向上进行两次线性插值,得到插值resize图像扩大 图像插值的作用_计算机视觉_33;然后在插值resize图像扩大 图像插值的作用_算法_34方向再做一次线性插值,得到插值resize图像扩大 图像插值的作用_计算机视觉_02点。这就是双线性插值。

插值resize图像扩大 图像插值的作用_人工智能_36,且插值resize图像扩大 图像插值的作用_人工智能_32都在该函数上,此时我们求解插值resize图像扩大 图像插值的作用_计算机视觉_02插值resize图像扩大 图像插值的作用_人工智能_36的值呢?

如上述的双线性插值求解:插值resize图像扩大 图像插值的作用_人工智能_40插值resize图像扩大 图像插值的作用_算法_41插值resize图像扩大 图像插值的作用_深度学习_42
最后即插值resize图像扩大 图像插值的作用_人工智能_36插值resize图像扩大 图像插值的作用_算法_44

双线性插值缺点

    经过此算法处理后的图像会产生许多新像素值。他们主要由插值点周围像素的灰度值通过插值运算获得。由于此算法没有考虑相邻点的灰度值变化率的影响。因此具有低通滤波器性质。会使放大后图像的重要细节受到损失。图像变得模糊不清。

 
 
 

向前映射与向后映射

我们知道,通常情况下,一个整数位置插值resize图像扩大 图像插值的作用_插值resize图像扩大_45经过图像变换后,往往都位于非整数位置。此时就要采用插值技术。此时对于向前映射和向后映射,需要采取不同的策略。

向前映射

可以将几何运算想象成一次一个象素地转移到输出图象中。如果一个输入象素被映射到四个输出象素之间的位置,则其灰度值就按插值算法在4个输出象素之间进行分配,这些分配而来的像素值叠加,就是输出图像整数点位置的像素值称为向前映射法,或象素移交影射。

插值resize图像扩大 图像插值的作用_插值resize图像扩大_46


向前映射中每个输出像素灰度值需要经过多次运算

向后映射

向后映射法(或象素填充算法)是输出象素一次一个地映射回到输入象素中,以便确定其灰度级。如果一个输出象素被映射到4个输入象素之间,则其灰度值插值决定,然后再遍历输出图像,经过坐标变换、插值两步操作,我们就能将其像素值一个个地计算出来,向后空间变换是向前变换的逆
注:从结果图象的坐标计算原图象的坐标

插值resize图像扩大 图像插值的作用_插值resize图像扩大_47


向后映射中每个输出像素灰度值只需要经过一次运算