图像压缩使用小波MATLAB

时间:2013-01-25 14:57:31

标签: matlab wavelet

我正在基于MATLAB中的小波进行图像压缩...我构建了下面的代码。一切正常,但压缩的图像显示为纯黑白图像。如果我将分解级别设置为1,则将压缩图像显示为全黑,对于分解级别:2,它提供完全白色图像。对于分解级别3,它给出3/4白色和1/4黑色。 。 请帮忙。我使用的代码是

clear all;

close all;

input_image1=imread('C:\Users\Prem\Documents\MATLAB\mandrill.jpg');

input_image=imnoise(input_image1,'speckle',.01);

figure;

imshow(input_image);

n=input('enter the decomposition level=');

[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('haar');

[c,s]=wavedec2(input_image,n,Lo_D,Hi_D);

disp(' the decomposition vector Output is');

disp(c);

[thr,nkeep] = wdcbm2(c,s,1.5,3*prod(s(1,:)));

 [compressed_image,TREED,comp_ratio,PERFL2] =wpdencmp(thr,'s',n,'haar','threshold',5,1);

 disp('compression ratio in percentage');

 disp(comp_ratio);

  re_ima1 = waverec2(c,s,'haar'); 

 re_ima=uint8(re_ima1);

  subplot(1,3,1);

 imshow(input_image);

 title('i/p image');

 subplot(1,3,2);

 imshow(compressed_image);

 title('compressed image');

 subplot(1,3,3);

 imshow(re_ima);

 title('reconstructed image');

2 个答案:

答案 0 :(得分:0)

我认为缩放图像的问题。您可以使用合适的数字划分结果图像或使用

imagesc(desire image);

subplot(1,3,2);

imshow(compressed_image/156);

title('compressed image');

subplot(1,3,3);

imagesc(re_ima);

title('reconstructed image');

答案 1 :(得分:-1)

在这一行

 [compressed_image,TREED,comp_ratio,PERFL2] =wpdencmp(thr,'s',n,'haar','threshold',5,1);

您将阈值作为信号传递......这是不正确的。