- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9讲——算术编码与LZ编码2014
算术编码与LZ编码 第9讲 算术编码要注意的一些问题 计算精度 随着递推过程的延续,P(u)和F(u)的小数位数也将逐步增加,若不能随时输出和加以截断,运算器将难以容纳。但有所截断必然降低精度,而精度不够会影响译码的正确性。 存储器容量 编成的码字S的长度也是随序列u的长度增加而不断增长。若不及时输出,存储量将非常大。但若输出过早,运算过程中可能还需调整已经输出的部分,那就来不及了。 计算复杂性 每次递归运算都有乘法, P(ak)小数位数影响计算复杂度。在算术编码中使用的概率P(ak)不一定完全等于真实的概率分布,只要设定的分布近似于真实分布就很有效。 自适应算术编码 在实际应用中,可以在编码过程中根据输入的信源序列自适应估计信源的分布,因此可以对任意概率分布的信源(包含有记忆)进行编码。 上述问题现已解决,算术编码已进入实用。 Ziv和Lempel于1977年提出了LZ77算法。1978年,二人又提出了改进算法,后被命名为LZ78。1984年,T. A. Welch提出了LZ78算法的一个变种,即LZW算法。1990年后,T. C. Bell等人又陆续提出了许多LZ系列算法的变体或改进版本。 LZ系列算法用一种巧妙的方式将字典技术应用于通用数据压缩领域,而且,可以从理论上证明LZ 系列算法同样可以逼近信息熵的极限. 下面我们主要介绍LZ78算法。 开始时,先取一个符号作为第一段,然后再继续分段。若出现有与前面相同符号时,就再取紧跟后面的一个符号一起组成一个段,以使与前面的段不同。 这些分段构成字典。 当字典达到一定大小后,再分段时就应查看有否与字典中的短语相同,若有重复就添加符号后再查看,直至与字典中短语不同为止。 由分段规则可见,字典中每一段都是前面某一段后加一个符号。 段号i 和符号序号r 的表示 由于rK,这两个数也可以用一个数Nj来表示,即 Nj=i K+ r. 从Nj很容易恢复i和r,即用K除Nj ,所得余数就是r,商为i。 把Nj表示成二进制数,即得二进码。 单符号的码字段号为0。 计算对Nj编码时所需的比特数 注意到K, i, j, r等都是整数,并设ji,则 所以,对Nj编码所需的比特数为 由上式可见,各段所需的比特数是不同的,是随j的增加而增多。 * * 算术编码 前面所讨论的无失真编码,都是建立在信源符号与码字一一对应的基础上,这种编码方法通常称为块码或分组码,此时信源符号一般是多元的。 如果要对二元序列进行编码,则需采用合并信源符号方法,把二元序列转换成多值符号,转换时二元符号之间的相关性不予考虑,转换后这些多值符号之间的相关性也不予考虑。这就使信源编码的匹配原则不能充分满足,编码效率一般不高。 为了克服这种局限性,需要跳出分组码范畴,从整个符号序列出发,采用递推形式进行编码。 从整个符号序列出发,根据各信源序列的概率将信源序列映射到[0,1) 区间上,然后选取区间内的一点(也就是一个二进制的小数)来表示信源序列。 算术编码基本思想 设信源字母表为{a1, a2},概率p(a1)=0.6, p(a2)=0.4, 将[0,1]按概率比例分为区间[0,0.6],[0.6,l]。 p(a1) p(a2) 0 0.6 1 0 0.36 0.6 0.84 1 p(a1a1) p(a1a2) p(a2a1) p(a2a2) 随着序列的长度不断增加,C所在区间的长度就越短,精确地确定C的位置需要码长也不断增加 设信源符号集A={a1,a2,…,an}, 其相应概率分布为pi, pi 0 (i=1,2, …,n), 定义信源符号的累积概率(分布函数)为 P1= 0; P2= p1 ; P3= p1+p2 ; … 累积概率 r=1,2, …,n pr = Pr+1 - Pr P1 p1 P2 P3 P4 1 p2 p3 … … 0 当A={0,1}二元信源时,P1=P(0)= 0 ; P2 = P(1)= p0 P(0) P(1) 0 1 p0 p1 二元序列的累积概率 引例 设有二元序列S=011,求S的累积概率 P(S)=p(000)+ p(001)+ p(010) 若S后面接0 P(S0)=p(0000)+ p(0001)+ p(0010)+p(0011)+ p(01
文档评论(0)