一、获取代码方式

获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

获取代码方式2:
完整代码已上传我的资源:【图像重建】基于matlab迭代步长自适应图像超分辨重建【含Matlab源码 048期】

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、迭代步长自适应简介

传统的超分辨重建算法往往采用梯度下降法进行求解,迭代时步长往往通过经验确定。而且不同的图像的最优步长往往不相同。步长过大会导致发散,步长过小会导致收敛缓慢。本算法基于对正则化超分辨重建算法实现的基础上,对步长的选取进行了优化,推导出了每次迭代时的最优步长大小,并将其自适应化,改进了超分辨算法的收敛性,从而能够在更短的时间内取得更加精确的重建结果。相关具体内容请参考对应的论文:Yingqian Wang, Jungang Yang, Chao Xiao, and Wei An, “Fast convergence strategy for multi-image superresolution via adaptive line search,” IEEE Access, vol. 6, no. 1, pp. 9129-9139.

三、部分源代码


clear all
clcfilename = 'Set';
files = dir(fullfile( filename,'*.bmp'));
file_num = 2;       % different number corresponds to defferent test images in 'Set'
reg_term = 1;       %regularization term: 1-BTV, 2-TikhonovImage =imread([filename,'\',files(file_num).name]);
SZ = size(size(Image));if (SZ(2)==2)       % turn grayscale image to RGB imagefor qw = 1:3IMAGE (:,:,qw) = Image;end
elseIMAGE = Image;
end%% Image Degradation
D = [1,1;-2,1;-1,-3;3,-2];                    % Shearing shift
Gau = fspecial( 'gaussian', [3 3], 1);   % Gaussian bluring kernel
spf = 2;                                              % sampling factor
sigma2 = 1;                                       % variation of noise
LR = ImDegrate(IMAGE,D,Gau,spf,sigma2); % image degradation function%% Turn RGB to YCbCr, and only SR the Y component
[~, ~, ~, M] = size(LR);
for w = 1:MLR(:,:,:,w) = rgb2ycbcr(uint8( squeeze(LR(:,:,:,w))));
endmaxiter = 10;  % maximum number of iterationy1(:,:,:) =  LR(:,:,1,:);
y2(:,:,:) =  LR(:,:,2,:);
y3(:,:,:) =  LR(:,:,3,:);HRitp1 =  imresize(y1(:,:,1), spf, 'bicubic');  % bicubic interpolation
HRitp1 = ImWarp(HRitp1, -D(1,1), -D(1,2));  % shift recoveringI1 = Wang_SR(HRitp1, y1, D, Gau, spf, maxiter, reg_term);   %Our proposed SR methodHRitp2 =  imresize(y2(:,:,1), spf, 'bicubic');
HRitp2 = ImWarp(HRitp2, -D(1,1), -D(1,2));
I2 = HRitp2;HRitp3 =  imresize(y3(:,:,1), spf, 'bicubic');
HRitp3 = ImWarp(HRitp3, -D(1,1), -D(1,2));
I3 = HRitp3;ImZ(:, :, 1) =  I1;
ImZ(:, :, 2) =  I2;
ImZ(:, :, 3) =  I3;ImZ = ycbcr2rgb(uint8( ImZ)); % Turn YCbCr to RGBfigure; imshow( uint8( ImZ ) ); title('Wang et al.');
figure; imshow( uint8( IMAGE ) ); title('groundtruth');%%  EvaluationIf = double(ImZ);   %output image
Is = double(IMAGE); %reference image
[row,col,~]=size(If); %RMSE
rmse=0;
for color = 1:3Ifc = If(:,:,color);  Isc = Is(:,:,color);SSE=sum(sum((Ifc-Isc).^2));rmsec=sqrt(SSE/(row*col));rmse = rmse+rmsec/3;
end
rmse%PSNR
psnr=0;
for color = 1:3Ifc = If(:,:,color);  Isc = Is(:,:,color);maxIs = max(max(Isc));minIs = min(min(Isc));PSNRc = 10*log10((row*col*(maxIs-minIs)^2)/sum(sum((Ifc-Isc).^2)));psnr = psnr+PSNRc/3;
end
psnr%SSIM
ssim=0;
for color = 1:3Ifc = uint8(If(:,:,color));  Isc = uint8(Is(:,:,color));ssimc = cal_ssim(Ifc, Isc, 0, 0);ssim = ssim + ssimc/3;
end
ssim
function ssim = cal_ssim( im1, im2, b_row, b_col)[h, w, ch] = size( im1 );
ssim = 0;
if (ch == 1)ssim = ssim_index ( im1(b_row+1:h-b_row, b_col+1:w-b_col), im2(b_row+1:h-b_row,b_col+1:w-b_col));
elsefor i = 1:chssim = ssim + ssim_index ( im1(b_row+1:h-b_row, b_col+1:w-b_col, i), im2(b_row+1:h-b_row,b_col+1:w-b_col, i));endssim = ssim/3;
end
returnfunction [mssim, ssim_map] = ssim_index(img1, img2, K, window, L)if (nargin < 2 || nargin > 5)mssim = -Inf;ssim_map = -Inf;return;
endif (size(img1) ~= size(img2))mssim = -Inf;ssim_map = -Inf;return;
end[M N] = size(img1);if (nargin == 2)if ((M < 11) || (N < 11))mssim = -Inf;ssim_map = -Inf;returnendwindow = fspecial('gaussian', 11, 1.5);  %K(1) = 0.01;                  % default settingsK(2) = 0.03;                 %L = 255;                                     %
endif (nargin == 3)if ((M < 11) || (N < 11))mssim = -Inf;ssim_map = -Inf;returnendwindow = fspecial('gaussian', 11, 1.5);L = 255;if (length(K) == 2)if (K(1) < 0 || K(2) < 0)mssim = -Inf;ssim_map = -Inf;return;endelsemssim = -Inf;ssim_map = -Inf;return;end
endif (nargin == 4)[H W] = size(window);if ((H*W) < 4 || (H > M) || (W > N))mssim = -Inf;ssim_map = -Inf;returnendL = 255;if (length(K) == 2)if (K(1) < 0 || K(2) < 0)mssim = -Inf;ssim_map = -Inf;return;endelsemssim = -Inf;ssim_map = -Inf;return;end
endif (nargin == 5)[H W] = size(window);if ((H*W) < 4 || (H > M) || (W > N))mssim = -Inf;ssim_map = -Inf;returnendif (length(K) == 2)if (K(1) < 0 || K(2) < 0)mssim = -Inf;ssim_map = -Inf;return;endelsemssim = -Inf;ssim_map = -Inf;return;end
endimg1 = double(img1);
img2 = double(img2);% automatic downsampling
f = max(1,round(min(M,N)/256));
%downsampling by f
%use a simple low-pass filter
if(f>1)lpf = ones(f,f);lpf = lpf/sum(lpf(:));img1 = imfilter(img1,lpf,'symmetric','same');img2 = imfilter(img2,lpf,'symmetric','same');img1 = img1(1:f:end,1:f:end);img2 = img2(1:f:end,1:f:end);
endC1 = (K(1)*L)^2;
C2 = (K(2)*L)^2;
window = window/sum(sum(window));mu1   = filter2(window, img1, 'valid');
mu2   = filter2(window, img2, 'valid');
mu1_sq = mu1.*mu1;
mu2_sq = mu2.*mu2;
mu1_mu2 = mu1.*mu2;
sigma1_sq = filter2(window, img1.*img1, 'valid') - mu1_sq;
sigma2_sq = filter2(window, img2.*img2, 'valid') - mu2_sq;
sigma12 = filter2(window, img1.*img2, 'valid') - mu1_mu2;if (C1 > 0 && C2 > 0)ssim_map = ((2*mu1_mu2 + C1).*(2*sigma12 + C2))./((mu1_sq + mu2_sq + C1).*(sigma1_sq + sigma2_sq + C2));
elsenumerator1 = 2*mu1_mu2 + C1;numerator2 = 2*sigma12 + C2;denominator1 = mu1_sq + mu2_sq + C1;denominator2 = sigma1_sq + sigma2_sq + C2;ssim_map = ones(size(mu1));index = (denominator1.*denominator2 > 0);ssim_map(index) = (numerator1(index).*numerator2(index))./(denominator1(index).*denominator2(index));index = (denominator1 ~= 0) & (denominator2 == 0);ssim_map(index) = numerator1(index)./denominator1(index);
endmssim = mean2(ssim_map);return

四、运行结果



五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

【图像重建】基于matlab迭代步长自适应图像超分辨重建【含Matlab源码 048期】相关推荐

  1. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  2. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  3. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  4. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  5. 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】

    一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. Python图像识别实战(三):基于OpenCV实现批量单图像超分辨重建(附源码和实现效果)

    前面我介绍了可视化的一些方法以及机器学习在预测方面的应用,分为分类问题(预测值是离散型)和回归问题(预测值是连续型)(具体见之前的文章). 从本期开始,我将做一个关于图像识别的系列文章,让读者慢慢理解 ...

  7. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  8. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  9. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  10. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

最新文章

  1. android弹出窗口的实现(PopupWindow)
  2. 如何为你的回归问题选择最合适的机器学习方法?
  3. 四十三、Linux磁盘管理和Shell编程
  4. mysql 不在另一张表_mysql查询在一张表不在另外一张表的记录
  5. 安卓手机 Python 自动化测试
  6. oracle adg 备份,Oracle Physical Dataguard环境使用RMAN备份和恢复
  7. C语言计算1+1/2+1/3+......+1/100
  8. Node.js的集群功能以及在Express的配置
  9. 2008是中国的奥运年
  10. SG90系列 MG系列马达
  11. go mysql 中间件_GitHub - wushilong/go-sharding: Mysql 分库分表中间件
  12. 第五人格显示服务器连接失败,第五人格网络连接失败怎么回事
  13. Sunday算法特征码搜索C++(支持通配符)
  14. 中国山梨酸市场运营动态分析与前景方向预测报告2022-2028年
  15. python自学之《21天学通Python》(2)
  16. 限速之令牌桶和漏桶算法
  17. 淘晶驰串口屏_提示p0.pic 初始值无效:图片ID无效
  18. ddos流量攻击有多少G_如何防护ddos流量攻击?
  19. 计算机导师招生,计算机学院2017年具备招生资格的硕士研究生导师一览表.DOC
  20. 完整版的squid代理服务器搭建实现(ip,域名,上网时间限制)

热门文章

  1. centos7.4下的KVM虚拟机安装使用
  2. vue —— 利用 viewport 进行适配
  3. 一些学习的网址和资料
  4. 使用bootstrap建立响应式网页——头部导航栏
  5. 浅谈压缩感知(十一):凸优化
  6. DOS命令行使用pscp实现远程文件和文件夹传输(转)
  7. Python学习笔记之 高级变量类型 列表,元组,字典,字符串的相关常用 操作
  8. latex longtable and supertabular 跨页表格
  9. 数字孪生将这样改变我们的工作与生活
  10. Atitit index threod type 索引原理与类型 种类 目录 1.1. 每个文档在经过底层的存储引擎持久化后 1 2. MongoDB索引类型 2 2.1. 包括单字段索引、复合索引