资源预览内容
第1页 / 共85页
第2页 / 共85页
第3页 / 共85页
第4页 / 共85页
第5页 / 共85页
第6页 / 共85页
第7页 / 共85页
第8页 / 共85页
第9页 / 共85页
第10页 / 共85页
亲,该文档总共85页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第3章 多媒体数据压缩,本章重点多媒体数据量巨大,如果不进行压缩,是无法在计算机中存储和传输的,也无法在多媒体信息系统中处理。几十年来,人们已经研究了许多种数据压缩的方法。在多媒体信息系统中,为了达到令人满意的图象、视频画面和听觉效果,必须解决视频、图象、音频信号数据的大容量存储和实时传输问题。数字化了的视频、音频信号的数据量是非常大的,如果不进行处理,计算机系统几乎对它进行存取和交换。另一方面,视频、音频这些媒体确实又具有很大压缩能力,数据冗余很大。因此,在允许一定限度失真的前提下,能够对图象进行很大程度的压缩。,本章重点数据压缩技术的性能指标 数据冗余的类型与解压方法分类 常用数据压缩方法的基本原理,3.1 数据压缩技术的性能指标,评价一种数据压缩技术的性能好坏主要有3个关键的指标:压缩比、图象质量、压缩和解压的速度。除此之外还要考虑压缩算法所需的软件和硬件。压缩性能能常常用压缩比来定义,也就是压缩过程中输入数据量和输出数据量之比,希望压缩比尽量地大。在实际应用中一种更好的定义是压缩比特流中每个像素所需的比特数,即bpp。第二个指标是图象质量,这与压缩的类型有关。压缩方法可以分为无损压缩和有损压缩。无损压缩是指压缩和解压过程中没有损失原始图象信息,所以对无损系统不必担心图象的质量。有损压缩则要对原始图形做一些改变,这样压缩前后图象不完全相同,但人眼难以察觉,对有损压缩结果的评价分为主观评分和客观尺度两种。主观评分是建立在人眼对图象的视觉感观上的,其分值在15之间。,3.1 数据压缩技术的性能指标,3.1 数据压缩技术的性能指标(2),而客观尺度通常有以下几种。 均方误差: 峰值信噪比:第三个指标是压缩速度,希望压缩速度要快。在许多应用中,压缩和解压将在不同的时间、不同的地点、不同的系统中进行。因而必须分别评价压缩和解压速度。在静态图象中,压缩速度没有解压速度要求严格,处理速度只需比用户忍受的速度快一点即可。但动态视频的压缩与解压缩,速度问题是至观重要的。动态视频为保证帧间动作变化的连惯要求,必须有较高的帧速。对于大多数情况,至少来说要每秒15帧。而全动态视频则要求是2530帧/秒。在电话线上传送视频,因为受到线路传输速率的限制,帧速率没那么高,但也要达到每秒5帧以上,否则动态图象就会产生跳动感。,3.2.1 数据冗余的类型一般而言,图象视频、音频数据中存在的数据冗余类型主要有以下一些。 (1)空间冗余在同一幅图象中,规则物体和规则背景的表面物理特性具有相关性,这些相关性的光成结果在数字化图象中就表现为数据冗余。 (2)时间冗余时间冗余反映在图象序列中就是相邻帧图象之间有较大的相关性,一幅图象中的某些物体或场景可以由其他帧图象中的物体或场景重构出来。音频的前后值之间也同样有时间冗余。,32 数据冗余的类型与解压方法分类,(3)信息熵冗余离散随机变量X的信息熵就是其概率空间中每个事件所含有的自信息量的数学期望,为以下公式所示:信源编码时,当分配给第I个码元类的比特数b(yi)=-lgpi时,才能使编码后单位数据量等于其信息熵,既达到其压缩极限。但实际中各码元类的先验概率很难预知,比特分配不能达到最佳。实际单位数据量dH(s),即存在信息冗余熵。 (4)视觉冗余人眼对于图象场的注意是非均匀的,人眼并不能觉察图形场的所有变化。事实上人类视觉的一般分辨能力为26灰度等级,而一般图形的量化采用的是28灰度等级,即存在视觉冗余。,3.2.1 数据冗余的类型,(5)听觉冗余人耳对不同频率的声音的敏感性是不同的,并不能觉察所有的变化,对某些频率不比特别 关注,因此存在听觉冗余。 (6) 其他冗余包括结构冗余、知识冗余。,3.2.1 数据冗余的类型,针对多媒体数据冗余类型的不同,相应地有不同的压缩方法。根据解码后的数据与原始数据是否一致进行分类,压缩方法可被分为有失真编码和无失真编码两大类。在此基础上根据编码原理进行分类,大致有:预测编码就、变换编码、统计编码、分析合成编码、混合编码和其他一些编码方法。其中统计编码是无失真的编码,其他编码方法基本上都是有失真的编码。有失真压缩法压缩了熵,会减少信息量,而损失的信息是不能再恢复的,因此这种压缩法是不可逆的过程。有失真压缩去掉或减少了数据中的冗余,但这些冗余值是可以重新插入到数据中的,因此冗余压缩是可逆的过程。有失真压缩法的冗余压缩取决于初始信号的类型、前后的相关性、信号的语义等内容。,3.2.2 数据压缩方法分类,由于允许一定程度的失真,可用于对图形、声音、动态视频等数据的压缩。如采用混合编码的JPEG标准,它对自然景物的灰度图象,一般可压缩到几倍到几十倍,而对于自然景物的彩色图象,压缩比将达到几十倍甚至上百倍。采用ADPCM编码的声音数据,压缩比也能作到4:18:1。压缩比最为可观的是动态视频数据,采用混合编码的DVI多媒体系统,压缩比通常可达50:1100:1。无失真压缩法不会产生会失真,从信息语义角度讲,无失真编码是泛指那种不考虑压缩性质的编码和压缩技术,它是基于平均信息量的技术,并把所有的数据当作比特序列,而不是根据压缩信息的类型来优化压缩。也就是说,平均信息量编码忽略被压缩信息语义内容。在多媒体技术中一般用于文本、数据的压缩,它能保证百分之百地恢复原始数据。但这种方法压缩比较低,如LZW编码、行程编码、huffman编码的压缩比一般在2:15:1之间。,3.2.2 数据压缩方法分类,统计编码 预测编码 变化编码 分析合成编码,33 常用数据压缩方法的基本原理,3.3.1 统计编码,统计编码包括行程编码、LZW编码、huffman编码等,属于无失真编码。它是根据信息出现的概率的分布特性而进行的压缩编码。其方法是:识别一个给定的数据流中出现概率最高的比特或字节模式,并用比原始比特更少的比特数来对其进行编码:也就是说,出现的概率越低的模式,其编码的位数就越多,出现概率越高的模式编码的位数就越少。如果码流中所有模式出现的概率相等,则平均信息量就越大,信源没有冗余。这种编码的宗旨在于,在消息和码字之间找到明确的一一对应关系,以便在恢复时能准确无误地再现出来,并总是要使平均码长或码率压低到最低限度。,3.3.1 统计编码(1),行程编码 LZW编码 Huffman编码,3.3.1 统计编码(2),1.行程编码 行程编码是最简单、最古老的压缩技术之一,主要技术是检测重复的比特或字符序列,并用他们出现次数而取代之。它计算信源符号出现的行程长度,然后将行程转换成代码。它基于简单的编码数据原则,这个原则就是,重复的数据值序列(或称为“流”)用一个重复次数和单个数据值来代替。这里,重复的值称为一个“连续”(run)。实际应用时,采用多种形式的RLE编码。一种常用的格式是由一个控制符、一个重复次数字节和一个被重复的字符构成的3字节码词,如图所示。,3.3.1 统计编码(3),1.行程编码 例如,字符串RTAAAASDEEEEE经RLE压缩后为:RT*4ASD*5E 在这里,”*4A” 代替了流”AAAA”,”*5E” 代替”EEEEE”。其中,控制符采用特殊字符* 指出一个RLE编码的开始,后面的数字表示重复的次数,数字后的单个字符是被重复的字符。显然,重复字符数为4或大于4,RLE编码效率才高,因为一个重复至少需要3个符号来表示。假定对一个文件的数据进行RLE编码,下图是RLE编码流程图。开始时将字符记数器(ChCounter)和重复记数器(RepCount)初始化。当前待处理的字符存于变量(Ch)。如果所有字符都处理完(Ch=EOF),则结束。如果这儿还有字符待处理,则将Ch存放在临时变量ChTmp中(如果RepCount等于1的话);否则,将该字符与前一个字符相比较,比较的结果可能使重复记数器加一,或导致另一比较,看相继的重复字符数是否大于或等于4,以决定是进行RLE编码,或是简单地复制.。,3.3.1 统计编码(4),1.行程编码,3.3.1 统计编码(5),2. LZW编码 LZW算法在压缩文本和程序数据的压缩技术唱主角,原因之一在于它的压缩率高。在无失真压缩法中,LZW的压缩率是出来拔翠的。另一个重要的特点是LZW压缩处理所化费的时间较少。在进行LZW编码时,首先将原始的数据分成多个条纹,每个条纹都单独进行压缩。条纹大小的选择依据机器的内存而定,一般大约包含8KB。这样压缩的和没压缩的条纹都能保留在内存中,且又能接近最优的压缩比。,LZW算法的编码过程用类C语言描述如下:1LZW编码算法 InitalizeStringTable(); WriteCode(Clearcode); Q=the empty string; For each character in the strip K=GetNextCharacter();If Q+K is in the string table Q=Q+k; /字符串连接/ Else WriteCode(CodeFromString(Q); AddTableEntry(Q+K); Q=K; /循环结束/ WriteCode(CodeFromString(Q); WriteCode(EndOfInformation);,算法说明: InitalizeStringTable();初始化字符串表,它包含所有可能的单字符串,由于使用的字符是字节,共256个。 WriteCode;写一个代码到输出流; AddTableEntry;增加一个表项;,举例:输入一个字符串数据777887766,所以输出结果如下: 7 258 8 8 258 6 6,LZW算法的编码过程用类C语言描述如下:1LZW解码算法 While(Code=GetNextCode()!=EoiCode) if(code=clearcode)InitializeTable();Code=GetNextcode();If(Code=EoiCode)Break;WriteString(StringFromCode(Code);OldCode=Code;/清零代码的处理/else if(IsInTable(Code)WriteString(StringFromCode(Code);AddStringToTable(StringFromCode(OldCode)+FirstChar(stringFromCode(Code); OldCode=Code; else,OutString=StringFromCode(OldCode)+FirstChar(StringFromCode(OldCode); WriteString=(OutString); AddStringToTable(OutString); OldCode=Code; /非清零代码处理 /while循环结束/,所以输出结果如下: 777887766,3.3.1 统计编码(6),3. Huffman编码 Huffman于1952年提出了对统计独立信源能达到最小平均码长的编码方法,即最佳码,它完全依据字符出现概率来构造,各码字长度严格按照所对应符号出现概率的大小逆序排列。最佳性可从理论上证明。这种码具有即时性和唯一可译性。编码时,首先将信源符号按概率递减顺序排列,把两个最小的概率加起来,作为新符号的概率,重复此过程,直到概率和达到1,3.3.1 统计编码(7),3. Huffman编码 Huffman编码过程如下: 1.将信源符号按概率递减顺序排序; 2.把二个最小的概率加起来,作为新符号的概率; 3.重复步骤1、2,直到概率达到1为止; 4.在每次合并消息时,将合被合并的消息赋于1和0或0和1; 5.寻找从每一个信源符号到概率为1处的路径上的1和0; 6.对每一符号写出1、0序列(从码书的根到终节点);,3.3.2 预测编码(1),预测编码是根据原始的离散信号之间存在着一定关联性的特点。利用前面的一个或多个信号对下一个信号进行预测,然后将实际值和预测值的差(预测误差)进行编码。如果预测比较准确,那么误差信号就会很小。这样一来,在同等精度要求的条件下,就可以用比较少的数码进行编码,达到数据压缩的目的。两种典型的预测编码是DPCM和ADPCM,他们比较适合于声音、图象数据的压缩。因为这些数据均由采样得到,相邻样值之间不会相差很大,可以用较少的位来表示差值。由于在对差值编码时进行了量化,因此预测编码是一种有失真编码方法。 DPCM编码 ADPCM编码,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号