1 内容介绍
本文解决了从单个低分辨率输入图像生成超分辨率 (SR) 图像的问题。我们从压缩感知的角度来解决这个问题。低分辨率图像被视为高分辨率图像的下采样版本,假设其补丁相对于原型信号原子的过完备字典具有稀疏表示。压缩感知的原理保证了在温和的条件下,稀疏表示可以正确地从下采样信号中恢复出来。我们将证明稀疏性的有效性作为规范否则不适定的超分辨率问题的先验。我们进一步表明,从与输入图像具有相似统计性质的训练图像中随机选择的一小组原始补丁通常可以作为一个好的字典,因为计算的表示是稀疏的,而恢复的高分辨率图像具有竞争力甚至质量优于其他 SR 方法生成的图像。
2 仿真代码
% =========================================================================
% Simple demo codes for image super-resolution via sparse representation
%
% Reference
% =========================================================================
clear all; clc;
% read test image
im_l = imread('Data/Testing/input.bmp');
% set parameters
lambda = 0.2; % sparsity regularization
overlap = 4; % the more overlap the better (patch size 5x5)
up_scale = 2; % scaling factor, depending on the trained dictionary
maxIter = 20; % if 0, do not use backprojection
% load dictionary
load('Dictionary/D_1024_0.15_5.mat');
% change color space, work on illuminance only
im_l_ycbcr = rgb2ycbcr(im_l);
im_l_y = im_l_ycbcr(:, :, 1);
im_l_cb = im_l_ycbcr(:, :, 2);
im_l_cr = im_l_ycbcr(:, :, 3);
% image super-resolution based on sparse representation
[im_h_y] = ScSR(im_l_y, 2, Dh, Dl, lambda, overlap);
[im_h_y] = backprojection(im_h_y, im_l_y, maxIter);
% upscale the chrominance simply by "bicubic"
[nrow, ncol] = size(im_h_y);
im_h_cb = imresize(im_l_cb, [nrow, ncol], 'bicubic');
im_h_cr = imresize(im_l_cr, [nrow, ncol], 'bicubic');
im_h_ycbcr = zeros([nrow, ncol, 3]);
im_h_ycbcr(:, :, 1) = im_h_y;
im_h_ycbcr(:, :, 2) = im_h_cb;
im_h_ycbcr(:, :, 3) = im_h_cr;
im_h = ycbcr2rgb(uint8(im_h_ycbcr));
% bicubic interpolation for reference
im_b = imresize(im_l, [nrow, ncol], 'bicubic');
% read ground truth image
im = imread('Data/Testing/gnd.bmp');
% compute PSNR for the illuminance channel
bb_rmse = compute_rmse(im, im_b);
sp_rmse = compute_rmse(im, im_h);
bb_psnr = 20*log10(255/bb_rmse);
sp_psnr = 20*log10(255/sp_rmse);
% show the images
figure,
subplot(131),imshow(im_l);title('原图')
subplot(132),imshow(im_h);
title(['PSNR for 稀疏表示',num2str( sp_psnr)]);
subplot(133), imshow(im_b);
title(['PSNR for 双立方插值',num2str(bb_psnr)]);
3 运行结果
4 参考文献
[1]王国权, 张扬, 李彦锋,等. 一种基于稀疏表示的图像去噪算法[J]. 工业仪表与自动化装置, 2013.
[2]刘美娟. 基于MATLAB的图像去噪研究[C]// 挑战与机遇:2010高校GIS论坛. 0.
[3]郭晓峰, 陈钊正, 刘圣卿,等. 一种基于图像稀疏表达的图像去噪方法及系统:, CN109727219A[P]. 2019.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。