【图像重建】图像超分辨重建MATLAB源代码(迭代步长自适应)matlab代码
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 ssim3 仿真结果
4 参考文献
[1]朱翚. 利用MATLAB进行图像重建的算法研究[D]. 苏州大学, 2003.
部分理论引用网络文献,若有侵权联系博主删除。