一、实验目的和要求
1、了解有关数字图像压缩的基本概念,了解几种常用的图像压缩编码方式;
2、进一步熟悉JPEG编码与离散余弦变换(DCT)变换的原理及含义;
3、掌握编程实现离散余弦变换(DCT)变换及JPEG编码的方法;
二、实验内容简介
1、基本概念
2、无损图像压缩编码
3、有损图像压缩编码
4、图像压缩标准
三、实验步骤
1、使用matlab的DPCM函数对锯齿波信号进行编解
2、 对彩色图像进行DPCM编码
3、 对一维序列进行dct变换,并计算变换后多少个元素能量占全部的99%
4、对图像进行DCT变换,并通过DCT逆变换矩阵相关系数置零实现对图像的压缩
可以查看压缩前后的文件属性
5、对图像进行小波分解和重构
四、实验心得
1、通过本次实验,学习了有损和无损图像压缩编码,无损压缩:在压缩和解压过程中没有信息损失;有损压缩:解压后图像不能恢复原状。
首先学习了霍夫曼编码,它是一种无损图像压缩编码,了解了它的基本步骤:
(1)将所有符号按照出现概率大小降序排列;
(2)从概率最小的两个符号开始,分别配以0和1两种码元(注意顺序会影响编码结果,也可以反过来)。然后将这两个符号概率相加继续和未编码的符号进行码元分配。
(3)按照码元分配顺序,像这样从下往上,直到分配到第一行符号概率最大,也必然为0)。
(4)最后,从上往下读取编码后的结果,即为哈夫曼编码。
2、其次学习了有损图像压缩编码,有以下这些:
(1)DPCM编码:
DPCM,个人理解就是用前一个像素(左边或者上边)来作为下一个像素值的预测值,而一个像素存储值的就会变成预测值与当前实际值的差值。经过DPCM编码,可以提高数据所占的比特数,降低所占内存,从而提高传输效率。但因为DPCM编码为有损编码,在进行量化的过程中会引入量化误差,因此相较于原图像,其图像质量会有所下降。
(2)离散余弦变换编码(DCT):
只使用余弦函数来表达信号,与傅里叶变换紧密相关。在图像数据的压缩中,通过将图像分成大小相等(一般为8*8)的块,利用DCT对其进行变换,得到更加简洁的数据。
dct()一维DCT变换;dct2() 二维DCT变换;idct2() 二维DCT逆变换
利用DCT对图像进行有损编码的主要步骤为:
①将输入图像分解为8×8的块;
②对每个块进行二维DCT变换;
③将图像变换到频域;
④ 每个块只保留部分DCT的系数(可分别保留1,5,10,30和64个系数);
⑤进行DCT反变换的滤波图像。
(3)小波变换:
小波变换用于图像压缩的基本思想就是根据二维小波分解算法,将一幅图像做小波分解,可得到一系列不同分辨率的图像。表现一幅图像最主要的部分是低频部分,而水平、垂直和对角线部分表征了原图像的边缘信息,具有明显的方向特性。低频部分可以称为亮度图像,水平、垂直和对角线部分可以称为细节图像。如果去掉图像的高频部分,保留低频部分,再根据人类的视觉生理和心理特点分别作不同策略的量化和编码处理,则可以达到图像压缩的目的。
用到的函数:
①wcompress()——使用小波对灰度或彩色图像进行压缩或解压缩;
②dwt2():单级离散二维小波变换
[cA,cH,cV,cD]=dwt2(X,'wname')——进行二维小波变换,计算近似互相关矩阵cA和水平、垂直、对角方向的互相关矩阵cH、cV、cD。
③wdencmp():对一维或二维信号使用小波进行降噪或压缩。