MATLAB Curvelet-2 PCNN画像融合アルゴリズム
2009 ワード
curvelet-2PCNN by vincent close all; clear all; path(path,'PCNN_toolbox/') path(path,'nsct_toolbox') path(path,'FusionEvaluation/') path(path,'fusetool/') A=double(imread('1.jpg')); B=double(imread('2.jpg')); %% Parameters for PCNN Para.iterTimes=200; Para.link_arrange=3; Para.alpha_L=0.06931;% 0.06931 Or 1 Para.alpha_Theta=0.2; Para.beta=3;% 0.2 or 3 Para.vL=1.0; Para.vTheta=20; %% disp('Decompose the image curvelet ...') yA = fdct_wrapping(A,1,2); yB = fdct_wrapping(B,1,2); n = length(yA); %% Initialized the coefficients of fused image Fused=yB; ========================================= % Lowpass subband disp('Process in Lowpass subband...') ALow1 = yA{1}{1}; BLow1 = yB{1}{1}; [Abeta,Bbeta] = weighting(ALow1,BLow1); Fused{1}{1}=Dual_PCNN(ALow1,BLow1,Abeta,Bbeta); %Fused{2}=fusion_NSCT_SF_PCNN(ALow2,BLow2,Para); %% %============================================= % Bandpass subbands disp('Process in Bandpass subbands...') for l = 2:n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for d = 1:length(yA{l}) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Ahigh = yA{l}{d}; Bhigh = yB{l}{d}; [Abeta,Bbeta] = weighting(Ahigh,Bhigh); %% Fused{l}{d} = fusion_NSCT_SF_PCNN(Ahigh,Bhigh,Para); Fused{l}{d}=Dual_PCNN(Ahigh,Bhigh,Abeta,Bbeta); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end end disp('High frequecy field process is ended') %============================================= disp('Reconstruct the image curvelet ...') f_im = real(ifdct_wrapping(Fused,1)); disp('Reconstruct is ended...') %% f_im=f_im/255; imwrite(f_im ,'6.jpg','jpg'); im2=imread('6.jpg'); im=imread('1.jpg'); im1=imread('2.jpg'); grey_level=256; Result=zeros(1,2); Result(1,1)=mutural_information(im,im1,im2,grey_level); Result(1,2)=edge_association(im,im1,im2); Result