资源描述:
《浅谈图像压缩算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、浅谈图像压缩算法余科亮本文仅讨论静止图像的压缩基本算法,图像压缩的0的在于以较少的数据來表示图像以节约存储费用,或者传输时间和费用。JPEG压缩算法可以用失真的压缩方式来处理图像,但失真的程度却是肉眼所无法辩认的。这也就是为什么JPEG会有如此满意的压缩比例的原因。下面主要讨论,JPEG基木压缩法。一.JPEG压缩过程JPEG压缩分四个步骤实现:1•颜色模式转换及采样;2.DCT变换;3•量化;4.编码。二・1・颜色模式转换及采样RGB色彩系统是我们最常用的表示颜色的方式。JPEG采用的是YCbCr色彩系统。想要用JPEG基本压缩法处理全彩色图像,
2、得先把RGB颜色模式图像数据,转换为YCbCr颜色模式的数据。Y代表亮度,Cb和Cr则代表色度、饱和度。通过下列计算公式可完成数据转换。Y=0.2990R+0.5870G+0.1140BCb=-O.1687R-0.3313G+0.5000B+128Cr=O.5000R-0.4187G-0.0813B+128人类的眼晴对低频的数据比对高频的数据具有更高的皱感度,事实上,人类的眼睛对亮度的改变也比对色彩的改变要敏感得多,也就是说Y成份的数据是比较重要的。既然Cb成份和Cr成份的数据比较相对不重要,就可以貝取部分数据来处理。以增加压缩的比例。JPEG通常
3、有两种采样方式:YUV411和YUV422,它们所代表的意义是Y、Cb和Cr三个成份的数据取样比例。2.DCT变换DCT变换的全称是离散余弦变换(DiscreteCosineTransform),是指将一组光强数据转换成频率数据,以便得知强度变化的情形。若对高频的数据做些修饰,再转回原来形式的数据时,显然与原始数据冇些差异,但是人类的眼睛却是不容易辨认出来。压缩时,将原始图像数据分成8*8数据单元矩阵,例如亮度值的第一个矩阵内容如下:JPEG将整个亮度矩阵与色度Cb矩阵,饱和度Cr矩阵,视为一个基木单元称作MCUo每个MCU所包含的矩阵数量不得超过
4、10个。例如,行和列采样的比例皆为4:2:2,则每个MCU将包含四个亮度矩阵,一个色度矩阵及一个饱和度矩阵。当图像数据分成一个8*8矩阵后,还必须将每个数值减去128,然后一一代入DCT变换公式中,即可达到DCT变换的目的。图像数据值必须减去128,是因为DCT转换公式所接受的数字范围是在-128到+127之间。DCT变换公式:x,y代表图像数据矩阵内某个数值的坐标位置f(x,y)代表图像数据矩阵内的数个数值u,v代表DCT变换后矩阵内某个数值的坐标位置F(u,v)代表DCT变换后矩阵内的某个数值u=0且v=0c(u)c(v)=l/l.414u>0
5、或v>0c(u)c(v)=l经过DCT变换后的矩阵数据自然数为频率系数,这些系数以F(0,0)的值最大,称为DC,其余的63个频率系数则多半是一些接近于0的止负浮点数,一概称之为AC。3、量化图像数据转换为频率系数后,还得接受一项量化程序,才能进入编码阶段。量化阶段需要两个8*8矩阵数据,一个是专门处理亮度的频率系数,另一个则是针对色度的频率系数,将频率系数除以量化矩阵的值,取得与商数最近的整数,即完成量化。当频率系数经过量化后,将频率系数由浮点数转变为整数,这才便于执行最后的编码。不过,经过量化阶段后,所有数据只保留整数近似值,也就再度损失了一些
6、数据内容,JPEG提供的量化表如下:4、编码Huffman编码无专利权问题,成为JPEG最常用的编码方式‘Huffman编码通常是以完整的MCU来进行的。编码时,每个矩阵数据的DC值与63个AC值,将分别使用不同的Huffman编码表,而亮度与色度也需要不同的Huffman编码表,所以一共需耍四个编码表,才能顺利地完成JPEG编码工作。DC编码DC是彩采用差值脉冲编码调制的差值编码法,也就是在同一个图像分量中取得每个DC值与前一个DC值的差值來编码。DC采用差值脉冲编码的主要原因是由于在连续色调的图像屮,其差值多半比原值小,对差值进行编码所需的位数
7、,会比对原值进行编码所需的位数少许多。例如差值为5,它的二进制表示值为101,如果差值为-5,则先改为正整数5,再将其二进制转换成1的补数即可。所谓1的补数,就是将每个Bit若值为0,便改成1;Bit为1,则变成0。差值5应保留的位数为3,下农即列出差值所应保留的BiI数与差值内容的对照。在差值前端另外加入一些差值的霍夫曼码值,例如亮度差值为5(101)的位数为3,则霍夫曼码值应该是100,两者连接在一起即为10010L下列两份表格分别是亮度和色度DC井值的编码表。根据这两份表榕内容,即可为DC并值加上霍夫曼码值,完成DC的编码工作。AC编码AC编
8、码方式与DC略有不同,在AC编码之前,首先得将63个AC值按Zig-zag排序,即按照下图箭头所指示的顺序出联起来。63个