MATLAB实现JPEG标准下的静态图像压缩
- 格式:docx
- 大小:71.56 KB
- 文档页数:6
MATLAB实现JPEG标准下的静态图像压
缩
1引言
众所周知,原始图像数据会占用大量的存储空间,对于需要大量存储和传输图像的应用领域,需要有效的方法来存储及传输这些图像文件。因此,对图像信息进行一定的压缩处理成为一个不可或缺的重要环节。
图像数据压缩是指在满足一定图像质量的情况下,用尽可能少的数据量来表示图像。通常情况下,图像中含有大量的冗余信息,图像压缩的目的就是通过消除这种冗余性,减少图像的存储空间,即保留不确定的信息,去掉确定的信息,也就是用一种更接近信息本质的描述来代替原有冗余的描述。
2图像数据压缩系统
2.1图像数据压缩系统的组成
典型的图像数据压缩系统的组成如下:
(1)变换器
由于图像中大量冗余信息的存在,去除图像相关性是提高编码效率的一个很重要的步骤。变换器是无损变换过程,变换后的图像可以无失真恢复原始图像。
(2)量化器
生成一组有限个离散符号来表示压缩的图像。量化过程是一个幅值离散的过程,它是不可逆的,也是有损耗的。
(3)编码器
给量化器输出的每个符号指定一个码字,即二进制位流。编码器可
以使用定长编码或变长编码,变长编码又称为熵编码。图像符号的编码过程和变
换过程一样是无损耗的,即编码和解码过程是可逆过程。
2.2图像压缩系统评价
不同的图像压缩系统,由于其应用环境与处理目标不尽相同,因此
系统结构和具体算法的选择是千变万化的。为了对图像系统的性能有一个统一和
全面的评价,我们通常从恢复图像质量,压缩率,算法复杂度以及通信时延几个
方面来考察一个图像处理系统的压缩效果和可实现性及实用性。
压缩比就是原始图像大小与采用某种算法压缩后的图像大小的比值。恢复图像的高质量与高压缩比总是一对矛盾,因此这一对矛盾解决得好坏就成了
评判压缩算法优劣的重要标准。
3 JPEG标准
由国际标准化组织(ISO/IEC)与国际电报电话咨询委员会(CCITT)联合发起的联合图像专家组,在图像编码研究成果的基础上于20世纪
90年代初制定了静止图像的编码标准,简称JPEG(Joint Photographic Expert Group)标准[1]。 JPEG标准在较低的计算
复杂度下,能提供较高的压缩比与保真度。JPEG压缩技术用有损压缩方式去除冗
余的图像数据,在获得高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。而且 JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多
种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;
相反地,压缩比越小,品质就越好。
JPEG中有四种工作模式,包括顺序型DCT方式、渐进型DCT方式、
无失真方式、分层方式。其中最常用的是离散余弦变换(DCT)的顺序型模式,又
称为基本系统(Baseline System)[2-3]。下面针对这种模式来进行分析。
在DCT顺序工作模式中进行JPEG编码时,对原始图像的每一个分量
首先分割成互不重叠的8×8像素块,然后对每个像素块的编码过程可分为二维DCT变换,量化,熵编码三个阶段。
3.1二维离散余弦变换(DCT)
因为DCT算法输出图像的视觉效果相当好,通过它压缩后图像与原
图像的视觉效果几乎一样,所以本文重点讨论DCT算法。
根据图像信号的特点,对图像块进行二维DCT变换可以消除像素间
的相关性。自然图像的像素块经过DCT变换后,图像信号的能量主要集中到块的
左上角。即图像的低频成分中。
在编码器中,8×8像素取样经过FDCT(正向离散余弦变换)成为8×8
的DCT系数阵列。这些系数经过8×8的量化矩阵量化后,再经过系数到代码的
转换成为一系列信息保持转换的代码。在解码器中,那些DCT系数经过与和编码
器同级别的反量化,再经过IDCT(反离散余弦变化)将8×8的DCT阵列转换成
8×8的像素取样值[4]。
3.2量化
DCT变换后得到的系数矩阵中包括左上角的一个直流(DC)系数与
63个交流(AC)系数,从左到右,水平频率增高,从上到下竖直频率增高。接着
对DCT系数量化,再用Z(Zig_Zag)字形扫描变换系数矩阵转换成一维数列。在JPEG算法中,对于8×8的色度块和亮度块,分别给出了推荐使用的量化表,这
两个量化表是在大量实验的基础上,并结合人眼的视觉特性获得的。现给出如下,其中,Q1为亮度量化表,Q2为色度量化表。
Q1 =[ 16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99 ]
Q2=[ 17 18 24 47 99 99 99 99
18 21 26 66 99 99 99 99
24 26 56 99 99 99 99 99
47 66 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99]
3.3编解码过程
在JPEG中,对直流(DC)系数使用差分编码,即对同一分量内相邻块的DC系数之差做Huffman编码。对于交流(AC)系数,首先进行游程编码,然后再进行Huffman编码会有效的压缩数据量。
编码过程中使用了JPEG对亮度处理提供的默认的编码表和证明过的量化矩阵。在解码过程中,由于一个Huffman编码的二值序列具有瞬时性并且其解码具有唯一性,所以用查表方式就可以实现的Huffman解码,然后进行反Zig_Zag扫描,反量化及反DCT变换,重建图像。过程中采用与编码时相同的量化表和熵编码表。
4程序说明