数字图像处理(八)图像压缩-有损压缩/压缩算法+matlab

有损压缩/压缩算法实验    

1、问题及说明

查阅JPEG编码的有关资料,对图像进行JPEG压缩,算法步骤必须包括如下几个部分:图像分块,离散余弦变换,量化,ac和dc系数的Z字形编排。

在输入灰度图像时直接将样例中的彩色图像转为灰度图像,并输出相应的频谱图。

  • 质量因子分别选为20,60,80,对比显示原图与不同质量因子下解码后的图像
  • 记录图像大小、压缩比、均方根误差;对结果进行分析

2.效果展示

数字图像处理(八)图像压缩-有损压缩/压缩算法+matlab_第1张图片

3.结果分析

可以看到,对于同一张图片,不同的质量因子,有着不同的结果:

质量因子的增加,均方根误差在变小,压缩比也在变小,但是压缩后图像的大小在增加。

4、完整代码

clear;
close all;
factor = 20
I=imread('lena.tiff'); 
subplot(121);imshow(I);title('原图');
imwrite(I,'lena1.jpg','quality', factor); 
x1=imread('lena1.jpg');
k1=imfinfo('lena1.jpg')
s1=k1.FileSize/1024;
e1=I(:)-x1(:); 
[m1,n1]=size(e1);
erms1=sqrt(sum(e1(:)).^2/(m1*n1));%求均方根误差
i_size1=k1.Width*k1.Height*k1.BitDepth/8;
i_compress1=k1.FileSize;
ratio1=i_size1/i_compress1;
subplot(122);imshow(I);title('压缩后');
fprintf('质量因子:%d\n',factor);
fprintf('均方根误差:%f\n',erms1);
fprintf('压缩比:%f\n',ratio1);
fprintf('压缩后图像大小:%f\n',i_compress1);

 

你可能感兴趣的:(图像压缩,课程总结,图像处理,计算机视觉)