1、1,第4章 无失真信源编码,信息论与编码 Information and Coding Theory,王永容 机械与电气工程学院 ,2,信源编码,信源编码是以提高通信的有效性为目的编码。 通常通过压缩信源的冗余度来实现。 采用的一般方法是压缩每个信源符号的平均比特数或信源的码率。同样多的信息用较少的码率来传送,使单位时间内传送的平均信息量增加,从而提高通信的有效性。,3,信源编码的基本途径有两个: 使序列中的各个符号尽可能地互相独立,即解除相关性; 使编码中各个符号出现的概率尽可能地相等,即概率均匀化。,4,信源编码的基础是信息论中的两个编码定理:无失真信源编码定理限失真信源编码定理 无失真信
2、源编码只适用于离散信源 对于连续信源,只能在失真受限制的情况下进行限失真编码,下面介绍几种典型的离散信源编码方法。,5,第4章 无失真信源编码,4.1 无失真信源编码的概念 4.2 等长编码 4.3 变长编码 4.4 常用的变长编码算法,6,4.1 无失真信源编码的概念,信源符号(字母)集:Ss1, s2,sq. 码符号(字母、元)集:Aa1, a2,am. 编码函数f: 将有限个信源符号变换成有限个码符号的函数用AN表示全体长度为N的信源符号序列构成的集合,码字:wi =f(si) 码字wi的长度(码长):li=l(wi) 码: C=wi =f(si) | siSN .,7,4.1 无失真信
3、源编码的概念,N=1时,f:无失真信源编码器,8,如何分离码字?,如果0,01都是码字,译码时如何分离?,?,9,4.1 无失真信源编码的概念,例4-1 几个二元码,码的扩展码C1的扩展: s1s3 00 10,10,4.1 无失真信源编码的概念,m元码: 码符号集Aa1, a2,am.二元码: m=2, A0, 1,等长码(定长码): 所有码字的码长相等.例: 中文电报码是码长为4的等长的10元码中0022; 国0948; 北0554; 京0079. 变长码(非定长码): 码字的码长不相等. 非奇异码:s1,s2A, s1s2 f(s1)f(s2) 否则,称为奇异码,11,4.1 无失真信源
4、编码的概念,唯一可译码:任意有限长的码元序列,只能被唯一地分割成一个一个的码字,则称为唯一可译码,或单义可译码. 否则,就称为非唯一可译码, 或非单义可译码.例:码4是唯一可译码: 1000100 1000, 100码3是非唯一可译码: 100010010, 00, 10, 0 或10, 0, 01, 00,12,4.1 无失真信源编码的概念,即时码:如果收到一个码字后, 就能及时译出,则称为即时码,也称为非延长码,或异前缀码. 即没有任何完整的码字是其它码字的前缀。否则,就称为非即时码. 例:码5是即时码, 码4是非即时码.,13,关系 即时码一定是唯一可译码 唯一可译码一定是非奇异码 定长
5、的非奇异码一定是唯一可译码 非定长的非奇异码不一定是唯一可译码,4.1 无失真信源编码的概念,14,第4章 无失真信源编码,4.1 无失真信源编码的概念 4.2 等长编码 4.3 变长编码 4.4 常用的变长编码算法,15,4.2 等长编码,离散信源X的熵:H(X) 字母集: Ss1, s2,sq. 对信源输出的N个符号进行编码: 共有qN个消息 码元集Aa1, a2,am. 长度为L的等长码:共有mL个可能码字 能正确译码的必要条件:(非奇异码),16,4.2 等长编码,编码速率(编码信息率):编码后每个信源符号所能承载的的最大信息量,编码效率 平均码长:平均每个信源符号所需要的码符号个数,
6、编码效率:,17,4.2 等长编码,例4-2 设一个离散信源的输出字母表有q=10个符号,将其编为无失真二元码,即m=2 ,求平均码长。,18,4.2 等长编码,无失真编码 假设信道无干扰 译码错误概率: Pe=PMM 无失真编码: 译码错误概率Pe可以任意小.,19,4.2 等长编码,等长信源编码定理 定理4-1(Shannon信源编码定理),20,4.2 等长编码,等长信源编码定理 最佳等长编码:,编码效率:,21,4.2 等长编码,等长信源编码定理 设信源自信息方差为D(X)=DI(pi),编码效率为, 当允许译码错误概率Pe 时,有,22,第4章 无失真信源编码,4.1 无失真信源编码
7、的概念 4.2 等长编码 4.3 变长编码 4.4 常用的变长编码算法,23,4.3 变长编码,字母集: Ss1, s2,sq. 信源X的概率分布:p(si) (i=1,2,q ). 离散信源X的熵:H(X) 码元集Aa1, a2,am. 信源符号si的码字: wi=f(si)码字wi的长度为li (i=1,2,q ),24,4.3 变长编码,编码速率:编码后每个信源符号所能承载的的最大信息量,编码效率:,不等长码的编码效率 平均码长:,码的多余度(剩余度):,25,4.3 变长编码,平均码长:平均每个信源符号所需的码元符号个数,26,4.3 变长编码,码树编码方法 三元树码:C=w1, w2
8、,w11w1=0, w2=11, w3=12, w4=20, w5=22, w6=100, w7=101, w8=102, w9=210, w10=211, w11=212. 树码一定是即时码,27,4.3 变长编码,码树编码方法 (1)树根编码的起点; (2)每一个中间节点树枝的个数编码的进制数; (3)树的节点编码或编码的一部分; (4)树的终止节点(端点、树叶)码;(5)树的节数码长; (6)码位于多级节点变长码;(7)码位于同一级节点码等长码;,28,4.3 变长编码,克拉夫不等式( L.G.Kraft, 1949) 长度为l1, l2,lr的m元即时码存在的充分必要条件是:,麦克米伦
9、定理(麦克米伦: B. McMillan, 1956). 长度为l1, l2,lr的m元唯一可译码存在的充分必要条件是:,29,4.3 变长编码,例,30,判断以下码字是否可分离(唯一可译)?,习题,31,4.3 变长编码,单个符号不等长信源编码定理,32,4.3 变长编码,离散平稳无记忆序列变长编码定理香农第一编码定理,33,第4章 无失真信源编码,4.1 无失真信源编码的概念 4.2 等长编码 4.3 变长编码 4.4 常用的变长编码算法,34,4.4.1 香农编码,设有离散无记忆信源,35,1,2,3,4,香农编码方法的步骤,36,例,37,编码过程,(1),38,39,4.1.2 费诺
10、编码,对概率按m进行分组,使每组概 率尽可能相等,给每个分组分配一个码元,对每个分组重复2、3步,直到不可分为止,1,2,3,4,40,例,41,编码过程,42,可以看出本例中费诺码有较高的编码效率。 费诺码比较适合于每次分组概率都很接近的信源。,43,将信源符号按概率由大到小顺序排队,给两个概率最小的符号各分配一个码位,将其概率相加后合并作为一个新的符号,与剩下的符号一起,再重新排队,给缩减信源中概率最小的符号各分配一个码元,重复步骤2、3直至概率和为1,2,1,4,3,4.4.3 赫夫曼编码,44,例,45,编码过程,46,47,48,说明: Huffman码的编码方法不是唯一的。首先,每
11、 次对缩减信源两个最小的符号分配“0”和“1”码 元试任意的,所以可得到不同的码字。只要在 各次缩减信源中保持码元分配的一致性,即能 得到可分离码字。不同的码元分配,得到的具体 码字不同,但码长,平均码长都不变,所以没有 本质区别。其次,若合并后的新符号的概率与其 他符号的概率相等,从编码的方法上来说,这几 个符号的次序可任意排列,编出的码都是正确的,但得到的码字不同。不同的编法得到的码字长度也不尽相同。,49,对信源进行缩减时,两个概率最小的符号合并后的概率与其它信源符号的概率相同时,这两者在缩减信源中进行概率排序,其位置放置次序是可以任意的,故会得到不同的哈夫曼码。此时将影响码字的长度,一
12、般将合并的概率放在上面,这样可获得较小的码方差。 如下面的例子,50,例 设有离散无记忆信源,用两种不同的方法对其编二进制huffman码,51,方法一,方法二,52,两种不同的编码方法得到的码字和码长的对比,53,平均码长和编码效率,54,两种编码方法编出的码字的码长方差比较,55,可以看出第二种编码方法的码长方差要小 许多。这意味着第二种编码方法的码长变 化较小,比较接近平均码长。由此可以得 到一个结论(怎样得到码方差较小的huffman 编码)。,56,结论: 进行赫夫曼编码时,为得到码方差最小的码,应使合并的信源符号位于缩减信源序列尽可能高的位置上,以减少再次合并的次数,充分利用短码。
13、,57,4.4 常用的变长编码算法,最佳不等长编码(最佳码)对于给定的信源和码元符号集,在其所有的唯一可译码中,平均长度最小的码称为最佳码,或紧致码。,字母集: Ss1, s2,sq. 信源X的概率分布:p(si) (i=1,2,q ). 码元集Aa1, a2,am. 信源符号si的码字: wi=f(si)码字wi的长度为li (i=1,2,q ),58,4.4 常用的变长编码算法,习题 已知离散无记忆信源X为:,求二进制香农码,二进制费诺码,二进制霍夫曼码,三进制霍夫曼码。,59,4.4 常用的变长编码算法,信源X的熵: H(X)=2.61,60,4.4 常用的变长编码算法,习题 求以下信源
14、X的霍夫曼码,解:赋予码元,61,4.4 常用的变长编码算法,解:写出码字,62,4.4 常用的变长编码算法,习题 求以下信源X的三进制霍夫曼码,63,4.4 常用的变长编码算法,例4.10 设二元离散无记忆信源X的符号集为a0, a1, 概率分布为:p0=0.75, p1=0.25, 则H(X)= 0.75log0.75 0.25log0.25=0.811.,对两个信源符号X2进行编码, 则有,64,4.4 常用的变长编码算法,例4.10 对三个信源符号X3进行编码,65,4.4 常用的变长编码算法,课堂练习,已知离散无记忆信源X如下,求其三元霍夫曼码。并求其平均码长与编码效率。,66,4.
15、4 常用的变长编码算法,LZ码 1977年,齐费(J. Ziv, 以色列)与兰佩尔齐(A. Lempel, 以色列)提出LZ码,1978年进行改进,称为LZ78. 设信源符号集Ss1, s2,sq, 输入信源符号序列为u= u1 u2uL (uiS) 编码规则 分段:将符号序列u分成小段。分段原则: 各小段尽可能短,且不相同. 分成的小段称为短语. 短语总数记为: M(u) 依次对每个短语编号:号码称为该短语的段号. 对每个短语编码: 码字=除最后一符号后的短语段号编码 +最后一符号的编码. 单符号的段号码字为0. 如编为二进制码, 则段号需要的长度为: n= logM(u), 每个符号编码需
16、要的长度为: logq.,67,4.4 常用的变长编码算法,例4.12 设信源符号集S=a1, a2, a3, a4, 信源序列为u= a1a2a1a3a2a4a2a4a3a1a1a4.求LZ码. 分段: a1, a2, a1a3, a2a4, a2a4a3, a1a1, a4.短语总数为: M(u)=7, 段号编码长度为: n= log7=3.,每个信源符号编码长度: log 4=2. 每个短语的码字长度为5.,68,4.4 常用的变长编码算法,LZ码性能 编、译码简单、速度快 符号序列越长,编码效率越高. 当序列长度趋于无穷大时,平均码长趋于信源熵. 是一种简单的通用编码方法,与信源概率分布无关. 1984年韦尔奇(T. A. Welch)进行进一步改进,称为LZW算法, 已成为计算机文件压缩标准算法. LZ77,LZ78, LZW几乎垄断了整个通用数据压缩领域.,