实验四 图像小波变换
一、实验目的与要求: 1) 实验目的
理解
dwt函数
idwt函数
wcodemat函数
dwt2函数
wavedec2函数
idwt2函数
waverec2函数
2)实验步骤
1:对图象做2-D小波分解
程序如下:
I=imread('E:111.jpg');
i=rgb2gray(I);
nbcol=size(i,1);
[cA1,cH1,cV1,cD1]=dwt2(i,'db1');
cod_X=wcodemat(i,nbcol);
cod_cA1=wcodemat(cA1,nbcol);
cod_cH1=wcodemat(cH1,nbcol);
cod_cV1=wcodemat(cV1,nbcol);
cod_cD1=wcodemat(cD1,nbcol);
dec2d=[cod_cA1,cod_cH1;cod_cV1,cod_cD1];
figure ;
subplot(1,2,1);imshow(i,[]);
subplot(1,2,2);imshow(dec2d,[]);
实验结果如下:
2:2-D小波重构
程序如下:
x=imread('E:1.jpg');
X=rgb2gray(x);
nbcol=size(X,1);
[cA1,cH1,cV1,cD1]=dwt2(X,'db1');
cod_X=wcodemat(X,nbcol);
cod_cA1=wcodemat(cA1,nbcol);
cod_cH1=wcodemat(cH1,nbcol);
cod_cV1=wcodemat(cV1,nbcol);
cod_cD1=wcodemat(cD1,nbcol);
nbcol=size(cod_X,1);
[xcA1,xcH1,xcV1,xcD1]=dwt2(cA1,'db1');
xcod_cA1=wcodemat(xcA1,nbcol);
xcod_cH1=wcodemat(xcH1,nbcol);
xcod_cV1=wcodemat(xcV1,nbcol);
xcod_cD1=wcodemat(xcD1,nbcol);
xdec2d=[xcod_cA1,xcod_cH1;xcod_cV1,xcod_cD1];
dec2d=[xdec2d,cod_cH1;cod_cV1,cod_cD1];
subplot(1,2,1);
imshow(X,[]);
subplot(1,2,2);
imshow(dec2d,[]);imshow(dec2d,[]);
实验结果如下:
3:对图象做两层分解
程序如下:
x=imread('E:111.jpg');
X=rgb2gray(x);
nbcol=size(X,111);
[cA1,cH1,cV1,cD1]=dwt2(X,'db1');
cod_X=wcodemat(X,nbcol);
cod_cA1=wcodemat(cA1,nbcol);
cod_cH1=wcodemat(cH1,nbcol);
cod_cV1=wcodemat(cV1,nbcol);
cod_cD1=wcodemat(cD1,nbcol);
nbcol=size(cod_X,111);
[xcA1,xcH1,xcV1,xcD1]=dwt2(cA1,'db1');
xcod_cA1=wcodemat(xcA1,nbcol);
xcod_cH1=wcodemat(xcH1,nbcol);
xcod_cV1=wcodemat(xcV1,nbcol);
xcod_cD1=wcodemat(xcD1,nbcol);
xdec2d=[xcod_cA1,xcod_cH1;xcod_cV1,xcod_cD1];
dec2d=[xdec2d,cod_cH1;cod_cV1,cod_cD1];
subplot(1,2,1);
imshow(X,[]);
subplot(1,2,2);
imshow(dec2d,[]);imshow(dec2d,[]);
实验结果如下:
4:对图象做两层分解重构
程序如下:
x=imread('E:111.jpg');
X=rgb2gray(x);
[c,s]=wavedec2(X,2,'sym4');
a0=waverec2(c,s,'sym4');
subplot(1,2,1);imshow(X,[]);
Title('Original Image');
subplot(1,2,2);
imshow(a0,[]);
Title('Image using idwt2');
实验结果如下:
5:图象的钝化(锐化)
程序如下:
x=imread('E:111.jpg');
X=rgb2gray(x);
blur1=X;
blur2=X;
ff1=dct2(X);
for i=1:256
for j=1:256
ff1(i,j)=ff1(i,j)/(1+(32768/(i*i+j*j))^2);
end
end
blur1=idct2(ff1);
[c,l]=wavedec2(X,2,'db3');
csize=size(c);
for i=1:csize(2);
if (abs(c(i))<300)
c(i)=c(i)*2;
else
c(i)=c(i)/2;
end
end
blur2=waverec2(c,l,'db3');
subplot(221);image(wcodemat(X,192));colormap(gray(256));title('Original Image');
subplot(222);image(wcodemat(blur1,192));colormap(gray(256));title('DCTImage');
subplot(223);image(wcodemat(blur2,192));colormap(gray(256));title('DWT Image');
blur2=waverec2(c,l,'db3');
subplot(221);image(wcodemat(X,192));colormap(gray(256));title('Original Image');
subplot(222);image(wcodemat(blur1,192));colormap(gray(256));title('DCT Image');
subplot(223);image(wcodemat(blur2,192));colormap(gray(256));title('DWT Image');
实验结果如下:
四、实验心得与感受
通过这次实验,对图像的小波变换有了深刻的认识。对小波变换有了进一步的了解。