书城社科数字技术与新媒体传播
13835000000040

第40章 数字图像传播(2)

(3)视频压缩的基本概念

以压缩/解压后的数据与压缩前原始数据是否完全一致作为衡量标准,可将数据压缩划分为无损压缩、有损压缩和混合压缩三种。

无损压缩:无损压缩是对文件的数据存储方式进行优化,采用某种算法表示重复的数据信息,文件可以完全还原,不会影响文件内容,对于数字图像来说,也就不会使图像细节有任何损失。由于无损压缩只是对数据本身进行优化,所以压缩比(压缩前的数据量与压缩后的数据量之比)有限。

常用的无损压缩编码算法有哈夫曼编码、算术编码、行程编码等。

有损压缩:有损压缩是对图像本身的改变。如图像色彩用HSB色系表示时有三个要素:亮度(B)、色相(H)和饱和度(S),而人眼对亮度的敏感程度远远高于其他二者,也就是说,只要亮度不变,稍微改变色相和饱和度,人们难以察觉。

因为有损压缩不能完全还原原始信息,所以打开压缩过的图片再次存储,损失会累积,图像质量会进一步下降。

常用的有损压缩编码算法有预测编码:差分编码、运动补偿;频率域方法:正交变换编码(如DCT)、子带编码;空间域方法:统计分块编码;模型方法:分形编码、模型基编码等。

混合编码:即同时采用两种或两种以上的编码方法混合进行的编码。混合编码可以根据实际需要充分发挥不同编码方法的优点,不但可以获得更大的压缩比和更优的图像质量,而且可以降低计算复杂度和提高抗干扰力。目前的图像编码标准方案(如JPEG和MPEG等),几乎都采用多种不同的编码方法进行混合编码。

2.压缩编码算法的研究进展

(1)第一代视频压缩编码技术

视频压缩编码技术的发展历程是以香农信息论为出发点,不断改进、不断完善的过程。第一代视频编码技术仅考虑图像及图像序列中的空间冗余、时间冗余和信息熵冗余,其编码方法主要以像素或像素块作为编码实体,没有或较少考虑信息接收者的主观特性和人类视觉系统,因而只能去除数据冗余,属于低层压缩编码的范畴。第一代视频压缩编码技术主要有信息熵编码、预测编码、变换编码、矢量量化编码、子带——小波编码、神经网络编码等方法。

(2)第二代视频压缩编码技术

20世纪80年代后期,图像分析和合成、计算机图形学、计算机视觉等相关学科的迅速发展及新兴学科的不断出现,为视频压缩编码的发展注入了活力,同时关于人类视觉生理/心理特性的研究也大大拓宽了人们的视野,第二代视频编码技术随之诞生,并且不断成熟。其编码思想由基于像素和像素块转变为基于内容(Content—based)。

它突破了香农信息论框架的束缚,充分考虑了人眼视觉特性及信源特性,通过去除内容冗余来实现数据压缩。具体编码技术又可分为基于对象(object-based)和基于语义(Semantics—based)两种,前者属于中层压缩编码的范畴,后者属于高层压缩编码的范畴。

第二代视频压缩编码技术属于模型编码方式,是由轮廓——纹理的思路发展而来,主要有基于方向滤波的图像编码法、基于图像轮廓——纹理编码方法、分形编码方法、基于模型的编码方法等等,许多编码技术还有待于进一步的研究和探索,是目前比较活跃的研究领域。

3.常用压缩编码算法简介

在数据压缩编码过程中涉及较深的数学理论基础问题,本节仅介绍几种常用的压缩编码方法,主要是从物理意义上作一定的解释。

(1)熵编码

在信息论中,信源X中目标xi(i=1,2,…,n)的信息量I(xi)被定义为I(xi)=-log2p(xi),式中p(xi)为xi(i=1,2,…,n)出现的概率。信息的熵H(X)就是信源X中所有目标的平均信息量,即H(X)=-Σn[j=]1p(xi)log2p(xi)。

熵编码以信息熵原理为基础,把数据中出现概率大的码元用短的码元表示,即占用较少的比特数(二进制位数);把数据中出现概率小的码元用长的码元表示,即占用较大的比特数(二进制位数)。这样能大大地压缩数据量。

熵编码是一种无损编码,常用的有哈夫曼编码、LZW编码、行程编码和算术编码等。

A.哈夫曼(Huffman)编码

哈夫曼编码是一种常用的压缩编码方法,是Huffman于1952年为压缩文本文件建立的。基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同,这些代码都是二进制码,且码的长度是可变的。例如,一个文件中出现了8种符号A0、A1、A2、A3、A4、A5、A6、A7,那么要编码至少需要3比特。假设分别编码成000、001、010、011、100、101、110、111(称作码字)。那么符号序列A0A1A7A0A1A6A2A2A3A4A5A0A0A1编码后变成000001111000001110010010011100101000000001,共用了42比特。实际上,在符号序列中A0、A1、A2这三个符号出现的频率比较大,其他符号出现的频率比较小,如果我们采用一种编码方案使得A0、A1、A2的码字短,其他符号的码字长,这样就能够减少总比特数。例如我们采用这样的编码方案:A0到A7的码字分别表示为:01、11、101、0000、0001、0010、0011、100(这个编码不能随意乱写,编码必须保证不能出现一个码字和另一个的前几位相同的情况,比如说,如果A0的码字为01,A2的码字为011,那么当序列中出现011时,就不知道是A0的码字后面跟了个1,还是完整的一个A2的码字),那么上述符号序列变成011110001110011101101000000010010010111,共用了39比特,尽管有些码字如A3、A4、A5、A6变长了,但使用频繁的几个码字变短了,最终实现了压缩。

