www.pudn.com > getf_wavelet.rar > getf_wavelet.m


 function feature_wl=getf_wavelet(Input) 
    
    A=double(Input); 
    Xrgb=0.2990*A(:,:,1)+0.5870*A(:,:,2)+0.1140*A(:,:,3); 
    NbColor=255; 
%  WCODEMAT Extended pseudocolor matrix scaling. Y = WCODEMAT(X,NBCODES,OPT,ABSOL) returns a coded version of input 
% matrix X if ABSOL=0, or ABS(X) if ABSOL is  nonzero, using the first NBCODES integers. 
%  Coding can be done row-wise (OPT='row' or 'r'), columnwise (OPT='col' or 'c'), or globally (OPT='mat' or 'm').  
%  Coding uses a regular grid between the minimum and the maximum values of each row (column or matrix,respectively).  
%  Y = WCODEMAT(X,NBCODES) is equivalent to  Y = WCODEMAT(X,NBCODES,'mat',1). 
    X1=wcodemat(Xrgb,NbColor);%伪彩矩阵压缩 
 
% Function 'wavedec2' Multilevel 2-D wavelet decomposition.[C,S] = WAVEDEC2(X,N,'wname') returns the wavelet 
% decomposition of the matrix X at level N, using the wavelet named in string 'wname' (see WFILTERS). 
% Outputs are the decomposition vector C and the corresponding bookkeeping matrix S. 
% N must be a strictly positive integer (see WMAXLEV). 
   [c2,l2]=wavedec2(X1,4,'sym4');%二维小波分解 
 
% Function 'detcoef2' Extract 2-D detail coefficients. 
% D = detcoef2(O,C,S,N) extracts from the wavelet decomposition structure [C,S], the horizontal, vertical  
% or diagonal detail coefficients for O = 'h' (or 'v' or 'd',respectively), at level N. N must 
% be an integer such that 1 <= N <= size(S,1)-2. 
   ch11=detcoef2('h',c2,l2,1);%提取小波分解细节系数 
   ch12=detcoef2('h',c2,l2,2); 
   ch13=detcoef2('h',c2,l2,3); 
   ch14=detcoef2('h',c2,l2,4); 
   cv11=detcoef2('v',c2,l2,1); 
   cv12=detcoef2('v',c2,l2,2); 
   cv13=detcoef2('v',c2,l2,3); 
   cv14=detcoef2('v',c2,l2,4); 
   cd11=detcoef2('d',c2,l2,1); 
   cd12=detcoef2('d',c2,l2,2); 
   cd13=detcoef2('d',c2,l2,3);  
   cd14=detcoef2('d',c2,l2,4); 
 
% Function 'appcoef2' Extract 2-D approximation coefficients.APPCOEF2 computes the approximation coefficients of a 
% two-dimensional signal.A = APPCOEF2(C,S,'wname',N) computes the approximation coefficients at level N using the wavelet decomposition 
% structure [C,S] (see WAVEDEC2). 'wname' is a string containing the wavelet name.Level N must be an integer such that 0 <= N <= size(S,1)-2.  
   ca14=appcoef2(c2,l2,'sym4',4);%提取小波分解概貌系数 
 
%==========compute mean & var(求分解后的每个图象的均值和方差)================== 
%image x1's u & std  
   Csize1=size(ch11); 
   s1=0; 
   for i=1:Csize1(1) 
       for j=1:Csize1(2) 
           s1=s1+abs(ch11(i,j));%abs求绝对值 
       end 
   end 
   u1=(1/(Csize1(1)*Csize1(2)))*s1; 
 
   st1=0; 
   for i=1:Csize1(1) 
       for j=1:Csize1(2) 
           st1=st1+(abs(ch11(i,j))-u1)*(abs(ch11(i,j))-u1); 
       end 
   end 
   z1=sqrt((1/(Csize1(1)*Csize1(2)-1))*st1); 
