1 简介
Multi-image superresolution (SR) techniques produce a high-resolution image from several low-resolution observations. Previous reconstruction-based SR approaches focus more on the optimization models but have not adequately emphasized the mathematic solving techniques for this typically ill-conditioned and under-determined large scale problem. Since step size plays an important role in the iterative SR process, and there is a trade-off between less computation cost and higher accuracy, conven-tional SR methods either adopt a fixed step size to obtain a higher running speed, or use a computationally expensive line search algorithm to pursue an improvement in accuracy. Taking both cues into consideration, in this paper, we propose an adaptive line search strategy to realize the fast convergence of reconstruction-based SR. The approximate analytical expression of step size is introduced to prevent us from setting it empirically or running iterations to test a proper one. We further modify the proposed strategy to be more adaptive under different SR conditions. Using our strategy, one can accelerate the SR process and obtain the optimal solution with less iteration. Experiments are conducted on both synthetic datasets and real-world scenes. Results have demonstrated the effectiveness and outperformance of our proposed strategy compared with other line search strategies.
2 部分代码
clear all
clc
filename = '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-Tikhonov
Image =imread([filename,'\',files(file_num).name]);
SZ = size(size(Image));
if (SZ(2)==2) % turn grayscale image to RGB image
for qw = 1:3
IMAGE (:,:,qw) = Image;
end
else
IMAGE = 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:M
LR(:,:,:,w) = rgb2ycbcr(uint8( squeeze(LR(:,:,:,w))));
end
maxiter = 10; % maximum number of iteration
y1(:,:,:) = 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 recovering
I1 = Wang_SR(HRitp1, y1, D, Gau, spf, maxiter, reg_term); %Our proposed SR method
HRitp2 = 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 RGB
figure; imshow( uint8( ImZ ) ); title('Wang et al.');
figure; imshow( uint8( IMAGE ) ); title('groundtruth');
%% Evaluation
If = double(ImZ); %output image
Is = double(IMAGE); %reference image
[row,col,~]=size(If);
%RMSE
rmse=0;
for color = 1:3
Ifc = 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:3
Ifc = 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:3
Ifc = uint8(If(:,:,color)); Isc = uint8(Is(:,:,color));
ssimc = cal_ssim(Ifc, Isc, 0, 0);
ssim = ssim + ssimc/3;
end
ssim
3 仿真结果
4 参考文献
[1]朱翚. 利用MATLAB进行图像重建的算法研究[D]. 苏州大学, 2003.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页