学习日志(十一):计算机视觉之超分辨率的放大操作理论

在图像的超分辨率任务中,对图像的上采样放大操作是必不可少的一步,而实现由低分辨率到超分辨率的过程就是上采样(upsample),常用的上采样方法有插值,反卷积、反池化、亚像素卷积。我为什么要整理?其实之前也看过几种方法的比较,但是,由于我只有7秒的记忆,刚老师一问我,我tm全忘了,什么区别?本质联系?对不起,我没学过。。。

1.线性插值

  这应该是最简单的插值方法,没有之一,读了这么久的论文都没见到过,可能是因为数据维度的关系吧,不管了直接上货。
在这里插入图片描述
看完这张图叫一个初中生过来都能算出来(x,y),给定俩点(x0,y0),(x1,y1)和x的坐标求y这个适合一维数据。

1.双线性插值

  网上有很多的关于双线性插值的博文,但都是相同的图相同的公式没有细节的文字说明,我看了很多都不太明白,下面我会通过一个例子和尽可能直白的话讲解。

背景:

  什么情况会用到双线性插值?假设源图像大小为mn,目标图像为ab。那么两幅图像的边长比分别为:m/a和n/b。注意,通常这个比例不是整数,编程存储的时候要用浮点型。目标图像的第(i,j)个像素点(i行j列)可以通过边长比对应回源图像。其对应坐标为(i*(m/a),j*(n/b))。显然,这个对应坐标一般来说不是整数,而非整数的坐标是无法在图像这种离散数据上使用的。双线性插值通过寻找距离这个对应坐标最近的四个像素点,来计算该点的值(灰度值或者RGB值)。

定义:

  双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。

原理:

  怎么理解双线性插值是在俩个方向分别进行一次插值?我们提前了解了什么是线性插值知道它是对一维数据进行处理,那么如果是二维坐标的数据它有x,y俩个方向要怎么办?
  如下图所示,现假设二维坐标平面的P点为要求的目标像素点,四个点Q11,Q12,Q21,Q22是已知的,要想求得P点的像素值我们无论如何使无法通过类似线性差值那样一次求解得到。但它还是规整的横竖方向,我们可以将线性插值扩展增加线性插值的次数,先对Q11,Q12,Q21,Q22四个点进行x方向插值求得R1,R2,接着再对R1,R2进行y方向插值来求解P点。像这样先对x方向插值再对y方向插值就是双线性插值所说的在俩个方向分别进行一次插值(当然先进行y方向再求解x方向也是一样的)。
图一

算法流程:

  1. 根据实际resize要求算出缩放比再脑补建立一个坐标
  2. 进行x方向插值求解R1,R2,公式如下:
    在这里插入图片描述
    在这里插入图片描述
  3. 根据R1,R2再进行y方向的插值求解,公式如下:
    在这里插入图片描述

补充:

其中,在这里插入图片描述
都是权重,这个很好理解了,因为双线性插值求解的P点的值是根据周围的像素点Q11,Q12,Q21,Q22进行求解的,而它距离四个点的距离不一样,因此每个点对它的影响也就是权重也是不一样的,这里需要注意的一点就是这个权重值和它距离相邻像素点的值是相反的,就比如x1=1,x2=3,x=1.3,抛去分母不谈,R1距离Q11近,二者的距离应该是x-x1=0.3,注意这里是距离还不是公式中的权重值,真正的权重应该是x2-x=0.7.这是为什么?可以想想俩个人玩跷跷板或者理解成反比(其实不是反比),实在想不到更好的例子了,就这样吧。

3.双三次插值

背景:

  假设源图像A大小为mn,缩放K倍后的目标图像B的大小为MN,即K=M/m。A的每一个像素点是已知的,B是未知的,我们想要求出目标图像B中每一像素点(X,Y)的值,必须先找出像素(X,Y)在源图像A中对应的像素(x,y),再根据源图像A距离像素(x,y)最近的16个像素点作为计算目标图像B(X,Y)处像素值的参数,利用BiCubic基函数求出16个像素点的权重,图B像素(x,y)的值就等于16个像素点的加权叠加。

定义:

  双三次插值是一种更加复杂的插值方式,它能创造出比双线性插值更平滑的图像边缘。双三次插值方法通常运用在一部分图像处理软件、打印机驱动程序和数码相机中,对原图像或原图像的某些区域进行放大。

原理:

在这里插入图片描述
根据比例关系x/X=m/M=1/K,我们可以得到B(X,Y)在A上的对应坐标为A(x,y)=A(X*(m/M),Y*(n/N))=A(X/K,Y/K)。如图所示P点就是目标图像B在(X,Y)处对应于源图像A中的位置,P的坐标位置会出现小数部分,所以我们假设 P的坐标为P(x+u,y+v),其中x,y分别表示整数部分,u,v分别表示小数部分(蓝点到a11方格中红点的距离)。那么我们就可以得到如图所示的最近16个像素的位置,在这里用a(i,j)(i,j=0,1,2,3)来表示,如图所示。
在这里插入图片描述
我们要做的就是求出BiCubic函数中的参数x,从而获得上面所说的16个像素所对应的权重W(x)。BiCubic基函数是一维的,而像素是二维的,所以我们将像素点的行与列分开计算。BiCubic函数中的参数x表示该像素点到P点的距离,例如a00距离P(x+u,y+v)的距离为(1+u,1+v),因此a00的横坐标权重i_0=W(1+u),纵坐标权重j_0=W(1+v),a00对B(X,Y)的贡献值为:(a00像素值)* i_0* j_0。因此,a0X的横坐标权重分别为W(1+u),W(u),W(1-u),W(2-u);ay0的纵坐标权重分别为W(1+v),W(v),W(1-v),W(2-v);B(X,Y)像素值为:
在这里插入图片描述

4.反卷积

关于反卷积我直接给出一个链接,原文写的实在是无可挑剔,我难以超越-_-
谈谈关于转置卷积的理解

5.PixelShuffle

  shuffle:名词译为改组,动词译为拖拽。作为我见到最多的一种上采样方法,译为亚像素卷积。还有这么写的Sub-pixel Convolution,问题不大,反正是亚像素卷积,多的不说少的不唠。
定义: 将低分辨的特征图,通过卷积和多通道间的重组得到高分辨率的特征图
在这里插入图片描述
这张图就很直观的解释了亚像素卷积的整个过程。

猜你喜欢

转载自blog.csdn.net/weixin_44825185/article/details/106886852