基于插值的单图超分辨方法包括:Nearest(最近邻插值)、Bilinear(双线性插值)、Bicubic(双三线性插值)、Lanczos等。
本文实验基于Matlab,以下是Matlab中resize函数中对插值方法的说明:
% To control the interpolation method used by IMRESIZE, add a METHOD
% argument to any of the syntaxes above, like this:
%
% IMRESIZE(A, SCALE, METHOD)
% IMRESIZE(A, [NUMROWS NUMCOLS], METHOD)
%
% METHOD can be a string naming a general interpolation method:
%
% 'nearest' - nearest-neighbor interpolation
%
% 'bilinear' - bilinear interpolation
%
% 'bicubic' - cubic interpolation; the default method
%
% METHOD can also be a string naming an interpolation kernel:
%
% 'box' - interpolation with a box-shaped kernel
%
% 'triangle' - interpolation with a triangular kernel
% (equivalent to 'bilinear')
%
% 'cubic' - interpolation with a cubic kernel
% (equivalent to 'bicubic')
%
% 'lanczos2' - interpolation with a Lanczos-2 kernel
%
% 'lanczos3' - interpolation with a Lanczos-3 kernel
lena的原始图像为512×512,lena x4为1/4原图的低分辨图像,使用插值方法重构为与原始图像同样尺寸的超分图像,PSNR/SSIM均在RGB空间得到。
Nearest(最近邻插值):
维基百科: 最近邻插值算法选择距离所求数据点最近点的值,并且根本不考虑其他相邻点的值,从而产生一个分段常数的内插值来作为所求数据点的值。
最近邻插值方法直接使用位置最近的像素填充缺失像素,所以会出现小方块(锯齿)效应。
Bilinear(双线性插值):
维基百科:双线性插值,又称双线性内插。在数学上,双线性插值是对线性插值在二维直角网格上的扩展,用于对双变量函数(例如和)进行插值,其核心思想是在两个方向分别进行一次线性插值。方法:如下图所示,假设要得到未知函数在点的值,我们已知
函数在,,及四个点的值。首先在方向上进行线性插值,得到
然后在方向进行线性插值,得到
如果先在 方向插值,再在方向插值,其结果与按照上述顺序双线性插值的结果是一样的。
双线性插值没有最近邻的锯齿效应,像素基本都是连续的,但比较模糊。
Bicubic(双三线性插值方法):
维基百科:在数值分析这个数学分支中,双三次插值是二维空间中最常用的插值方法。在这种方法中,函数在点的值可以通过矩形网络中最近的16个采样点的加权平均得到,在这里需要使用两个多项式插值三次函数,每个方向使用一个。
要获得超分图像中位置的像素值,需要先按缩放因子找到在低分辨率图像中的位置。然后基于与位置最近邻的4×4矩阵中的16个像素进行位置的像素插值。插值函数:
计算插值像素:
也可表示为矩阵形式:
因为要以4×4的矩阵进行计算,考虑到图像边框上的像素点,使用边框像素为低分辨率图像外围填充像素(类似深度学习中的padding),共填充4行4列。所以与的关系为,其中为缩放因子,和也有同样的关系。由和得到和的值。
双三次插值方法计算量比较大,但效果相对较好。
参考:维基百科,https://blog.csdn.net/yycocl/article/details/102588362,https://blog.csdn.net/qq_34885184/article/details/79163991,https://blog.csdn.net/sinat_31987445/article/details/88870757?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase,https://blog.csdn.net/nandina179/article/details/85330552