用matlab编写的程序代码:
clear
figure
load tire;
subplot(221);
image(X);
colormap(map);
title('原始图像');
axis square
disp('压缩前图像X的大小:');
whos('X')
[c,s]=wavedec2(X,2,'bior3.7');
ca1=appcoef2(c,s,'bior3.7',1);
ch1=detcoef2('h',c,s,1);
cv1=detcoef2('v',c,s,1);
cd1=detcoef2('d',c,s,1);
a1=wrcoef2('a',c,s,'bior3.7',1);
h1=wrcoef2('h',c,s,'bior3.7',1);
v1=wrcoef2('v',c,s,'bior3.7',1);
d1=wrcoef2('d',c,s,'bior3.7',1);
c1=[a1,h1;v1,d1];
subplot(222);
image(c1);
axis square
title('分解后低频和高频信息');
ca1=appcoef2(c,s,'bior3.7',1);
ca1=wcodemat(ca1,440,'mat',0);
ca1=0.5*ca1;
subplot(223);
image(ca1);
colormap(map);
axis square;
title('第一次压缩图像');
disp('第一次压缩图像为:');
whos('ca1')
ca2=appcoef2(c,s,'bior3.7',2);
ca2=wcodemat(ca2,440,'mat',0);
ca2=0.25*ca2;
subplot(224);
image(ca2);
colormap(map);
axis square;
title('第二次压缩图像');
disp('第二次压缩图像为:');
whos('ca2')
在工作窗得到以下结果:
压缩前图像X的大小:
Name Size Bytes Class
X 200x232 371200 double array
Grand total is 400 elements using 371200 bytes
第一次压缩图像为:
Name Size Bytes Class
ca1 107x123 105288 double array
Grand total is 13161 elements using 105288 bytes
第二次压缩图像为:
Name Size Bytes Class
ca2 61x69 33672 double array
Grand total is 4209 elements using 33672 bytes
实验处理结果如下图所示:下载本文