笫5章-数据压缩..ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《笫5章-数据压缩..ppt》由会员分享,可在线阅读,更多相关《笫5章-数据压缩..ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章 数据压缩数据压缩概述n由于多媒体数据量非常大,造成计算机的存储和网络传输负担若帧速率为25帧秒,则1s的数据量大约为25MB,一个640MB的光盘只能存放大约25s的动态图像一幅640480分辨率的24位真彩色图像的数据量约为900KB;一个100MB的硬盘只能存储约100幅静止图像画面n解决办法之一就是进行数据压缩数据压缩,压缩后再进行存储和传输,到需要时再解压、还原。以目前常用的位图格式的图像存储方式为例,像素与像素之间无论是在行方向还是在列方向都具有很大的相关性,因而整体上数据的冗余度冗余度很大,在允许一定限度失真的前提下,能够对图像数据进行很大程度的压缩。n数据压缩方法无损压缩
2、:无损压缩:n利用数据的统计冗余进行压缩,可完全恢复原始数据利用数据的统计冗余进行压缩,可完全恢复原始数据而不引入任何失真,但压缩率受到统计冗余度理论限而不引入任何失真,但压缩率受到统计冗余度理论限制,一般为制,一般为2:1到到5:1。n多媒体应用中经常使用的无损压缩方法主要是基于统多媒体应用中经常使用的无损压缩方法主要是基于统计的编码方案,如游程编码计的编码方案,如游程编码(run length)、Huffman编编码、算术编码和码、算术编码和LZW编码等等。编码等等。n常用工具:常用工具:WinRar、WinZip、ARC等等 n数据压缩方法有损压缩:有损压缩:n利用了人类视觉和听觉器官对
3、图像或声音中的某些频利用了人类视觉和听觉器官对图像或声音中的某些频率成分不敏感的特性,允许在压缩过程中损失一定的率成分不敏感的特性,允许在压缩过程中损失一定的信息;虽然不能完全恢复原始数据,但是所损失的部信息;虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像或声音的影响较小,却换来了大得分对理解原始图像或声音的影响较小,却换来了大得多的压缩比。有损压缩广泛应用于语音、图像和视频多的压缩比。有损压缩广泛应用于语音、图像和视频数据的压缩。数据的压缩。n常用的有损压缩方法有:常用的有损压缩方法有:PCM(脉冲编码调制脉冲编码调制)、预测、预测编码、变换编码编码、变换编码(主要是离散余弦变换方
4、法主要是离散余弦变换方法)、插值和、插值和外推法外推法(空域亚采样、时域亚采样、自适应空域亚采样、时域亚采样、自适应)等等。等等。n常用工具:常用工具:JPEG、MPEG等等 5.25.2 频率相关编码 在ASII文档中,各个字符出现的频率通常是不一样的,如经过大量的实验统计得知:英语中最常用的字母依次是e、t、o、a、n等。频率相关编码就是对需要传送的文档重新编码,使文档中的各个字符按照出现的频率分别对应不同长度的编码,达到文档代码长度最短的一种编码方法。5.2.1 5.2.1 哈夫曼编码哈夫曼编码 创建哈夫曼编码的步骤为:1)为每个字符指定一个只包含一个节点的二叉树,并以该字符的频率作为二
5、叉树的权;2)选取两棵权最小的树合并成一棵带有新的根节点的树,其左右子树分别是选取的两棵树,新树的权为左右子树的权重之和;3)重复上面的步骤,直到只剩下最后一棵树;4)树中每个非叶节点的左指针分配“0”,右指针分配“1”,由此,从根出发可得各字符(叶节点)的哈夫曼编码。例如,假设某数据文件中各字符的频率如表8-1所示:字母 频率()字母 频率()A 25 B 15 C 10 D 20 E 30则构造哈夫曼树的过程如图8-1(a)8-1(e)所示。A B C D E 0.25 0.15 0.10 0.20 0.30图8-1(a)初始树 A B C D E 0.25 0.20 0.30图8-1(b
6、)1次合并之后0.25表8-1 字母AE的频率 A B C E 0.25 0.30图8-1(c)2次合并之后D0.45图8-1(d)3次合并之后0.55D0.45 E A B C 根据哈夫曼树可得各字符的哈夫曼编码字符 编码 A 01 B 110 C 111 D 10 E 00图8-1(e)4次合并之后D1B C 0111000E A图8-1 合并哈夫曼树 哈夫曼编码是一种字符长度不固定的编码方法,它具有称为非前缀性质的特性,即任何字符的代码都不会与另一个代码的前缀相同。比如,A的哈夫曼编码是01,那么绝不会有别的代码以01开始。根据哈夫曼编码的这种特性,接收端按位拼接收到的比特位,当位串与某
7、个编码对应时,即得到当前字符。如此重复,最终完成数据文档的接收还原。5.2.2 5.2.2 算术压缩算术压缩 算术压缩是一种采用一个0,1之间的实数来表示一个字符串的数据压缩方法。事实上,一个字符编码的0、1序列,可以理解为一个实数的二进制表示。算术压缩算法的过程是逐步产生长度递减的子区间,每一次所产生的子区间由当前字符以及它们的频率唯一确定。字符串中字符越多,对应的子区间越小。当处理完最后一个字符后,字符串与一个子区间对应,该子区间中任意一个实数(例如中点)表示相应的字符串。算术压缩算法的基本思想描述如下:1)按照各字符出现的频率将区间x,y=0,1 划分成若干子区间;2)查看当前字符,根据
8、它的频率确定对应的子区间p,q;3)对区间x,y重新定义,缩小x,y。即:新x值现在x值wp 新y值现在x值wq 其中 w yx 表示区间x,y的宽度;4)查看下一字符,根据其频率再次决定x,y的正确子区间;5)对字符串中的每一字符重复第2步第4步。例如,假定字符串CABACADA中各字符的频率如表5-2所示:字符频率()子区间p,qA250,0.25B150.25,0.4C100.4,0.5D200.5,0.7E300.7,1.0字符串CABA的压缩码计算过程如下:初始时x=0,y=1,w=10.40.5p=0.4q=0.5x=0y=1确定C的子区间确定A的子区间确定B的子区间x=x+wp=
9、0+10.4=0.4y=x+wq=0+10.5=0.5x=x+wp=0.4+0.10=0.4y=x+wq=0.4+0.10.25=0.425确定A的子区间p=0q=0.25w=0.1p=0.25q=0.4w=0.025x=x+wp=0.4+0.0250.25=0.40625x=x+wp=0.4+0.0250.4=0.41w=0.00375p=0q=0.25字符串CABA算术编码的步骤 步骤12345字符串CCACABCABA下一字符CABAC目前区间x,y0,10.4,0.50.4,0.4250.40625,0.410.40625,0.4071875p,q0.4,0.50,0.250.25,0
10、.40,0.250.4,0.5区间长度w=y-x1.00.10.0250.003750.0009375计算新xx=x+wp0+10.4=0.40.4+0.10=0.40.4+0.0250.25=0.406250.40625+0.003750=0.406250.40625+0.00093750.4=0.406625计算新yy=x+wq0+10.5=0.50.4+0.10.25=0.4250.4+0.0250.4=0.410.40625+0.003750.25=0.40718750.40625+0.00093750.5=0.4067187由上表可知,字符串“CABAC”落在区间0.406625,0
11、.4067187中,换言之,该区间任一实数均可表示该字符串。现在的问题是:从一个已知的实数,如何对上述过程进行逆转,得到其对应的字符串?基本思路是,从首字符开始,依次判断各字符所在区间。例如,假设有实数N=0.4067,它落在0.4,0.5区间内,由此知,实数N对应的字符串的首字符必为C(任何其他字符只能落在该区间以外)。下一步确定第二个字符所在区间,为此用实数N减去p,然后除以区间长度w,即:(N-p)/w(0.4067-0.4)/0.1=0.067,该数落在区间0,0.25,表明实数0.067必然为A而不会是其他字符。同样的道理求出(0.067-0)/0.25=0.2680.25,0.4,
12、可知第三个字符为B。依此类推,可以得到实数0.4067所表示的字符串。如表8-4所示。怎样确定解压的终止条件呢?算术压缩编码通常采用在原字符集中添加一个特殊的终结字符来解决,该字符与其他字符压缩和解压方法完全一样,仅作为解压过程的终止判断条件。思考题:假定有10个等概率字符,你能否提出更简单的算术编码实现方法?0.80.08C0.100.4,0.50.4850.480.12A0.250,0.250.1240.120.018B0.150.25,0.40.26830.2680.067A0.250,0.250.06720.0670.0067C0.100.4,0.50.40671(Np)/WNp字符长
13、度W区间p,qN步骤从算术编码数值中提取字符5.35.3 行程编码 在频率相关编码中,要求已知待传文件各字符的频率值,并假设比特位被组成字符或其他一些重复的单元。在实际应用中,还有很多传播数据不具这样的性质,如二进制(机器代码)文件、传真数据、音频/视频信号等。为此需要一种更加通用的能够对任意比特串进行压缩的技术。行程编码(run-length encoding)正是适应这种压缩要求的一种简单压缩方法,其基本思想是:对需要传输的比特串进行分析,寻找连续的0或1,通过只发送有多少个连续的0或1实现数据传输的压缩。8.2.1 相同比特的行程编码相同比特的行程编码 相同比特的行程编码主要用于原始比特
14、流中大多数连续序列为0的情况,例如传真传输。这种方法只是将每个连续的0序列长度(连续的0的个数)用一个固定长度的二进制整数传送出去。接收方将收到的整数转换成对应个数的0序列,并在各序列间插入一个“1”即可使压缩编码还原。例如,假设用4个比特表示连续的0序列长度,考虑图8-2(a)的比特流。序列长度(二进制)1110 1001 0000 1111 0101 1111 1111 0000 0000 1011序列长度(十进制)14 9 0 15 5 15 15 0 0 11 (b)行程编码流图8-2 压缩前的比特流和行程编码流在原始比特流中,如果第一个比特位为1,则在起始处填充一个长度为0的零序列;
15、在连续的非0序列间以0序列填充(如图8-2(b)中红色表示的0000序列);若序列长度不足以用4bit表示时(如30),则以若干“全1”序列及一个“非全1”序列表示(如图8-2(b)中蓝色表示的0000即为填充的“非全1”序列),称为组成码。1400 1900200030001100111190比特比特流非0非01(a)压缩前的比特流 5.3.2 5.3.2 不同字符的行程不同字符的行程 相同比特编码技术适用于原始比特流中有很多个零序列的压缩。随着值为1的比特出现频率的增大,效率也将有所下降。在极端的情况下,采用这种技术甚至会产生更长的比特流。如果原始数据由不同的字符组成,对于连续的相同字符,
16、也可以采用相同比特编码的思想:在一个序列长度后面紧跟实际字符来表示。例如,字符串 HHHHHHHUFFFFFFFFFFFFFFYYYYYYYYYYYYYYYYYDGGGGGGGG可以采用数字和字符交替的形式发送出去,即用序列7、H、1、U、14、F、17、Y、1、D、8、G表示上述字符流。这样的一种表示方式称为不同字符的行程编码。5.3.3 5.3.3 传真压缩传真压缩 传真机是通过扫描页面,产生一个比特图代表页面上的图像,并在电话网上使用数字技术传输图像。下面仅就A4文档的传真技术进行讨论。A4文档的大小尺寸为210297mm,如果每一平方毫米用一个88的像素矩阵表示,则每一页需要传输超过3
17、00万个像素。用于传真压缩的T.4和T.6标准采用了一种基于序列长度的频率相关编码技术,即白黑像素序列之后,添加由序列长度的频率决定的频率相关编码,称为改进的哈夫曼编码。前提和编码过程如下:1)每一行中白像素和黑像素序列交替出现;2)每一行由白像素序列开始。如果页面带有黑色边界,扫描过程将在每行起始和终止处添加白像素;3)为交替出现的白、黑像素序列计算编码,并传输编码比特流。序列长度常见的有6比特、7比特、8比特几种形式,当像素序列长度少于64(26)位时,作为终止码;而当序列长度大于规定比特数时,使用组成码。5.45.4 相对编码 传真压缩技术适用于长序列页面的压缩,平均压缩率可以达到90%
18、以上。然而,对于相邻行之间差别不大的页面,如图像传真,则这样的方法甚至可能产生负压缩率。类似的例子还有视频传输。对于图像传真,T.6标准采用先建立一个基础行,然后计算下一行与其差异,并只对这些差异进行编码传输的技术。这就是相对编码(relative encoding)的基本思想。视频传输较图像传真要复杂得多,其特点是:每秒传输30幅图像,单一的视频图像重复很少,但相邻的单一图像间会有大量重复。为此,视频压缩采用了相对编码的技术:不是把每一个帧当作一个独立的实体进行压缩和传输,而是考虑一个帧与前一个帧的差异之处,并对其进行编码传输。这样的方法也称为差分编码(differential encodi
19、ng)。原理十分简单:第一个帧被发送出去,并存储在接收方的缓冲区中。接着发送方将第二帧与第一帧比较,对差别进行编码,并以帧格式发送出去。接收方收到这个帧,对差别部分在第一帧的基础上进行相应操作,产生第二帧,并将其存储到缓冲区中。继续该过程,不断产生新的帧。图8-3显示了其工作原理。5 7 6 2 8 6 6 3 5 66 5 7 6 5 6 3 2 3 78 4 6 8 5 6 4 8 8 55 1 3 9 8 6 5 5 7 65 5 2 9 9 6 8 9 5 1 第二帧5 7 6 2 8 6 6 3 5 66 5 8 6 5 6 3 3 3 78 4 6 8 5 6 4 8 8 55 1
20、 3 9 7 6 5 5 8 65 5 2 9 9 6 8 9 5 1 第三帧0 0 0 0 0 0 0 0 0 00 0 0 1 0 0 0 0 1 00 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 1 00 0 0 0 0 0 0 0 0 0 传输帧中包含第一帧 和第二帧差异的编码0 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 1 0 00 0 0 0 0 0 0 0 0 00 0 0 0-1 0 0 0 1 00 0 0 0 0 0 0 0 0 0 传输帧中包含第二帧 和第三帧差异的编码5 7 6 2 8 6 6 3 5 66 5 7 5 5 6
21、3 2 4 78 4 6 8 5 6 4 8 8 55 1 2 9 8 6 5 5 6 65 5 2 9 9 6 8 9 5 1 第一帧图8-3 相对编码5.5 5.5 Lempel-Ziv压缩 与行程编码不同,Lempel-Ziv压缩技术是通过对原始数据中重复出现的位串或字符串以一个特定的编码进行替代的压缩方法。这种技术或其变体也经常在UNIX的压缩命令、调制解调器的V.42 bis压缩标准以及图形交换格式GIF(Griphic Interchange Format)等多种应用中使用。例如,考查下面的句子:the tropical rain fell in drenching sheets,
22、hammering the corrugated roof of the clinic building,roaring down the metal gutters,splashing on the ground in a torren.有几个字母序列重复出现:the、ro、ing等,假设我们用特殊符号、和分别代替这些字符串,则上述句子可以压缩为:t pical rain fell in drench sheets,hammer corrugated of clinic build ,ar down metal gutters,splash on g und in a torren.Lemp
23、el-Ziv压缩的一个重要特性是支持对任意字符序列的压缩,因为任何文件都可以看成ASCII字符的序列,所以这使该算法成为一种适用范围更广、更加灵活的算法。为了对一个Lempel-Ziv压缩文件进行解压,一种方法是将一张表明符号与字符串对应关系的符号表连同压缩文件一起传送出去,这样会部分抵消压缩的价值。Lempel-Ziv采用了一种无须传送符号表,对重复串自动进行匹配的简单算法,Lempel-Ziv压缩算法的工作原理简述如下:假设事先已设置一个代码表,存放重复串及其对应代码;开辟一个缓冲区,存放即将发送的字符串;以及一个用以构造重复串的临时字符串。压缩过程可描述为以下6个步骤:1)对代码表进行初
24、始化,为原始文本文件中的每一个不同字母分配一个代码,并存储到代码表中;2)从文件中读取一个字符CH,与缓冲区中的字符串进行连接,形成一个临时字符串;3)判断临时字符串是否曾经出现过,即检查代码表中是否有该字符串;4)如果临时字符串未出现在代码表中,则为其分配一个代码,将字符串和代码存储到代码表中,同时输出缓冲区内容对应的代码,并以CH重置缓冲区;5)如果临时字符串曾经出现过,则将其移到缓冲区中;6)返回执行2),直至文件结束。上述过程可以通过流程图(图8-4)加以说明。其中,代码表由标识符code表示,缓冲区由buff表示,临时字符串由temp表示,当前输入字符由ch表示。开始代码表初始化从文
25、件中读入一个字符chCh=EOF将ch与缓冲区buff中的内容连接后临时串temptempcode临时串temp缓冲区buff发送缓冲区buff代码结束分配一个代码给temp并一同存入代码表code发送buff对应代码以ch重置buffYYNN图8-4 Lempel-Zip压缩流程图该条件表示判断临时串temp是否曾经出现过,即temp是否包含在代码表code中例,假设文本文件内容为“ABABABCBA”,原文中包含ABC三个字符,表8-2显示了Lempel-Ziv压缩过程。当前字符ch代码表code缓冲区buff临时串temp发送内容代码初始化A/0 B/1 C/2AAABAB/3BAB0(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据压缩
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内