%====================================================== 
   Csize2=size(ch12); 
   s2=0; 
   for i=1:Csize2(1) 
       for j=1:Csize2(2) 
           s2=s2+abs(ch12(i,j)); 
       end 
   end 
   u2=(1/(Csize2(1)*Csize2(2)))*s2; 
 
   st2=0; 
   for i=1:Csize2(1) 
       for j=1:Csize2(2) 
           st2=st2+(abs(ch12(i,j))-u2)*(abs(ch12(i,j))-u2); 
       end 
   end 
   z2=sqrt((1/(Csize2(1)*Csize2(2)-1))*st2); 
%=========================================================== 
   Csize3=size(ch13); 
   s3=0; 
   for i=1:Csize3(1) 
       for j=1:Csize3(2) 
           s3=s3+abs(ch13(i,j)); 
       end 
   end 
   u3=(1/(Csize3(1)*Csize3(2)))*s3; 
 
   st3=0; 
   for i=1:Csize3(1) 
       for j=1:Csize3(2) 
           st3=st3+(abs(ch13(i,j))-u3)*(abs(ch13(i,j))-u3); 
       end 
   end 
   z3=sqrt((1/(Csize3(1)*Csize3(2)-1))*st3); 
%================================================================ 
   Csize3=size(ch14); 
   s3=0; 
   for i=1:Csize3(1) 
       for j=1:Csize3(2) 
           s3=s3+abs(ch14(i,j)); 
       end 
   end 
   u4=(1/(Csize3(1)*Csize3(2)))*s3; 
 
   st3=0; 
   for i=1:Csize3(1) 
       for j=1:Csize3(2) 
           st3=st3+(abs(ch14(i,j))-u4)*(abs(ch14(i,j))-u4); 
       end 
   end 
   z4=sqrt((1/(Csize3(1)*Csize3(2)-1))*st3); 
%================================================================= 
   Csize4=size(cv11); 
   s4=0; 
   for i=1:Csize4(1) 
       for j=1:Csize4(2) 
          s4=s4+abs(cv11(i,j)); 
       end 
   end 
   u5=(1/(Csize4(1)*Csize4(2)))*s4; 
 
   st4=0; 
   for i=1:Csize4(1) 
       for j=1:Csize4(2) 
           st4=st4+(abs(cv11(i,j))-u5)*(abs(cv11(i,j))-u5); 
       end 
   end 
   z5=sqrt((1/(Csize4(1)*Csize4(2)-1))*st4); 
%=============================================================== 
   Csize5=size(cv12); 
   s5=0; 
   for i=1:Csize5(1) 
       for j=1:Csize5(2) 
           s5=s5+abs(cv12(i,j)); 
       end 
   end 
   u6=(1/(Csize5(1)*Csize5(2)))*s5; 
 
   st5=0; 
   for i=1:Csize5(1) 
       for j=1:Csize5(2) 
           st5=st5+(abs(cv12(i,j))-u6)*(abs(cv12(i,j))-u6); 
       end 
   end 
   z6=sqrt((1/(Csize5(1)*Csize5(2)-1))*st5); 
%================================================================ 
   Csize6=size(cv13); 
   s6=0; 
   for i=1:Csize6(1) 
       for j=1:Csize6(2) 
           s6=s6+abs(cv13(i,j)); 
       end 
   end 
   u7=(1/(Csize6(1)*Csize6(2)))*s6; 
 
   st6=0; 
   for i=1:Csize6(1) 
       for j=1:Csize6(2) 
          st6=st6+(abs(cv13(i,j))-u7)*(abs(cv13(i,j))-u7); 
       end 
   end 
   z7=sqrt((1/(Csize6(1)*Csize6(2)-1))*st6); 
