%对一幅图像I进行M尺度的小波变换
I=imread('lena.bmp');
M=2;% M----小波变换的尺度
I1=double(I);
[m,n]=size(I);
Iout=zeros(size(I));
Iout1=zeros(size(I));
W1=zeros(size(I));
%=============Haar wavelete transform==================
W1=I1;
for k=1:M
for i=1:n
W1(:,i)=Waveletdwt(W1(:,i),1);%对列进行变换
end
for i=1:m
W1(i,:)=Waveletdwt(W1(i,:),1);%对行进行变换
end
for i=1:m
for j=1:n
Iout(i,j)=W1(i,j);
end
end
m=m/2;
n=n/2;
W1=zeros(m,n);
for i=1:m
for j=1:m
W1(i,j)=Iout(i,j);
end
end
end
figure
imshow(uint8(Iout))
title('Mallat小波分解图-unscaling')
Iout1=scaling(Iout);
figure
imshow(uint8(Iout1))
title('Mallat小波分解图-scaling')
%======================================================;
J1=M;
K=M;
[m,n]=size(Iout);
in1=double(Iout);
V=zeros(m/(2^(J1-1)),n/(2^(J1-1)));
Iout2=zeros(size(Iout));
for k=1:K
for i=1:m/(2^(J1-1))
for j=1:n/(2^(J1-1))
V(i,j)=in1(i,j);
end
end
for i=1:m/(2^(J1-1))
V(i,:)=Waveletidwt(V(i,:),1);%对行进行变换
end
for i=1:n/(2^(J1-1))
V(:,i)=Waveletidwt(V(:,i),1);%对列进行变换
end
for i=1:m/(2^(J1-1))
for j=1:n/(2^(J1-1))
in1(i,j)=V(i,j);
end
end
J1=J1-1;
V=zeros(m/(2^(J1-1)),n/(2^(J1-1)));
end
Iout2=in1;
figure
subplot(121);imshow(uint8(I));title('原图像')
subplot(122);imshow(uint8(Iout2));title('重构图像')