具体的Huffman编码算法是:先按出现的概率大小排队,把两个最小的概率相加,作为新的概率和剩余的概率重新排队,再把最小的两个概率相加,再重新排队,直到最后变成1。每次相加时都将“0”和“1”赋予相加的两个概率,读出时由该符号开始一直走到最后的“1”,将路线上所遇到的“0”和“1”按最低位到最高位的顺序排好,就是该符号的霍夫曼编码。产生Huffman编码需要对原始数据扫描两遍。第一遍扫描要精确地统计出原始数据中每个值出现的频率,第二遍是建立Huffman树并进行编码。由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效,因而得到广泛应用。

B.行程编码

行程编码又称“运行长度编码”或“游程长度编码”,属于无损压缩编码。行程编码的原理是:将一行中颜色值相同的相邻像素用一个计数值和该颜色值来代替。例如aaabccccccddeee可以表示为3a1b6c2d3e。

视频图像中经常出现一连串连续的像素点具有相同值的情况,例如彩条、彩场信号,就不必把所有像素存储,只需传送起始像素点的值及随后取相同值的像素点的个数,这种情况下压缩比是惊人的。

该算法也有一个致命弱点,如果图像中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。所以单纯采用行程编码的压缩算法用得并不多,主要用于对量化后的DCT系数进行编码。

C.LZW算法

LZW是一种比较复杂的压缩算法,其压缩效率也比较高。它的基本原理是:LZW把每一个第一次出现的字符串用一个数值来编码,在还原程序中再将这个数值还成原来的字符串。例如:用数值0100代替字符串“abccddeee”,每当出现该字符串时,都用0100代替,这样就起到了压缩的作用。至于0100与字符串的对应关系则是在压缩过程中动态生成的。LZW是无损的,GIF文件采用了这种压缩算法。LZW算法由Unisys公司在美国申请了专利,要使用它首先要获得该公司的许可。

(2)差分编码和预测编码

差分编码和预测编码是用于消除统计冗余而设计的压缩编码方法。差分编码是指不传送像素本身的值而是传送该像素值与前一像素值(或前一帧对应像素值)的差值,去除相邻像素之间的相关性和冗余性,只对新的信息进行编码,从而有效压缩数据。例如,因为像素的灰度是连续的,所以在一片区域中,相邻像素之间灰度值的差别可能很小。如果我们只记录第一个像素的灰度,其他像素的灰度都用它与前一个像素灰度之差来表示,就能起到压缩的目的。

由差分编码进一步发展起来的预测编码,是根据一定规则先预测出下一个像素或图像子块的值,然后将此预测值与实际值的差值传送给接收端。由于差值的数据量低于原图像的数据量,因而能实现图像数据压缩。常用的预测编码有Δ调制(Delta Modulation,简称DM)、线性预测编码(Differential Pulse Code Modulation,DPCM)等。

预测编码的基本思想是:

模型利用以往的样本数据对下一个新的样本值进行预测

将预测所得的值与实际值的差值进行编码由于差值很小,可以减少编码的位数。

帧内预测编码对噪声和误码很敏感,并且压缩比较低。目前预测编码主要应用帧间预测编码,一般有5种编码方式:帧重复法、帧内插法、阈值法、运动补偿法、自适应法。

(3)变换编码与离散余弦变换(在JPEG部分重点介绍)

变换编码的基本思路是:将在空间域里描述的图像,经过某种数学变换后(通常采用正交变换,如傅立叶变换,沃尔什变换等),产生一组变换系数,再对这些系数进行量化、编码以实现压缩。一般来说,在变换域里描述要比空间域里简单,而且图像相关性明显下降,这样变换本身就能实现编码率的压缩。若再对变换域图像进行某种处理(如频域中的二维滤波)以及熵编码,则可进一步压缩图像的编码比特率。对变换处理后的图像信号施以上述对应的逆变换,即可获得空间域图像。

离散余弦变换(Discrete cosine Transform,DCT)就是一种变换编码,其变换原理涉及到数学知识。从频域观点分析,意味着图像信号的能量主要集中在低频附近,高频信号的能量随频率的增加而迅速衰减。DCT通过频域变换,可以将原图像信号用直流分量及少数低频交流分量的系数来表示,而将部分高频分量滤除,由于大多数图像的高频分量较小,加上人眼对高频成分和色度成分的失真不太敏感,所以可以对高频数据和色彩数据作更粗的量化,因此表示变换系数所用的数据量要大大小于表示图像像素所用的数据量。解压缩时再通过反离散余弦变换回到样值,虽然有一定失真,但人眼是可以接受的。

DCT变换编码的计算复杂度适中,又具有可分离特性,还有快速算法等特点,所以在图像数据压缩中,采用离散余弦变换编码的方案很多,特别是90年代迅速崛起的计算机多媒体技术中,JPEG、MPEG、H.261国际等压缩标准,都用到离散余弦变换编码方法。

4.衡量压缩编码方法优劣的重要指标

衡量一个压缩编码方法优劣主要有三个指标:

首先,压缩比要高,有几倍、几十倍的,也有几百乃至几千倍压缩比的编码算法;其次,压缩与解压缩要快,算法要简单,硬件实现容易;最后,解压缩的图像质量要好。

常用的压缩工具有ZIP、RAR、ARJ以及LHA等很多种,但在JPEG压缩标准出现前,传统的压缩算法在处理图像和视频方面都没有取得根本性突破。