紧急求助:在MTLAB下实现用小波变换对图像进行压缩处理的一个实例。包括完整的程序。 30

 我来答
天马3号
2012-03-18
知道答主
回答量:10
采纳率:0%
帮助的人:1.7万
展开全部
I=imread('cameraman.tif');
xd=im2double(I) ;
[m,n]=size(I); % 求出规范化矩阵x的行列数
%xd=double(x); % 将矩阵x的数据格式转换为适合数值处理的double格式

for i=1:2
[dLL,dHL,dLH,dHH]=dwt2(xd,'db1'); % 矩阵小波分解
tmp=[dLL,dHL;dLH,dHH]; % 将分解系数存入缓存矩阵
xd=dLL; % 将缓存矩阵左上角部分的子矩阵作为下一层分解的源矩阵
[row,col]=size(tmp); % 求出缓存矩阵的行列数
y(1:row,1:col)=tmp; % 将缓存矩阵存入输出矩阵的相应行列
end

yd=uint8(y); % 将输出矩阵的数据格式转换为适合显示图像的uint8格式
for i=1:2 % 对矩阵 yd 进行分界线处理,画出分解图像的分界线
m=m-mod(m,2);
n=n-mod(n,2);
yd(m/2,1:n)=255;
yd(1:m,n/2)=255;
m=m/2;n=n/2;
end

wname='db1'
n=2;
[c,s] = wavedec2(I,n,wname);
alpha = 1.5; m = 2.7*prod(s(1,:));
[thr,nkeep] = wdcbm2(c,s,alpha,m)
% Compression
[xd,cxd,sxd,perf0,perfl2] = wdencmp('lvd',c,s,wname,n,thr,'h');

%使用第二个axes
I2 = uint8(xd)
%axes(handles.axes2);

subplot(1,2,1);
imshow(I);
title('原始图像');
subplot(1,2,2)
imshow(I2);
title('压缩图像');
匿名用户
2012-03-19
展开全部
e
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式