JPEG编码与解码的设计与实现(2)

2018-11-20 17:31

2. 压缩技术理论及原理算法介绍

图像编码技术的发展和广泛应用促进了许多有关国际标准的制定。这方面的工作主要是由国际标准化组织(International Standardization Organization,简称ISO),国际电子学委员会(International Electronics Committee,简称IEC)和国际电信联盟(International Telecommunication Union,简称ITU)进行的。上述3个国际组织于20世纪90年代领导制定了3个有关视频图像压缩编码的国际标准:JPEG标准,H.261标准,MPEG标准。本章将对Jpeg压缩技术理论及原理算法进行详细的介绍。 2.1. Jpeg压缩标准

Jpeg是联合图像专家小组(Joint Photographic Experts Group)的英文缩写,其中“联合”的含意是指国际电信电报咨询委员会(Consultative Committee of the International Telephone and Telegraph,简称CCITT)和国际标准化组织(IOS)联合组成的一个图像专家小组。联合图像专家小组多年来一直致力于标准化工作,他们开发研制出连续色调、多级灰度、静止图像的数字图像压缩编码方法,这个压缩编码方法就被称为JPEG算法。JPEG算法被确定为JPEG国际标准,它是国际上彩色、灰度、静止图像的第一个国际标准。JPEG标准是一个适用范围广泛的通用标准。它不仅适用于静止图像的压缩,也适用于电视图像序列的帧内图像的压缩。

JPEG的目的是为了给出一个适用于连续色图像的压缩方法,使之能满足以下要求: 达到或接近当前压缩比于图像保真度的技术水平,能覆盖一个较宽的图像质量等级范围,能达到“很好”到“极好”的评估,于原始图像相比,人的视觉难以区分。

能适用于任何种类的连续色调的图像,且长宽比都不受限制,同时也不受限于景物内容图像的复杂程度和统计特性等。

计算的复杂性是可以控制的。 JPEG算法,具有以下4种操作方式:

顺序编码:每一个图像分量按从左到右,从上到下扫描,一次扫描完成编码。 累进编码:图像编码在多次扫描中完成。累进编码传输时间长,接收端收到的图像是多次扫描由粗糙到清晰的累进过程。

无失真编码:无失真编码方法能保证解码后,完全精确地恢复源图像的采样值,其压缩比低于有失真压缩编码方法。

分层编码:图像在多个空间分辨率进行编码。在信息传送速率慢,接收端显示器分

4

辨率也不高的情况下,只需要做低分辨率图像解码。

和相同图像质量的其他常用文件格式(如GIF、TIFF、PCX)相比,JPEG是目前静态图像中压缩比最高的。下面我们给出了具体的数据来对比一下。我们采用Windows 95目录下的Clouds.bmp作为比较对像,原图大小为640×480、256色。用工具SEA(version 1.3)将其分别转成24位色BMP、24位色JPEG、GIF(只能转成256色)压缩格式、24位色TIFF压缩格式、24位色压缩格式,得到的文件大小(以字节位单位)依次为:921654、17707、177152、923044、768136。可见JPEG比其他几种文件格式压缩比要高得多,而图像质量却相差不多(JPEG处理的颜色只有真彩和灰度图)。

正是由于JPEG的高压缩比,使得它广泛地应用于多媒体和网络程序中,例如HTML语法中选用的图像格式之一就是JPEG(另一种是GIF)。

JPEG实际上定义了3种编码系统:

基于DCT的有损编码基本系统,适用于绝大多数压缩应用场合。 用于高压缩比高精确度或渐进重建应用的扩展编码系统。 用于无失真应用场合的无损系统。

每个编码解码器必须实现一个必备的基本系统(也称为基本顺序编码器)。基本系统必须合理地解压缩色彩图像,保持高压缩率并能处理从4bit/像素到16bit/像素的图像。在这一层次,JPEG标准应能确保JPEG标准的软件实现,定做的VLSI实现及DSP实现在成本上都是经济的。

扩展编码系统包括了各种的编码方式,如长度可变编码、渐进编码以及分层模式的编码。这些特殊用途的扩展可适用于各种应用。这些编码方法都是基本顺序编码方法的扩展。

特殊无损功能(也称作预测无损编码法)确保了在图像被压缩的分辨率下,解压缩没有造成初始源图像(即图像的数字化形式)中任何细节的损失。换句话说,在压缩和随后的解压缩过程中没有细节损失。很明显,在扫描过程中会有一些损失,因为扫描分辨率不十分合适于原始图像。例如,用400dpi扫描的彩色照片相当于分辨率是1200像素/英寸,它在扫描中会引起一些细节损失。但如果压缩方法忠实地复制了400dpi扫描的图像,它就被认为是无损的。[2]

这其中最常用的是基于DCT变换的顺序型模式,又称为基线系统(Baseline),本章将针对这种格式进行讨论。

5

2.2. Jpeg模型与算法流程

