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