www.pudn.com > waveletxiaoyu50052.zip > Untitled1.m


%%%%%%%%%%%%小波分解程序    2类 
wavename='haar'; 
 mode='sym'; 
% [X,map]=imread('E:\image\sy7.gif');%%%%%%%400 
[X,map]=imread('Mosaic1_new.tif');%图像读入 此处请自行修改 
deccof=struct('cA',[],'cH',[],'cV',[],'cD',[]); 
sX=size(X); 
X=double(X); 
DX=X; 
deccof(1).cA=X; 
%%%%%%%%%三级分解 
for i=2:4 
    %用小波函数进行分解 
    [deccof(i).cA,deccof(i).cH,deccof(i).cV,deccof(i).cD]=dwt2(DX,wavename,'mode',mode); 
    DX=deccof(i).cA; 
end 
%%%%%%%%%%%%%%%%%%%%%%特征提取1 
cca=laws(deccof(4).cA,7,5); 
[M,N]=size(cca); 
aa=reshape(cca,M*N,1); 
 
cch=laws(deccof(4).cH,7,5); 
[M,N]=size(cch); 
hh=reshape(cch,M*N,1); 
 
ccv=laws(deccof(4).cV,7,5); 
[M,N]=size(ccv); 
vv=reshape(ccv,M*N,1); 
 
ccd=laws(deccof(4).cD,7,5); 
[M,N]=size(ccd); 
dd=reshape(ccd,M*N,1); 
 
lei1=0;lei2=0.9; 
%%%%%%%%计算下一尺度图像平均值和标准差 
me=mean2(deccof(3).cH+deccof(3).cV+deccof(3).cD); 
st=std2(deccof(3).cH+deccof(3).cV+deccof(3).cD); 
lei1=me+st^(-0.5); 
lei2=me-st^(-0.5);%%%%%%%%%%%令分割后图像标号的均值和标准差与当前细节图一致 
tezh=[aa hh vv dd];%%%%%%%特征 
[IDC,U]=kmeans(tezh,2); 
       aa(IDC==1,1)=lei1; 
       aa(IDC==2,1)=lei2;       
g=reshape(aa,M,N); 
 
%%%%%%%%%%%%%%%?扩展 
y=zeros([2.*size(g)]); 
y(1:2:end,1:2:end)=g; 
y(1:2:end,2:2:end)=g; 
y(2:2:end,1:2:end)=g; 
y(2:2:end,2:2:end)=g; 
 
%%%%%%%%%%%%%%%%%%%%%%特征分类2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
[M,N]=size(y); 
aa=reshape(y,M*N,1); 
 
cch=laws(deccof(3).cH,7,5); 
[M,N]=size(cch); 
hh=reshape(cch,M*N,1); 
 
ccv=laws(deccof(3).cV,7,5); 
[M,N]=size(ccv); 
vv=reshape(ccv,M*N,1); 
 
ccd=laws(deccof(3).cD,7,5); 
[M,N]=size(ccd); 
dd=reshape(ccd,M*N,1); 
 
lei1=0;lei2=0.9; 
%%%%%%%%%计算下一尺度图像平均值和标准差 
me=mean2(deccof(2).cH+deccof(2).cV+deccof(2).cD); 
st=std2(deccof(2).cH+deccof(2).cV+deccof(2).cD); 
lei1=me+st^(-0.5); 
lei2=me-st^(-0.5);%%%%%%%%%%%令分割后图像标号的均值和标准差与当前细节图一致 
tezh=[aa hh vv dd]; 
[IDC,U]=kmeans(tezh,2); 
       aa(IDC==1,1)=lei1; 
       aa(IDC==2,1)=lei2;       
g=reshape(aa,M,N); 
% imshow(g); 
%%%%%%%%%%%%%%%?扩展 
y=zeros([2.*size(g)]); 
y(1:2:end,1:2:end)=g; 
y(1:2:end,2:2:end)=g; 
y(2:2:end,1:2:end)=g; 
y(2:2:end,2:2:end)=g; 
 
%%%%%%%%%%%%%%%%%%%%%%特征分类3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
[M,N]=size(y); 
aa=reshape(y,M*N,1); 
 
cch=laws(deccof(2).cH,7,5); 
[M,N]=size(cch); 
hh=reshape(cch,M*N,1); 
 
ccv=laws(deccof(2).cV,7,5); 
[M,N]=size(ccv); 
vv=reshape(ccv,M*N,1); 
 
ccd=laws(deccof(2).cD,7,5); 
[M,N]=size(ccd); 
dd=reshape(ccd,M*N,1); 
 
lei1=0;lei2=0.9; 
tezh=[aa hh vv dd]; 
[IDC,U]=kmeans(tezh,2); 
       aa(IDC==1,1)=lei1; 
       aa(IDC==2,1)=lei2;       
g=reshape(aa,M,N); 
 
figure; 
imshow(g); 
% %%%%%%%%%%%%计算正确率 
% ju=ones(M)*lei2; 
% for i=1:M 
%     for j=1:M/2 
%         ju(i,j)=lei1; 
%     end 
% end 
% ju2=g-ju; 
%  prob=prod(size(find(ju2~=0)))/(M*N) 
%  1-prob