图像超分辨——基于插值的方法(个人总结)

基于插值的单图超分辨方法包括: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空间得到。

 

lena (PSNR/SSIM)

 

lena x4

Nearest(最近邻插值):

维基百科: 最近邻插值算法选择距离所求数据点最近点的值,并且根本不考虑其他相邻点的值,从而产生一个分段常数的内插值来作为所求数据点的值。

nearest (27.811/0.785)

 最近邻插值方法直接使用位置最近的像素填充缺失像素,所以会出现小方块(锯齿)效应。

Bilinear(双线性插值): 

维基百科:双线性插值,又称双线性内插。在数学上,双线性插值是对线性插值在二维直角网格上的扩展,用于对双变量函数(例如xy)进行插值,其核心思想是在两个方向分别进行一次线性插值。方法:如下图所示,假设要得到未知函数f在点P=(x,y)的值,我们已知

红色表示原始数据点,绿色表示插值点

函数fQ_{11}=(x_1,y_1)Q_{12}=(x_1,y_2)Q_{21}=(x_2,y_1)Q_{22}=(x_2,y_2)四个点的值。首先在x方向上进行线性插值,得到 

 然后在y方向进行线性插值,得到

如果先在 y方向插值,再在x方向插值,其结果与按照上述顺序双线性插值的结果是一样的。

 

bilinear(29.299/0.825)

 双线性插值没有最近邻的锯齿效应,像素基本都是连续的,但比较模糊。

Bicubic(双三线性插值方法):

维基百科:在数值分析这个数学分支中,双三次插值是二维空间中最常用的插值方法。在这种方法中,函数f在点(x,y)的值可以通过矩形网络中最近的16个采样点的加权平均得到,在这里需要使用两个多项式插值三次函数,每个方向使用一个。

bicubic(30.237/0.842)

要获得超分图像中位置P(X,Y)的像素值,需要先按缩放因子找到P(X,Y)在低分辨率图像中的位置p(i,j)。然后基于与p位置最近邻的4×4矩阵中的16个像素进行P位置的像素插值。插值函数:

                                                  W(x)=\begin{cases} (a+2)\lvert x \lvert^3 - (a+3)\lvert x \lvert^2 + 1 & \lvert x \lvert\leq 1 \\ a\lvert x \lvert^3 - 5\lvert x \lvert^2 + 8a\lvert x \lvert-4a & 1<\lvert x \lvert< 2 \\ 0 & others \end{cases}

计算插值像素:

                                            P(X,Y)=\sum_{n=-1}^2\sum_{m=-1}^2p(n+j,m+i)\times W(u-m) \times W(v-n)

也可表示为矩阵形式:

A=\begin{bmatrix} W(u+1) & W(u) & W(u-1) & W(u-2) \end{bmatrix}

C=\begin{bmatrix} W(v+1) & W(v) & W(v-1) & W(v-2) \end{bmatrix}

B=\begin{bmatrix} p(j-1,i-1) & p(j-1,i) & p(j-1,i+1) & p(j-1,i+2)\\ p(j,i-1) & p(j,i) & p(j,i+1) & p(j,i+2)\\ p(j+1,i-1) & p(j+1,i) & p(j+1,i+1) & p(j+1,i+2)\\ p(j+2,i-1) & p(j+2,i) & p(j+2,i+1) & p(j+2,i+2) \end{bmatrix}

P(X,Y)=CBA^T

因为要以4×4的矩阵进行计算,考虑到图像边框上的像素点,使用边框像素为低分辨率图像外围填充像素(类似深度学习中的padding),共填充4行4列。所以Xi的关系为\lfloor X/factor \rfloor +2=i,其中factor为缩放因子,Yj也有同样的关系。由u=(X\%factor)/factorv=(Y\%factor)/factor得到uv的值。

双三次插值方法计算量比较大,但效果相对较好。

参考:维基百科,https://blog.csdn.net/yycocl/article/details/102588362https://blog.csdn.net/qq_34885184/article/details/79163991https://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.nonecasehttps://blog.csdn.net/nandina179/article/details/85330552

 

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
图像超分辨率插值算法是一种通过插值方式将低分辨图像增强到高分辨图像的技术。常见的插值方法包括线性插值、双三次插值和基于梯度的插值方法。其中,双三次插值是最流行的方法之一,它简单易行,计算速度快,在处理小尺寸图像时效果较好。然而,在处理高分辨图像时,双三次插值的效果可能不够理想。\[2\] 除了插值方法,还有一种基于卷积神经网络的超分辨率算法,称为SRCNN算法。SRCNN算法通过三个卷积层和一个反卷积层来实现图像超分辨率。该算法利用低分辨图像作为输入,经过神经网络训练后输出高分辨图像。SRCNN算法能够在速度和精度之间找到平衡点,可以快速且精确地实现图像超分辨率。\[3\] 综上所述,图像超分辨率插值算法包括传统的插值方法和基于卷积神经网络的算法,它们都能够提升图像的清晰度和细节。具体选择哪种算法取决于应用场景和需求。 #### 引用[.reference_title] - *1* *2* *3* [人工智能之超分辨率算法详解](https://blog.csdn.net/q6115759/article/details/130758781)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值