基本JPEG编码器和解码器(基于DCT)的结构如图2-1所示。如上所述,这种基本系统是有损的。他的算法流程大致如下:DCT函数通过把数据从空间域变换到频率域,从而去除数据的冗余度;量化器用加权函数来产生对人眼优化的量化DCT系数,同时熵编码器将量化DCT系数的炳最小化。简单的说,这种方法的目的在于:把大量的数据简化为较小的、真正有意义的数据,删除只带有极少视觉效果的信息,并且利用数据的空间特征性进一步压缩数据。

图2.1 基于JPEG编码器和解码器(基于DCT)的结构

基本JPEG的编码方法为顺序编码。其步骤是:首先,将图像分为8×8的像素块,根据从左到右,从上到下的光栅扫描方式进行排序(如图2-2所示)。DCT对8×8的像素块进行计算,再对64个DCT系数用均匀量化表进行标量量化,均匀量化表是依据心理听觉的实验得出的。这种均匀的标量量化表可以作为JPEG标准的一部分,但不是必须的。将DCT系数量化后,块中的系数再根据“Z”形扫描方式(如图2-3所示)排列,得到的比特流用行顺序编码生成中间的符号序列,然后这些符号经过Huffman编码用于传输或存储。

6

图2.2将图像分成8×的像数块 图2.3 “Z”行排列(Zig-Zag) 由上面的叙述可以得出,基于DCT编码的JPEG压缩算法可由如下几个步骤实现: 颜色模式转换及采样; 正向离散余弦变换(FDCT); 量化(Quantization); Z字形编码(Zigzag Scan);

使用差分脉冲编码调制(Differential Pulse Code Modulation,DPCM)对直流系数(DC)进行编码;

使用行程长度编码(Run-Length Encoding,RLE)对交流系数(AC)进行编码; 熵编码(Entropy Coding);

接下来的内容将对JPEG中的关键技术进行说明。 2.3. 离散余弦变换

离散余弦变换(Discrete Cosine Transform,简称DCT)是一种与傅立叶变换紧密相关的数学运算。在傅立叶激级数展开式中,如果被展开的是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。时间域中信号需要许多数据点来表示:在x轴表示时间,在y轴表示幅度。信号一旦用傅立叶变换转换到频率域,就只需要几个点就可以表示这个相同的信号。如我们已经看到的那样,原因就是信号只含有少量的频率成分。这允许在频率域中只用几个数据点就可以表示信号,而在时间域中表示则需要大量数据点。

这一技术可以应用到彩色图像上。彩色图像由像素组成,这些像素具有RGB彩色值。每个像素都带有x,y坐标,对每种原色使用8×8或者16×16矩阵。在灰度图像中像素具有灰度值,它的x,y坐标由灰色的幅度组成。为了在JPEG中压缩灰度图像,每个像素被翻译为亮度或灰度值。为了压缩RGB彩色图像,这项工作必须进行三遍,因为JPEG

7

分别地处理每个颜色成分,R(Red红)成分第一个被压缩,然后是G(Green绿)成分,最后是B(Blue蓝)成分。而一个8×8矩阵的64个值,每个值都带有各自的x,y坐标,这样我们就有了一种像素的三维表示法,称作空间表达式或空间域。通过DCT变换,空间表达式就转化为频谱表达式或频率域。从而到达了数据压缩的目的。

DCT是目前最佳的图像变换,它有很多优点。DCT是正交变换,它可以将8×8图像的空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT产生的系数很容易被量化,因此能获得好的块压缩;DCT算法的性能很好,它有快速算法,如采用快速傅立叶变换可以进行高效的运算,因此它在硬件和软件中都容易实现;而且DCT算法是对称的,所以利用逆DCT算法可以用来解压缩图像。

前面提到了,在JPEG压缩编码中,采用的是8×8的图像块,其原因有两个:计算量和像素之间关系的数量。许多研究已经表明,从统计学上平均来说,在15或20个像素之后,像素间的相关性开始降低。就是说,一列相似的像素通常会持续15到20个像素那么长。在此之后,像素就会改变幅度水平(或反向),我们就会选择一个16×16的块。但是,研究了一些实用的、采用现行技术的实用方法后,JPEG选择了一个8×8块作为现行标准。当然,随着硬件和软件技术的提高以及更大型矩阵变得越来越实用,这一标准也许会改变。

二维DCT正变换的公式如下(采用8×8的块):

?771(2i?1)u?(2j?1)v??F?u,v???C?u?C(v)???f?i,j?coscos?

41616?i?0j?0?DCT的逆变换采用下面的公式:

?771(2i?1)u?(2j?1)v??F?u,v???C?u?C(v)???F?u,v?coscos?

41616?i?0j?0?上面两式中

C(u),C(v)=1/2 (当u,v=0) C(u),C(v)=1 ( 其他情况 )

f(i,j)表示位于(i,j)坐标处的像素函数(如亮度等)。这样经过正变换所得到的结果就为DCT系数,我们把其中的F(0,0)称为直流系数(DC),而其他的则称为交流系数(AC)。二维的离散余弦变换核具有可分离特性,所以,其正变换核逆变换均

8


JPEG编码与解码的设计与实现(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:青岛版三年级上册平移与旋转备课

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: