[求助]运用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型,难道都要改成一致?还望高手指教,哪里出现问题,谢谢。
		 
		
		
		
		
		
		
		
	 |