code

4
%%%IMAGE Resolution Enhancement by Using Discrete and Stationary Wavelet Decomposition %%% clc; close all; clear all; %------------------------------------------------------------------- img=uigetfile('.jpg','select the source image'); i=imread(img); i=imresize(i,[256 256]); subplot(2,2,1),imshow(i),title('Original low resolution Baboon’s image'); %----------------------------------------------------------- if size(i,3)>1 i=rgb2gray(i); end g=im2double(i); %----------------------------------------------------------- %--------------bicubic interpolation------------------------ scale=2; if scale>0 [r,c,h]=size(g); tempim=uint8(zeros(r+4,c+4,h)); tempim(3:r+2,3:c+2,:)=g(:,:,:); newim=uint8(zeros(floor(r*scale),floor(c*scale),h)); for i1=1:1:size(newim,1) for j=1:1:size(newim,2) for x_i=floor((i1-1)/scale)+1:1:floor((i1-1)/scale)+5 for y_j=floor((j-1)/scale)+1:1:floor((j-1)/scale)+5 x_d=cubicCalcDistance((i1-1)/scale+3,x_i); y_d=cubicCalcDistance((j-1)/scale+3,y_j); newim(i1,j,:)=newim(i1,j,:)+tempim(x_i,y_j,:)*x_d*y_d; end end end end newim=imresize(newim,[256 256]); subplot(2,2,2),imshow(mat2gray(newim)); title('Bicubic interpolated image'); end %---------------wavelet zero padding------------------------

Upload: naveen-kumar

Post on 28-Oct-2014

76 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Code

%%%IMAGE Resolution Enhancement by Using Discrete and Stationary Wavelet Decomposition %%% clc;close all;clear all;%------------------------------------------------------------------- img=uigetfile('.jpg','select the source image');i=imread(img);i=imresize(i,[256 256]);subplot(2,2,1),imshow(i),title('Original low resolution Baboon’s image');%----------------------------------------------------------- if size(i,3)>1 i=rgb2gray(i);endg=im2double(i); %-----------------------------------------------------------%--------------bicubic interpolation------------------------scale=2;if scale>0[r,c,h]=size(g);tempim=uint8(zeros(r+4,c+4,h));tempim(3:r+2,3:c+2,:)=g(:,:,:);newim=uint8(zeros(floor(r*scale),floor(c*scale),h));for i1=1:1:size(newim,1) for j=1:1:size(newim,2) for x_i=floor((i1-1)/scale)+1:1:floor((i1-1)/scale)+5 for y_j=floor((j-1)/scale)+1:1:floor((j-1)/scale)+5 x_d=cubicCalcDistance((i1-1)/scale+3,x_i); y_d=cubicCalcDistance((j-1)/scale+3,y_j); newim(i1,j,:)=newim(i1,j,:)+tempim(x_i,y_j,:)*x_d*y_d; end end endendnewim=imresize(newim,[256 256]);subplot(2,2,2),imshow(mat2gray(newim));title('Bicubic interpolated image');end %---------------wavelet zero padding------------------------ l1=zeros(size(g));l2=zeros(size(g));l3=zeros(size(g)); w=idwt2(g,l1,l2,l3,'db7');w=imresize(w,[256 256]);subplot(2,2,3),imshow(mat2gray(w));title('Super resolved image using WZP') %---------------proposed methodology------------------------

Page 2: Code

alpha=2; a=my_interp(g,alpha/2); %---------------apply DWT----------------------------------- [LL1 LH1 HL1 HH1]=dwt2(g,'db7',1);t=[LL1 LH1;HL1 HH1];%figure,imshow(t,[]);title('Wavelet decomposed image with db9'); %---------------apply SWT----------------------------------- [LL LH HL HH]=swt2(g,1,'db7');s=[LL LH;HL HH];%figure,imshow(s,[]);title('SWT decomposed image with db9'); %---------------interpolation with factor 2 ---------------- A1=my_interp(LH1,2); A2=my_interp(HL1,2); A3=my_interp(HH1,2); %---------------------------------------------------------- y1=imresize(A1,size(LH)); y2=imresize(A2,size(HL)); y3=imresize(A3,size(HH)); %---------------------------------------------------------- a1=y1+LH; %% estimated LH a2=y2+HL; %% estimated HL a3=y3+HH; %% estimated HH %---------------------------------------------------------- b1=my_interp(a1,alpha/2); b2=my_interp(a2,alpha/2); b3=my_interp(a3,alpha/2); %----------------apply IWT--------------------------------- rt=idwt2(a,b1,b2,b3,'db7'); rt=imresize(rt,size(g));subplot(2,2,4),imshow(mat2gray(rt)),title('Proposed technique'); %----------psnr calculation------------------------------------- p=psnr(g,im2double(newim)) %Bicubic interpolated p1=psnr(g,w) %using WZP p2=psnr(g,rt) %Proposed technique

cubicCalcDistance.Mfunction s = cubicCalcDistance(p,g)

Page 3: Code

d=abs(p-g); if d<1s=3/2*d^3-5/2*d^2+1;elseif d<2s=-1/2*d^3+5/2*d^2-4*d+2;elses=0;end return

my_interp.Mfunction A_inter = my_interp(A, filter_coef)if (length(size(A)) == 3) for i=1:3 A_inter(:,:,i) = my_interp(A(:,:,i),filter_coef); end else [m,n] = size(A); A_ = []; A_inter = []; % columns interpolation A_col= filter2(filter_coef,A); for i=1:n A_ = [A_ A(:,i) A_col(:,i)]; end A_(:,end) = []; % rows interpolation A_rows = filter2(filter_coef,A_')'; for i=1:m A_inter = [A_inter; A_(i,:); A_rows(i,:)]; end A_inter(end,:) = []; endpsnr.Mfunction [A] = psnr(Im1,Im2) [M N]=size(Im1); Im1=im2double(Im1); % convert to doubles Im2=im2double(Im2); mse=sum(sum((Im1-Im2).*(Im1-Im2)))/(M*N); A=10*log10(255/(mse));