Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2009-02-05, 11:22   #1
barryyan2007
初级会员
 
注册日期: 2009-02-01
年龄: 39
帖子: 5
声望力: 0
barryyan2007 正向着好的方向发展
眨眼 [求助]运用MATLAB的小波变换对图像进行压缩遇到点小问题

我所用的是wdencmp函数对图像进行压缩,但是根据所写的程序,生成的图像只有一些小点,程序如下:

load whale
whos;
subplot(1,2,1);
image(X);
colormap(map);
title('原始图像');
%用db3小波对图像X进行2层分解
[c,l]=wavedec2(X,2,'db3');
%全局阈值
[thr,sorh,keepapp]=ddencmp('cmp','wv',X);
%压缩处理:对所有高频系数进行同样的阈值量化处理
[Xcmp,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,l,'db3',2,thr,sorh,keepapp);
%在这里将double型的Xcmp转为uint8型的X4
X4=im2uint8(Xcmp);
%将压缩后的图像与原始图像比较
subplot(1,2,2);
image(X4);
colormap(map);
title('压缩后的图像');
%显示相关系数
disp('小波分解系数中为0的系数个数百分比');
perf0
disp('压缩后保留能量百分比');
perfl2


当中有一段程序如下
%在这里将double型的Xcmp转为uint8型的X4
X4=im2uint8(Xcmp);
%将压缩后的图像与原始图像比较
subplot(1,2,2);
image(X4);

本来书上是直接
subplot(1,2,2);
image(Xcmp);
这样的话图像显示为马赛克,我想可能是double型的缘故,所以我将它改为和原始图像一样的uint8型,但是结果还是现实很多小点点,没能压缩,我从command window看到只有X和X4是uint8型,其他都是double型,难道都要改成一致?还望高手指教,哪里出现问题,谢谢。
barryyan2007 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[MATLAB数学相关] 请问这个过程应该怎么模拟 lonelyrex MATLAB论坛 2 2009-04-16 14:57
[求助]求解方程的问题 一个人的旅行 MATLAB论坛 3 2009-03-25 16:00
[求助]在MATLAB中如何查看命令的源程序是如何写的? qinyonglyz MATLAB论坛 1 2009-01-05 09:20
仪表信息图像采集处理研究 liuna2008 MATLAB论坛 0 2008-04-12 18:53


所有时间均为北京时间。现在的时间是 04:22


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.