%================================================================== 
   Csize6=size(cv14); 
   s6=0; 
   for i=1:Csize6(1) 
       for j=1:Csize6(2) 
           s6=s6+abs(cv14(i,j)); 
       end 
   end 
   u8=(1/(Csize6(1)*Csize6(2)))*s6; 
 
   st6=0; 
   for i=1:Csize6(1) 
       for j=1:Csize6(2) 
           st6=st6+(abs(cv14(i,j))-u8)*(abs(cv14(i,j))-u8); 
       end 
   end 
   z8=sqrt((1/(Csize6(1)*Csize6(2)-1))*st6); 
%============================================================== 
   Csize7=size(cd11); 
   s7=0; 
   for i=1:Csize7(1) 
       for j=1:Csize7(2) 
          s7=s7+abs(cd11(i,j)); 
       end 
   end 
   u9=(1/(Csize7(1)*Csize7(2)))*s7; 
 
   st7=0; 
   for i=1:Csize7(1) 
       for j=1:Csize7(2) 
          st7=st7+(abs(cd11(i,j))-u9)*(abs(cd11(i,j))-u9); 
       end 
   end 
   z9=sqrt((1/(Csize7(1)*Csize7(2)-1))*st7); 
%==================================================================== 
   Csize7=size(cd12); 
   s7=0; 
   for i=1:Csize7(1) 
       for j=1:Csize7(2) 
          s7=s7+abs(cd12(i,j)); 
       end 
   end 
   u10=(1/(Csize7(1)*Csize7(2)))*s7; 
 
   st7=0; 
   for i=1:Csize7(1) 
      for j=1:Csize7(2) 
          st7=st7+(abs(cd12(i,j))-u10)*(abs(cd12(i,j))-u10); 
       end 
   end 
   z10=sqrt((1/(Csize7(1)*Csize7(2)-1))*st7); 
%================================================= 
   Csize7=size(cd13); 
   s7=0; 
   for i=1:Csize7(1) 
      for j=1:Csize7(2) 
          s7=s7+abs(cd13(i,j)); 
       end 
   end 
   u11=(1/(Csize7(1)*Csize7(2)))*s7; 
 
   st7=0; 
   for i=1:Csize7(1) 
      for j=1:Csize7(2) 
         st7=st7+(abs(cd13(i,j))-u11)*(abs(cd13(i,j))-u11); 
      end 
   end 
   z11=sqrt((1/(Csize7(1)*Csize7(2)-1))*st7); 
%================================================= 
   Csize7=size(cd14); 
   s7=0; 
   for i=1:Csize7(1) 
       for j=1:Csize7(2) 
          s7=s7+abs(cd14(i,j)); 
       end 
   end 
   u12=(1/(Csize7(1)*Csize7(2)))*s7; 
 
   st7=0; 
   for i=1:Csize7(1) 
       for j=1:Csize7(2) 
          st7=st7+(abs(cd14(i,j))-u12)*(abs(cd14(i,j))-u12); 
       end 
   end 
   z12=sqrt((1/(Csize7(1)*Csize7(2)-1))*st7); 
%================================================= 
   Csize7=size(ca14); 
   s7=0; 
   for i=1:Csize7(1) 
      for j=1:Csize7(2) 
          s7=s7+abs(ca14(i,j)); 
      end 
   end 
   u13=(1/(Csize7(1)*Csize7(2)))*s7; 
 
   st7=0; 
   for i=1:Csize7(1) 
      for j=1:Csize7(2) 
         st7=st7+(abs(ca14(i,j))-u13)*(abs(ca14(i,j))-u13); 
      end 
   end 
   z13=sqrt((1/(Csize7(1)*Csize7(2)-1))*st7); 
 
   %semble feature vector======================================== 
   % 应用准则函数把对分类影响不大的特征去除 
   feature_wl=[u1,z1,u2,z2,u3,z3,u4,z4,u5,z5,u6,z6,u7,z7,u8,z8,u9,z9,u10,z10,u11,z11,u12,z12,u13,z13]; 
   %feature_wl=[u1,z1,u2,z2,u3,z3,u4,z4,u5,z5,u6,z6,u7,z7,u9,z9,u13,z13];