Download - Chance favors the prepared mind!
1
Chance favors Chance favors the prepared the prepared mind!mind!
2
第三章 信源编码3.1 引言续3.2 香农编码3.3 费诺编码3.4 哈夫曼编码3.5 游程编码3.6 算术编码3.7 冗余编码3.8 LZ 编码3.9 信源编码总结
3
3.1.4 编码的目的香农编码定理虽然指出了理想编码器的存在性 , 但是并没有给出实用码的结构及构造方法;编码理论正是为了解决这一问题而发展起来的科学理论;编码的目的是为了优化通信系统,就是使这些指标达到最佳;通信系统的性能指标主要是有效性、可靠性、安全性和经济性,除了经济性外,这些指标正是信息论研究的对象。按不同的编码目的,编码分为三类:信源编码、信道编码和安全编码 / 密码。
4
信源编码:以提高通信有效性为目的的编码。通常通过压缩信源的冗余度来实现。采用的一般方法是压缩每个信源符号的平均比特数或信源的码率。即同样多的信息用较少的码率传送,使单位时间内传送的平均信息量增加,从而提高通信的有效性。
信道编码:以提高信息传输的可靠性为目的的编码。通常通过增加信源的冗余度来实现。采用的一般方法是增大码率 / 带宽。与信源编码正好相反。
密码:以提高通信系统的安全性为目的的编码。通常通过加密和解密来实现。从信息论的观点出发,“加密”可视为增熵的过程,“解密”可视为减熵的过程。
3.1.4 编码的目的
5
3.1.5 信源编码概述
信源编码理论是信息论的一个重要分支,其理论基础是信源编码的两个定理。
无失真信源编码定理:是离散信源 / 数字信号编码的基础;限失真信源编码定理:是连续信源 / 模拟信号编码的基础。
信源编码的分类:离散信源编码、连续信源编码和相关信源编码三类。
离散信源编码:独立信源编码,可做到无失真编码;连续信源编码:独立信源编码,只能做到限失真信源编码;相关信源编码:非独立信源编码。
6
有些编码原理和技术在通信原理和信号处理等相关课程中介绍。例如:
连续信源编码:脉冲编码调制 (PCM) 、矢量量化技术;相关信源编码:
预测编码:增量编码、差分脉冲调制 (DPCM) 、自适应差分脉冲调制 (ADPCM) 、线性预测声码器;变换编码: K- L 变换、离散变换、子带编码、小波变换。
3.1.5 信源编码概述
7
3.2 香农编码设离散无记忆信源
二进制香农码的编码步骤如下:将信源符号按概率从大到小的顺序排列,为方便起见,令 p(x1)≥ p(x2)≥…≥ p(xn)
令 p(x0)=0 ,用 pa(xj), j=i+1 表示第 i 个码字的累加概率,则
8
3.2 香农编码 确定满足下列不等式的整数 ki ,并令 ki 为第 i 个码字
的长度- log2 p(xi)≤ki<1 - log2 p(xi)
将 pa(xj) 用二进制表示,并取小数点后 ki 位作为符号xi 的编码。
十进制小数转换为二进制小数十进制小数转换为二进制小数 十进制小数转换成二进制小数采用十进制小数转换成二进制小数采用 ""乘 2 取整,顺序排列 "" 法。具体做法是:用法。具体做法是:用 22 乘十进制小数,可以得到积,将乘十进制小数,可以得到积,将积的整数部分取出,再用积的整数部分取出,再用 22 乘余下的小数部分,又得到一个乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。 然后把取出的整数分为零,或者达到所要求的精度为止。 然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。效位,后取的整数作为低位有效位。
9
[例 3.2.1] 有一单符号离散无记忆信源
对该信源编二进制香农码。其编码过程如表 3.2.1所示。表 3.2.1 二进制香农编码
xi p(xi) pa(xj) ki 码字
x1 0.25 0.000 2 00(0.000)2
x2 0.25 0.250 2 01(0.010)2
x3 0.20 0.500 3 100(0.100)2
x4 0.15 0.700 3 101(0.101)2
x5 0.10 0.850 4 1101(0.1101)2
x6 0.05 0.950 5 11110(0.11110)2
3.2 香农编码
10
计算出给定信源香农码的平均码长
若对上述信源采用等长编码,要做到无失真译码,每个符号至少要用 3 个比特表示。相比较,香农编码对信源进行了压缩。
3.2 香农编码
11
由离散无记忆信源熵定义,可计算出:
对上述信源采用香农编码的信息率为
编码效率为信源熵和信息率之比。则
可以看出,编码效率并不是很高。
3.2 香农编码
12
3.3 费诺编码 费诺编码也是一种常见的信源编码方法。编码步骤如下:
将概率按从大到小的顺序排列,令p(x1)≥ p(x2)≥…≥ p(xn)
按编码进制数将概率分组,使每组概率尽可能接近或相等。如编二进制码就分成两组,编 m 进制码就分成 m组。
给每一组分配一位码元。
将每一分组再按同样原则划分,重复步骤 2和 3 ,直至概率不再可分为止。
13
[例 3.3.1] 设有一单符号离散信源
对该信源编二进制费诺码。编码过程如表 3.3.1 。
表 3.3.1 二进制费诺编码
信源符号 概率 编码 码字 码长
x1 0.32 0
0
00 2
x2 0.22 1 01 2
x3 0.18
1
0 10 2
x4 0.16
1
0 110 3
x5 0.08 1
0 1110 4
x6 0.04 1 1111 4
3.3 费诺编码
14
上述码字还可用码树来表示,如下图所示。
3.3 费诺编码
15
该信源的熵为
平均码长为
编码效率为
本例中费诺编码有较高的编码效率。费诺码比较适合于每次分组概率都很接近的信源。特别是对每次分组概率都相等的信源进行编码时,可达到理想的编码效率。
3.3 费诺编码
16
[例 3.3.2] 有一单符号离散无记忆信源
对该信源编二进制费诺码,编码过程如表 3.3.2 。
表 3.3.2 二进制费诺编码
信源符号 概率 编码 码字 码长 x1 0.25 0 0 00 2 x2 0.25 1 01 2 x3 0.125
1
0 0 100 3
x4 0.125 1 101 3 x5 0.0625
1 0
0 1100 4 x6 0.0625 1 1101 4 x7 0.0625
1 0 1110 4
x8 0.0625 1 1111 4
35.3 费诺编码
17
码树图如右图。
信源熵为 H(X)=2.75( 比特 / 符号 ) 平均码长为 编码效率为 η=1 。之所以如此,因为每次所分两组的概率恰好相等。
3.3 费诺编码
18
3.4 哈夫曼编码
哈夫曼 (Huffman) 编码是一种效率比较高的变长无失真信源编码方法。
3.4.1 编码步骤3.4.2 二进制哈夫曼编码3.4.3 m 进制哈夫曼编码
19
5.4.1 编码步骤将信源符号按概率从大到小的顺序排列,令
p(x1)≥ p(x2)≥…≥ p(xn)
给两个概率最小的信源符号 p(xn-1)和 p(xn)各分配一个码位“ 0” 和“ 1” ,将这两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,结果得到一个只包含 (n- 1) 个信源符号的新信源。称为信源的第一次缩减信源,用 S1 表示。
将缩减信源 S1 的符号仍按概率从大到小顺序排列,重复步骤 2 ,得到只含 (n- 2) 个符号的缩减信源 S2 。
重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩两个符号的概率之和必为 1 。然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。
3.4.1 编码步骤
3.4哈夫曼编码
20
[例 3.4.1] 设单符号离散无记忆信源如下,要求对信源编二进制哈夫曼码。编码过程如下图。3.4
哈夫曼编码
3.4.2 二进制哈夫曼编码
21
在图中读取码字的时候,一定要从后向前读,此时编出来的码字才是可分离的异前置码。若从前向后读取码字,则码字不可分离。
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
22
将图 3.4.1左右颠倒过来重画一下,即可得到二进制哈夫曼码的码树,如下图所示。
第五章信源编码
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
23
信源熵为
平均码长为
编码效率为
若采用定长编码,码长 K=3 ,则编码效率
可见哈夫曼的编码效率提高了 12.7% 。
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
24
注意:哈夫曼的编法并不惟一。每次对缩减信源两个概率最小的符号分配“ 0” 和“ 1” 码元是任意的,所以可得到不同的码字。只要在各次缩减信源中保持码元分配的一致性,即能得到可分离码字。不同的码元分配,得到的具体码字不同,但码长 ki 不变,平均码长
也不变,所以没有本质区别;缩减信源时,若合并后的新符号概率与其他符号概率相等,从编码方法上来说,这几个符号的次序可任意排列,编出的码都是正确的,但得到的码字不相同。不同的编法得到的码字长度 ki也不尽相同。
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
25
举例说明上述问题例 [3.4.2] 单符号离散无记忆信源 ,用两种不同的方法对其编二进制哈夫曼码。
方法一:合并后的新符号排在其它相同概率符号的后面。
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
26
第五章信源编码
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
0
0
0
00
0
1
1
x5
x4
x3
x2
x1
图5.4.4 例5.4.2 ( )的二进制哈夫曼码树 编法一
1
27
方法二:合并后的新符号排在其它相同概率符号的前面。3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
28
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
0
0
00
10
1
1
x5
x4
x3
x2
x1
图5.4.6 例5.4.2 ( )的二进制哈夫曼码树 编法二
1
29
单符号信源编二进制哈夫曼码,编码效率主要决定于信源熵和平均码长之比。对相同的信源编码,其熵是一样的,采用不同的编法,得到的平均码长可能不同。平均码长越短,编码效率就越高。
编法一的平均码长为
编法二的平均码长为
可见 ,本例两种编法的平均码长相同,所以编码效率相同。
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
30
讨论:哪种方法更好?
定义码字长度的方差 σ2 :长度 ki 与平均码长 之差的平方的数学期望,即
编法一码字长度方差:
编法二码字长度方差:
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
31
可见:第二种编码方法的码长方差要小许多。意味着第二种编码方法的码长变化较小,比较接近于平均码长。 第一种方法编出的 5 个码字有 4 种不同的码长; 第二种方法编出的码长只有两种不同的码长; 显然,第二种编码方法更简单、更容易实现,所以更好。
结论:在哈夫曼编码过程中,对缩减信源符号按概率由大到小的顺序重新排列时,应使合并后的新符号尽可能排在靠前的位置,这样可使合并后的新符号重复编码次数减少,使短码得到充分利用。
第五章信源编码
3.4哈夫曼编码
3.4.2 二进制哈夫曼编码
32
(1) “ 全树”概念定义:码树图中每个中间节点后续的枝数为 m 时称为全树;若有些节点的后续枝数不足 m ,就称为非全树。
二进制码不存在非全树的情况,因为后续枝数是一时,这个枝就可以去掉使码字长度缩短。
对 m 进制编码:若所有码字构成全树,可分离的码字数(信源个数)必为 m+k(m- 1)。 k 为信源缩减次数。
若信源所含的符号数 n 不能构成 m 进制全树,必须增加 s 个不用的码字形成全树。显然 s<m- 1 ,若 s=m- 1 ,意味着某个中间节点之后只有一个分枝,为了节约码长,这一分枝可以省略。
3.4.3 m 进制哈夫曼编码第五章信源编码
3.4哈夫曼编码
33
在编 m 进制哈夫曼码时为了使平均码长最短,必须使最后一步缩减信源有 m 个信源符号。非全树时,有 s 个码字不用:
第一次对最小概率符号分配码元时就只取 (m- s) 个,分别配以 0,1,…,m- s- 1 ,把这些符号的概率相加作为一个新符号的概率,与其它符号一起重新排列。
以后每次就可以取 m 个符号,分别配以 0,1,…,m- 1;…;如此下去,直至所有概率相加得 1 为止,即得到各符号的 m 进制码字。
3.4.3 m 进制哈夫曼编码第五章信源编码
3.4哈夫曼编码
34
(2) 举例:对如下单符号离散无记忆信源 (例 3.4.1) 编三进
制哈夫曼码。
这里: m=3, n=8 令 k=3, m+k(m- 1)=9 ,则 s=9- n=9- 8=1 所以第一次取 m- s=2 个符号进行编码。
3.4.3 m 进制哈夫曼编码第五章信源编码
3.4哈夫曼编码
35
3.4.3 m 进制哈夫曼编码
3.4哈夫曼编码
36
3.4.3 m 进制哈夫曼编码
3.4哈夫曼编码
0
0
0
0 1
2
1
1
x5
x4
x3
x2x1
图5.4.8 三进制哈夫曼码树图
2
2
1
x6
x8
x7
37
平均码长为
信息率为
编码效率为
可见:哈夫曼的编码效率相当高,对编码器的要求也简单得多。
3.4.3 m 进制哈夫曼编码
3.4哈夫曼编码
38
(3) 结论香农码、费诺码、哈夫曼码都考虑了信源的统计特性,使经常出现的信源符号对应较短的码字,使信源的平均码长缩短,从而实现了对信源的压缩;香农码有系统的、惟一的编码方法,但在很多情况下编码效率不是很高;费诺码和哈夫曼码的编码方法都不惟一;费诺码比较适合于对分组概率相等或接近的信源编码,费诺码也可以编 m 进制码,但 m越大,信源的符号数越多,可能的编码方案就越多,编码过程就越复杂,有时短码未必能得到充分利用;哈夫曼码对信源的统计特性没有特殊要求,编码效率比较高,对编码设备的要求也比较简单,因此综合性能优于香农码和费诺码。
3.4.3 m 进制哈夫曼编码
3.4哈夫曼编码
39
香农编码方法特点:: 由于由于 kkii 总是进一取整,香农编码方法不一定是最佳的;总是进一取整,香农编码方法不一定是最佳的; 由于第一个消息符号的累加概率总是为由于第一个消息符号的累加概率总是为 00 ,故它对应,故它对应
的码字总是的码字总是 00、、 0000、、 000000、、 0…00…0 的式样;的式样; 码字集合是唯一的,且为即时码;码字集合是唯一的,且为即时码; 先有码长再有码字;先有码长再有码字; 对于一些信源,编码效率不高,冗余度稍大,因此其对于一些信源,编码效率不高,冗余度稍大,因此其
实用性受到较大限制。实用性受到较大限制。
评述评述
40
费诺编码特点: 概率大,则分解的次数小;概率小 , 则分解的次数多。这符合最佳编码原则。
分解完了,码字出来了,码长也有了。 因此,费诺编码方法又称为子集分解法。 费诺编码方法比较适合于每次分组概率都很接近的信源,特别是对每次分组概率都相等的信源进行编码时,可达到理想的编码效率。
评述评述
41
哈夫曼编码特点: 由于哈夫曼编码总是以最小概率相加的方法来“缩减”参与排队
的概率个数,因此概率越小,对缩减的贡献越大,其对于消息的码字也越长;
最小概率相加的方法使得编码不具有唯一性,尤其是碰到存在几个消息符号有着相同概率的情况,将会有多种路径选择,亦即具有多种可能的代码组集合;
尽管对同一信源存在着多种结果的哈夫曼编码,但它们的平均码长几乎都是相等的,因为每一种路径选择都是使用最小概率相加的方法,其实质都是遵循最佳编码的原则,因此哈夫曼编码是最佳编码。
哈夫曼编码是一种最佳编码,实现也不困难,因此到目前为止它仍是应用最为广泛的无失真信源编码之一。
在实际问题中真正使用哈夫曼编码时,还需要进一步研究有关误差扩散、速率匹配和概率匹配等问题。
评述评述
42
误差扩散问题误差扩散问题由于哈夫曼码是一类无失真信源最佳变长码,就是说在研究由于哈夫曼码是一类无失真信源最佳变长码,就是说在研究这类无失真信源编码时认为信道传输是理想的,是不产生差这类无失真信源编码时认为信道传输是理想的,是不产生差错的,然而实际信道中总是存在噪声的,错的,然而实际信道中总是存在噪声的,噪声引入后必然要破坏变长码的结构。同时由于变长码是不加同步的码,无法同时由于变长码是不加同步的码,无法自动清洗所产生的影响,所以必然要产生误差的扩散,即自动清洗所产生的影响,所以必然要产生误差的扩散,即噪声所影响的不仅是被干扰的码元,而是一直要扩散下去影响后面一系列码元。以至于在低信噪比下无法工作。以至于在低信噪比下无法工作。目前对这类误差扩散还没有特别有效的克服方法,在工程上目前对这类误差扩散还没有特别有效的克服方法,在工程上一般哈夫曼码只能一般哈夫曼码只能适合于高信噪比的优质信道,以减小误差,以减小误差扩散带来的影响。同时工程上还常常采用扩散带来的影响。同时工程上还常常采用定期清洗,以牺牲,以牺牲编码效率来达到限制误差扩散的目的。另一种方法是编码效率来达到限制误差扩散的目的。另一种方法是加检错纠错码。
评述评述
43
速率匹配问题速率匹配问题由于绝大多数信源其消息是不等概率的,因而编成由于绝大多数信源其消息是不等概率的,因而编成的变长码长度也是不相等的,这必然导致信源输出的变长码长度也是不相等的,这必然导致信源输出速率是变化的,然而在实际信道中传送的信息率是速率是变化的,然而在实际信道中传送的信息率是固定不变化的。因而固定不变化的。因而信源与信道之间必然存在一个速率匹配问题。解决该问题的办法,在工程上一般解决该问题的办法,在工程上一般采用缓冲存储器的方法以达到变速输入,恒速输出。但是这个缓存但是这个缓存器的容量选取显然与输入变速特性即信源统计特性器的容量选取显然与输入变速特性即信源统计特性和编码方法,以及输出速率密切相关。这是一个需和编码方法,以及输出速率密切相关。这是一个需要在实际的工程设计中进一步深入探讨的问题。要在实际的工程设计中进一步深入探讨的问题。
评述评述
44
与信源统计特性相匹配的问题与信源统计特性相匹配的问题变长码本身就是与信源统计特性相匹配的无失真信源变长码本身就是与信源统计特性相匹配的无失真信源编码,因此信源统计特性的变化对变长码影响很大,编码,因此信源统计特性的变化对变长码影响很大,它主要体现在下面两点:它主要体现在下面两点:
与信源消息种类多少的关系:一般变长码更适合于大的消息集,而不适合于小且概率分布相差很大的集合。小消息集合只有在很特殊情况下才能实现统计匹配。变长码是在信源概率特性已知情况下,实现统计匹配的。如果信源统计特性不完全知道甚至完全不知道时,如何实现编码,这是属于通用编码所要研究的问题。
评述评述
45
小消息集合如何实现统计匹配的变长编码。其基本思想是扩展信源,以实现统计匹配。
例如:已知信源空间为 X: x1 x2
P(X): 0.2 0.8
信道基本符号为 {0,1}。 (1) 若编码规则为:x1s1=0, x2s2=1 ,求平均长度和编码效率;( 2)若进行二重扩展并对扩展信源按最佳编码原则编码,再求平均长度和编码效率。
评述评述
46
解 (1) 先求信源熵,再求平均长度和编码效率,结果如下:
( 2)对初始信源的两个消息进行二重扩展,得到的消息序列为 4 个。编码得到的即时码集合为( 0, 10, 110, 111)。根据最佳编码原则,消息序列、对应的概率、编码以及码长如下:
x1x1 1/25 111 B1=3
x1x2 4/25 110 B2=3
x2x1 4/25 10 B3=3
x2x2 16/25 0 B4=1
0.2 1 0.8 1 1 /K 码元信符
0 72193 72 2H /K . . % X
2 2
1 1( ) 0.2log 0.8log 0.72193 /
0.2 0.8H X 比特信符
评述评述
47
该消息序列编码的平均码长为
故有 =39/50 码元 / 信符
比较( 1)、( 2)可见,经过二重扩展后,效率由 72.2%上升到 92.6% 。
1 4 4 16 393 3 2 1 /2
25 25 25 25 25K 码元 个信符
/K L
( ) 0.721930.926 92.6%
/ 39 / 50
H
K L
X
评述评述
还可以一直扩展下去,以不断扩大信源消息集,以达到逐步实现完全统计匹配的目的。当扩展阶次越高,设备越复杂,所以在工程上只能在效率与复杂性方面进行折中平衡。
48
课堂练习
信源符号 X有 8种消息,概率为(1/2,1/4,1/8, 1/16, 1/32,1/64,1/128,1/128)
(1)求符号熵 H(X)
(2) 用香农编码编成二进变长码,计算其编码效率。(3) 用费诺编码编成二进变长码,计算其编码效率。(4) 用费诺编码编成三进变长码,计算其编码效率。(5) 用哈夫曼编码编成二进变长码,计算其编码效率。(6) 用哈夫曼编码编成三进变长码,计算其编码效率。
49
下次课预习内容( pp.69-76 )
3.5 游程编码3.6 算术编码3.7 冗余编码3.8 LZ 编码3.9 信源编码总结
50
Any QuestionsAny Questions !!