📄 image_compress.m
字号:
clear
%装入图像
load wbarb;
%显示图像
%syms X;
subplot(221);
%image(coast);
image(X);
colormap(map)
title('原始图像');
axis square
disp('压缩前图像X的大小');
%whos('coast')
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')
%***********************************************************************************
clear;
%装入图形信号
load wbarb;
%显示图像
subplot(221);
image(X);
colormap(map);
title('原始图像');
disp('压缩前图像的大小');
whos('X');
axis square;
%对图像进行压缩
%对图像用db3小波进行二层小波分解
[c,s]=wavedec2(X,5,'db3');
[thr,sorh,keepapp]=ddencmp('cmp','wv',X);
[Xcomp,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'db3',5,thr,sorh,keepapp);
%将压缩后的图像于原始图像相比较
subplot(222);
image(Xcomp);
colormap(map);
title(' 压缩后的图像');
disp('压缩后图像的大小');
whos('Xcomp')
axis square;
%显示有关参数
disp('小波分解系数中值为0的系数个数百分比');
disp(perf0);
disp('压缩后剩余能量百分比');
disp(perfl2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -