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];