1、第五章 信源编码0第五章 信源编码(第十讲)(2 课时)主要内容:(1)编码的定义(2)无失真信源编码重点:定长编码定理、变长编码定理、最佳变长编码。难点:定长编码定理、哈夫曼编码方法。作业:5。2,5。4,5。6;说明:本堂课推导内容较多,枯燥平淡,不易激发学生兴趣,要注意多讨论用途。另外,注意,解题方法。多加一些内容丰富知识和理解。通信的实质是信息的传输。而高速度、高质量地传送信息是信息传输的基本问题。将信源信息通过信道传送给信宿,怎样才能做到尽可能不失真而又快速呢?这就需要解决两个问题:第一,在不失真或允许一定失真的条件下,如何用尽可能少的符号来传送信源信息;第二,在信道受干扰的情况下,
2、如何增加信号的抗干扰能力,同时又使得信息传输率最大。为了解决这两个问题,就要引入信源编码和信道编码。一般来说,提高抗干扰能力(降低失真或错误概率)往往是以降低信息传输率为代价的;反之,要提高信息传输率常常又会使抗干扰能力减弱。二者是有矛盾的。然而在信息论的编码定理中,已从理论上证明,至少存在某种最佳的编码或信息处理方法,能够解决上述矛盾,做到既可靠又有效地传输信息。这些结论对各种通信系统的设计和估价具有重大的理论指导意义。3.1 编码的定义编码实质上是对信源的原始符号按一定的数学规则进行的一种变换。讨论无失真信源编码,可以不考虑干扰问题,所以它的数学描述比较简单。图 3.1 是一个信源编码器,
3、它的输入是信源符号 ,同时存在另一符号 ,一般来,21qsS ,21rxX说,元素 xj 是适合信道传输的,称为码符号(或者码元) 。编码器的功能就是将信源符号集中的符号 si(或者长为 N 的信源符号序列)变换成由 xj(j=1,2,3,r)组成的长度为 li 的一一对应的序列。输出的码符号序列称为码字,长度 li 称为码字长度或简称码长。可见,编码就是从信源符号到码符号的一种映射。若要实现无失真编码,则这种映射必须是一一对应的,并且是可逆的。码符号的分类:下图是一个码分类图 即 时 码 ( 非 延 长 码 )非 即 时 码唯 一 可 译 码非 唯 一 可 译 码非 奇 异 码奇 异 码分
4、组 码非 分 组 码码第五章 信源编码1下面,我们给出这些码的定义。1. 二元码若码符号集为 X=0;1,所有码字都是一些二元序列,则称为二元码。二元码是数字通信和计算机系统中最常用的一种码。2. 等长码:若一组码中所有码字的码长都相同,即 li=l(i=1,2,q),则称为等长码。3. 变长码:若一组码组中所有码字的码长各不相同,则称为变长码。4. 非奇异码:若一组码中所有码字都不相同,则称为非奇异码。5. 奇异码:若一组码中有相同的码字,则称为奇异码。6. 唯一可译码:若码的任意一串有限长的码符号序列只能唯一地被译成所对应的信源符号序列,则此码称为唯一可译码,否则就称为非唯一可译码。7.
5、非即时码和即时码:如果接收端收到一个完整的码字后,不能立即译码,还要等下一个码字开始接收后才能判断是否可以译码,这样的码叫做非即时码。如果收到一个完整的码字以后,就可以立即译码,则叫做即时码。即时码要求任何一个码字都不是其他码字的前缀部分,也叫做异前缀码。 码树:即时码的一种简单构造方法是树图法。对给定码字的全体集合 C=W1,W2,Wq来说,可以用码树来描述它。所谓树,就是既有根、枝,又有节点,如图 5.2(80 业)所示,图中,最上端 A 为根节点,A、B、C、D、E 皆为节点,E 为终端节点。A 、B、C、D 为中间节点,中间节点不安排码字,而只在终端节点安排码字,每个终端节点所对应的码
6、字就是从根节点出发到终端节点走过的路径上所对应的符号组成,如图 5.2 中的终端节点 E,走过的路径为 ABCDE,所对应的码符号分别为0、0、0、1,则 E 对应的码字为 0001。可以看出,按树图法构成的码一定满足即时码的定义(一一对应,非前缀码) 。从码树上可以得知,当第 i 阶的节点作为终端节点,且分配码字,则码字的码长为 i。任一即时码都可以用树图法来表示。当码字长度给定后,用树图法安排的即时码不是唯一的。如图 3.2 中,如果把左树枝安排为 1,右树枝安排为 0,则得到不同的结果。对一个给定的码,画出其对应的树,如果有中间节点安排了码字,则该码一定不是即时码。每个节点上都有 r 个
7、分支的树称为满树,否则为非满树。即时码的码树图还可以用来译码。当收到一串码符号序列后,首先从根节点出发,根据接收到第五章 信源编码2的第一个码符号来选择应走的第一条路径,再根据收到的第二个符号来选择应走的第二条路径,直到走到终端节点为止,就可以根据终端节点,立即判断出所接收的码字。然后从树根继续下一个码字的判断。这样,就可以将接收到的一串码符号序列译成对应的信源符号序列。 克拉夫特(Kraft)不等式定理 3.1 对于码符号为 X=x1,x2,xr的任意唯一可译码,其码字为 W1,W2,Wq,所对应的码长为 l1,l2lq,则必定满足克拉夫特不等式1ilir反之,若码长满足上面的不等式,则一定
8、存在具有这样码长的即时码。注意:克拉夫特不等式只是说明唯一可译码是否存在,并不能作为唯一可译码的判据(可以排除,不能肯定) 。如0,10, 010,111 满足克拉夫特不等式,但却不是唯一可译码。例题:设二进制码树中 X=x1,x2,x3,x4,对应的 l1=1,l2=2,l3=2,l4=3,由上述定理,可得892141 ili因此不存在满足这种码长的唯一可译码。可以用树码进行检查。 唯一可译码的判断法(变长):将码 C 中所有可能的尾随后缀组成一个集合 F,当且仅当集合 F 中没有包含任一码字,则可判断此码 C 为唯一可译码。集合 F 的构成方法:首先,观察码 C 中最短的码字是否是其它码字
9、的前缀,若是,将其所有可能的尾随后缀排列出。而这些尾随后缀又有可能是某些码字的前缀,再将这些尾随后缀产生的新的尾随后缀列出,然后再观察这些新的尾随后缀是否是某些码字的前缀,再将产生的尾随后缀列出,依此下去,直到没有一个尾随后缀是码字的前缀为止。这样,首先获得了由最短的码字能引起的所有尾随后缀,接着,按照上述步骤将次短码字、等等所有码字可能产生的尾随后缀全部列出。由此得到由码 C的所有可能的尾随后缀的集合 F。例题:设码 C=0,10,1100,1110,1011,1101,根据上述测试方法,判断是否是唯一可译码。解:1. 先看最短的码字:“0”,它不是其他码字前缀,所以没有尾随后缀。2. 再观
10、察码字“10”,它是码字“1011”的前缀,因此有尾随后缀。所以,集合 F=11,00,10,01 ,其中“10”为码字,故码 C 不是唯一可译码。3.2 定长编码定理前面已经说过,所谓信源编码,就是将信源符号序列变换成另一个序列(码字) 。设信源输出符号序列长度为 L,码字的长度为 KL,编码的目的,就是要是信源的信息率最小,也就是说,要用最少的符号来代表信源。在定长编码中,对每一个信源序列,K L 都是定值,设等于 K,我们的目的是寻找最小 K 值。要实现无失真的信源编码,要求信源符号 Xi(i=1,2,q)与码字是一一对应的,并求由码字组成的符第五章 信源编码3号序列的逆变换也是唯一的(
11、唯一可译码) 。定长编码定理:由 L 个符号组成的、每个符号熵为 HL(X)的无记忆平稳信源符号序列 X1X2X3XL 用 KL 个符号Y1Y2YKL(每个符号有 m 种可能值)进行定长变码。对任意 ,只要0,则当 L 足够大时,必可使译码差错小于 ;反之,当)(logXHKLL2l时,译码差错一定是有限值,当 L 足够大时,译码几乎必定出错。式中,左边是输出码字每符号所能载荷的最大信息量所以等长编码定理告诉我们,只要码字传输的信息量大于信源序列携带的信息量,总可以实现几乎无失真的编码。条件时所取得符号数 L 足够大。设差错概率为 ,信源序列的自方差为P22)()(XxIEXi则有: 2)(L
12、当 和 均为定值时,只要 L 足够大, 可以小于任一整数 ,即XP2)(此时要求: 2)(XL只要 足够小,就可以几乎无差错地译码,当然代价是 L 变得更大。令 mLKlog为码字最大平均符号信息量。定义编码效率为: KXHL)(最佳编码效率为 )(L无失真信源编码定理从理论上阐明了编码效率接近于 1 的理想编码器的存在性,它使输出符号第五章 信源编码4的信息率与信源熵之比接近于 1,但要在实际中实现,则要求信源符号序列的 L 非常大进行统一编码才行,这往往是不现实的。例如:例题:设离散无记忆信源概率空间为 04.56.07.1.084. 8754321 xxxxPX信源熵为 符 号/5.2l
13、og)(81bitpHii自信息方差为 82.7)()(log)(log2)()(log )(log)8128181281 22812222 iii i iiii ii i iiXHp pXHpppXHxIEX对信源符号采用定长二元编码,要求编码效率 ,无记忆信源有 ,因%90)(XHL此 %90)(X可以得到 28.如果要求译码错误概率 ,则6187210.9()XL由此可见,在对编码效率和译码错误概率的要求不是十分苛刻的情况下,就需要 个信810L源符号一起进行编码,这对存储和处理技术的要求太高,目前还无法实现。如果用 3 比特来对上述信源的 8 个符号进行定长二元编码,L=1,此时可实现
14、译码无差错,但编码效率只有 2.55/3=85%。因此,一般说来,当 L 有限时,高传输效率的定长码往往要引入一定的失真和译码错误。解决的办法是可以采用变长编码。3.3 最佳编码最佳码:对于某一信源和某一码符号集来说,若有一唯一可译码,其平均码长 小于所有其K他唯一可译码的平均长度。为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。能获得最佳码的编码方法:香农(Shannon)费诺(Fano)第五章 信源编码5哈夫曼(Huffman)1、香农编码方法香农第一定理指出了平均码长与信源之间的关系,同时也指出了可以通过编码使平均码长达到极限值,这是一个很重要的极
15、限定理。香农第一定理指出,选择每个码字的长度 Ki 满足下式:Ki= 取整ip1log即: log 2pi K i1log 2pi 就可以得到这种码。这种编码方法称为香农编码。例:设无记忆信源的概率空间为: 81421)(43uupU计算各符号的码字长度:K1= log2=1K2= log4=2K3= K4 =log8=3用图示码树,可得各自的码字:u1:(0) ,u 2:(10) ,u 3:(110) ,u 4:(111)信息熵 H(U): 75.1481logl814log2l)()()(41i iipUH信源符号的平均码长: 75.12382K编码效率 %075.1)(UH对于这种信源,
16、香农编码是最佳编码。码树达到满树。 香农编码法多余度稍大,实用性不大,但有重要的理论意义。编码方法如下:第五章 信源编码6 将信源消息符号按其出现的概率大小依次排列p(u1)p(u 2) p(u n) 确定码长 Ki (整数) :Ki= 取整iplog 为了编成唯一可译码,计算第 i 个消息的累加概率1)(iku 将累加概率 Pi 变换成二进制数。 取 pi 二进制数的小数点后 Ki 位即为该消息符号的二进制数。例: 05.2.304.)(41uuU信 源 符 号 ui 符 号 概 率 p(ui) 累 加 概 率 Pi -log p(ui) 码 字 长 度 Ki 码 字u1 0.4 0 1.3
17、2 2 00u2 0.3 0.4 1.73 2 01u3 0.2 0.7 2.32 3 101u4 0.05 0.9 4.3 5 11100u5 0.05 0.95 4.3 5 11101以 i = 3 为例,计算各符号的码字长度:K3 = log0.2 = 3累加概率 P4 = 0.7 0.10110 101由图,这些码字没有占满所有树叶,所以是非最佳码。平均码长:95.1 05.log.2.0log.3l.04log)(UH第五章 信源编码75.2250.3204)(51iiKup编码效率: %785.291)(KUH为了提高编码效率,首先应达到满树;例如把 u4u5 换成 A、B 这些前
18、面的节点,就可减小平均码长。所以不应先规定码长,而是由码树来规定码字,可得更好的结果。 2、费诺编码方法 费诺编码属于概率匹配编码,但它不是最佳的编码方法。编码过程如下:将信源符号接概率值分为两大组,使两个组的概率之和近于相同,并对各组赋予一个二进制码元“0”和“1” 。将每一大组的信源符号进一步再分成两组,使划分后的两个组的概率之和近于相同,并又赋予两个组一个二进制符号“0”和“1” 。如此重复,直至每个组只剩下一个信源符号为止。信源符号所对应的码字即为费诺码。例: 05.2.304.)(41uupU信 源 符 号ui符 号 概 率p(ui)第 1 次分 组第 2 次分 组第 3 次分 组码
19、字 码长u 1 0.4 0 00 2u 4 0.05 0 010 3u 5 0.05011 011 3u 2 0.3 0 10 2u 3 0.211 11 2该费诺码的平均码长 1.2)305.(2.03.24.0)(71 iiKp编码效率: .%91.5)(KUH第五章 信源编码8显然,费诺码比香农码的平均码长小,编码效率高。其实这样编码的效率还不是最高的,现用另一种分割方法:信 源 符 号ui符 号 概 率p(ui)第 1 次分 组第 2 次分 组第 3 次分 组第 4 次分 组码字 码长u 1 0.4 0 0 1u 2 0.3 0 10 2u 3 0.2 0 110 3u 4 0.05
20、0 1110 4u 5 0.051 111 1111 4该费诺码的平均码长 0.2)45.(23.0.14.0)(7 iiKup编码效率: %.97.1)(KUH可见编码效率又有所提高。事实上这已是最佳编码,就是说编码效率已不能再提高。但这样试探寻找分割方法总不是办法,因而赫夫曼提出一种编码方法,并证明这种编码在块码中已是最佳的。3、哈夫曼编码方法哈夫曼编码也是用码树来分配各符号的码字。费诺码是从树根开始,把各节点分给某子集;若子集已是单点集,它就是一片叶而作为码字。而赫夫曼编码是先给每一符号一片树叶,逐步合并成节点直到树根。哈夫曼编码的步骤如下: 将信源消息符号按其出现的概率大小依次排列p(
21、u1)p(u 2) p(u n)取两个概率最小的字母分别配以 0 和 1 两码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进符号的字母重新排队。 对重排后的两个概率最小符号重复步骤的过程。不断继续上述过程,直到最后两个符号配以 0 和 1 为 止 。 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。例: 给定离散信源如下: 01.5.1708.920.)( 76431 uuupU第五章 信源编码961.2 01.log.10.log.50log 7.l89)(UH平均码长:编码效率72. 401315.07.318.09.0)(71 iiKup %96.2.
22、)(KUH哈夫曼编码方法得到的码并非是唯一的。非唯一的原因:每次对信源缩减时,赋予信源最后两个概率最小的符号,用 0 和 1 是可以任意意的,所以可以得到不同的哈夫曼码,但不会影响码字的长度。对信源进行缩减时两个概率最小的符号合并后的概率与其它信源符号的概率相同时,这两者在缩减信源中进行概率排序,其位置放置次序是可以任意的,故会得到不同的哈夫曼码。此时将影响码字的长度,一般将合并的概率放在上面,这样可获得较小的码方差。例:给定离散信源如下: 1.02.04.)( 5431uuupU有两种哈夫曼编码方法如下图所示:第五章 信源编码10平均码长: 2.31.02.4.0)(51 iiKup.4.1
23、.)(52ii因为这两种码有相同的平均码长,所以有相同的编码效率,但每个信源符号的码长却不相同。在这两种不同的码中,选择哪个码好呢?我们引进码字任度 Ki 偏离平均码长 K 的方差 2,即51222 )()(iiii upKE分别计算上例中两种码的方差第五章 信源编码1116.0 2).3(1.02).(.0)2.(42 3. .4.)22可见,第一种编码方法的方差要小许多。所以,对于有限长的不同信源序列,用第一种方法所编得的码序列长度变化较小。因此相对来说选择第一种编码方法要更好些。由此得出,在哈夫曼编码过程中,当缩减信源的概率分布重新排列时,应使合并得来的概率和尽量处于是高的位置。这样可使
24、合并的元素重复编码次数减少,使短码得到充 分 利 用从以上实例中可以看出,哈夫曼码具有以下三个特点:哈夫曼码的编码方法保证了概率大的符号对应于短码,概率小的符号对应于长码,即pip j 有 KiK j,充分利用了短码。缩减信源的最后二个码字总是最后一位码元不同,前面各位码元相同(二元编码情况) ,从而保证了哈夫曼是即时码。每次缩减信源的最长两个码字有相同的码长。 这三个特点保证了所得的哈夫曼码一定是最佳码。第五章 信源编码(第十一讲)(2 课时)主要内容:(1)限失真信源编码定理(2)常用信源编码方法简介(游程编码、矢量量化编码、算术编码)重点:常用信源编码方法简介。难点:限失真信源编码定理、
25、限失真信源编码定理。特别提示:运用说明:本堂课推导内容较多,枯燥平淡,不易激发学生兴趣,要注意多讨论用途。另外,注意,第五章 信源编码12解题方法。多加一些内容丰富知识和理解。作业:灵活运用。课外仍以学生复习。限失真信源编码定理定理(限失真信源编码定理) 设 R(D)为离散无记忆信源 X 的信息率失真函数,R 为信息传输率,则当信息率 RR(D) ,只要信源序列长度 L 足够长,一定存在一种编码方法,其译码失真小于或等于 D , 为任意小的正数;反之,若 R0,每一个信源符号的平均码长满足如下公式:()()RK该定理指出,在失真限度内使信息率任意接近 R(D )的编码方法存在,然而,若信息率小
26、于R(D) ,平均失真一定会超过失真限度 D。对于连续平稳无记忆信源,虽然无法进行无失真编码,但在限失真情况下,有与该定理一样的编码定理。该定理只说明最佳编码是存在的,但对于如何进行编码却一无所知,因而就不能像无损编码那样从证明过程中引出概率匹配的编码方法,一般只能从优化的思路去求最佳编码。 这个定理证明了允许失真 D 确定后,总存在一种编码方法,使信息传输率 R 大于 R(D )且可任意接近 R(D) ,而平均失真小于允许失真 D。反之,若 RR(D ) ,那么该编码的平均失真将大于 D。如果用二进制符号进行编码的话,在允许一定失真 D 的情况下,平均每个信源符号所需的二元码符号的下限值就是
27、R(D) 。由此可见,信息率失真函数 R(D )确实是在允许失真度为 D 的情况下信源信息压缩的下限值。当信源给定后,无失真信源压缩的极限值是信源熵 H(U ) ;有失真信源压缩的极限值是信息率失真函数 R(D) 。 在给定某 D 后,一般 R(D)H (U) 。同样,该定理只是一个存在定理。至于如何寻找最佳压缩编码方法,定理中并没有给出。在实际应用中,该定理主要存在以下两大类问题。第一类问题是,符合实际信源的 R(D)函数的计算相当困难。首先,需要对实际信源的统计特性有确切的数学描述。其次,需要对符合主客观实际的失真给予正确的度量,否则不能求得符合主客观实际的 R(D)函数。 例如,通常采用
28、均方误差来表示信源的平均失真度。但对于图像信源来说,均方误差较小的编码方法,人们视觉感到失真较大。所以,人们仍采用主观观察来评价编码方法的好坏。因此,如何定义符合主客观实际情况的失真测度就是件较困难的事。第三,即便对实际信源有了确切的数学描述,又有符合主客观实际情况的失真测度,而信息率失真函数 R(D)的计算还是比较困难的。 第二类问题是,即便求得了符合实际的信息率失真函数,还需研究采用何种实用的最佳编码方法才能达到 R(D)。 第五章 信源编码13目前,这两方面工作都有进展。尤其是对实际信源的各种压缩方法,如对语音信号、电视信号和遥感图像等信源的各种压缩方法有了较大进展。相信随着数据压缩技术
29、的发展,限失真编码理论中存在的问题将会得到解决。 限失真信源编码常用信源编码方法一、游程编码游程:指数字序列中连续出现相同符号的一段。二元序列只有两种符号:“0”和“1”:连“0”段称为“0”游程,游程长度为 L(0)连“1”段称为“1”游程,游程长度为 L(1)由于是二进制序列, “0”游程和“1”游程总是交替出现。若规定二元序列总是从“0”开始,第一个游程是“0”游程,则第二个游程必为“1” 游程,第三个又是“0”游程对于随机序列,游程的长度是随机的,其取值为 1,2,3自至无穷。游程序列:用交替出现的“0”游程和“1”游程的长度,来表示任意二元序列。例如二元序列0001011100100
30、0l 可变换成如下游程序列31132131己规定游程序列从“0”开始,由上述游程序列,很容易恢复出原来的二元序列。游程序列已是多元序列,各长度就可按哈夫曼编码或其它方法处理以达到压缩码率的目的。这种从二元序列转换成多元序列的方法,在实现时比以前的并元法简单;因为游程长度的计数比较容易,得到游程长度后就可从码表中找出码字输出,同时去数下一个游程长度。此外,在减弱原有序列的符号间的相关性方面采用游程变换一般也比并元法更有效。当然,要对二元序列进行哈夫曼编码时应先测定“0”游程长度和“1”游程长度的概率分布,或由二元序列的概率特性去计算各种游程长度的概率。设二元序列为独立序列, “0”和“1”的概率
31、分别为 p0 和 p1,则“0”游程长度 L(0)的概率为)()(LpL式中 L(0)=1,2 ,游程长度至少是 1。从理论上来说,游程长度可以是无穷,但很长的游程实际出现的概率非常小。 1)0( 01Lpp则“1”游程长度 L(1)的概率为 01)(L1)( 1Lp第五章 信源编码14“0”游程长度的熵:“0”101)0( 1)0(21)(1)0(2 )(loglog pHppLpLH LLL 游程序列的平均游程长度 11)0()0(1)0(0 El LLL同理, “1”游程长度的熵和平均游程长度:变换后的游程序列是独立序列 011)()(pLElH)()0()( 11lXH游程变换后符号熵
32、没有变。因为游程变换是一一对应的可逆变换。所以变换后熵值不变。由于游程变换有较好的去相关效果,因而对游程序列进行哈夫曼编码,可获得较高的编码效率。假设“0”游程长度的哈夫曼编码效率为 0, “1”游程长度的哈夫曼编码效率为 1,由编码效率的定义得二元序列的编码效率 10)()(LH假设 0 1,则有 0 1当“0”游程和“1”游程的编码效率都很高时,采用游程编码的效率也很高,至少不会低于较小的那个效率。要想编码效率 尽可能高,应使上式的分母尽可能小,这就要求尽可能提高熵值较大的游程的编码效率,因为它在往分母中占的比重较大。理论上来说游程长度可从 1 到无穷。要建立游程长度和码字之间的一一对应的
33、码表是困难的。一般情况下,游程越长,出现的概率就越小;当游程长度趋向于无穷时,出现的概率也趋向于 0。按哈夫曼码的编码规则,概率越小码字越长,但小概率的码字对平均码长影响较小,在实际应用时常对长码采用截断处理的方法取一个适当的 n 值,游程长度为 1,2,2n-1, 2n,所有大于 2n 者都按 2n 来处理。然后按照哈夫曼码的编码规则,将上列 2n 种概率从大到小排队,构成码树并得到相应的码字。二、矢量量化编码要想得到性能好的编码,仅采用标量量化是不可能的。在最佳编码中,如将离散信源的多个符第五章 信源编码15号进行联合编码可提高效率,这对连续信源也是如此。当把多个信源符号联合起来形成多维矢
34、量,再对矢量进行标量量化时,自由度将更大,同样的失真下,量化级数可进一步减少,码率可进一步压缩。这种量化叫做矢量量化。 实验证明,即使各信源符号相互独立,多维量化通常也可压缩信息率。因而矢量量化引起人们的兴趣而成为当前连续信源编码的一个热点。可是当维数较大时,矢量量化尚无解析方法,只能求助于数值计算;而且联合概率密度也不易测定,还需采用诸如训练序列的方法。一般来说,高维矢量的联合是很复杂的,虽已有不少方法,但其实现尚有不少困难,有待进一步研究。设矢量量化器输入集为 XX 1,X 2,X N,X jX,X j(x j1,x j2,,x jk) , XR k(k 维欧几里德空间) ,把 R k 划
35、分成 J2 n 个互不相交的子空间 R1,R 2,R ,求出每个子空间的质心 Yi,所有的 Yi 构成 YY 1,Y 2,Y ,Y 为量化器的输出空间,也叫码书(或码本) ,Y i 叫码字或码矢,J 叫码书的长度。 对 J 阶 K 维的矢量量化,实质上是判断输入 Xj Rk 属于哪个子空间 Ri,然后输出该子空间代表码字 Yi,即: YiQ (X j) , 1i J,1j N (442) 这里 Yi 就是 Xj 的编码。实际编码时,在发送端只需记录代表码字 Yi 的下标 i,所以编码过程是把 X 映射到I1 , 2, J;而译码过程是在接收端依据收到的 I 代码,查找码书 Y,获得码字 Yi,
36、用来代替 Xj。由于总的码字个数 J 一般远小于总的输入信号 NK,所以矢量量化的压缩能力非常大。传输或存储一个矢量所需比特为 lbJ(一般 J2 n),它是一个 K 维矢量,就是 K 个输入信号,所以每个输入信号的平均比特只有 lbJ/K,称之为压缩比。适当选取码书长度 J 和码字维数 K,可以获得很大压缩比。矢量量化中码书的码字越多,维数越大,失真就越小。只要适当地选择码字数量,就能控制失真量不超过某一给定值,因此码书控制着矢量的大小。矢量量化时每输入一个 Xj,都要和 J 个码字 Yi 逐一比较,搜索与其最接近的码字 Yi。由于两者均为 K 维矢量,所以工作量很大。矢量量化是定长码,容易
37、处理。矢量量化由码书 Y 和划分 Ri 的条件惟一确定。当码书确定后,通过最近邻域准则可以惟一确定区域分割。因此,最佳量化器的设计也就是最佳码书 Y 的设计。前面,在讨论一维标量的最佳设计时,引入了 Max Livod 的迭代算法,1980 年 Linde、 Buzo 和 Gray 将此算法推广到了多维空间,称作 LBG 算法。因 LBG 算法由于理论上的严密性和实现的简便性以及较好的设计效果而得到了广泛的应用,并成为各种改进算法的基础。有关 LBG 算法等知识请参阅有关文献。三、算术编码1、算术码的主要概念:把信源输出序列的概率和实数段0,1 中 的 一 个 数 联 系 起 来 。 设信源字
38、母表为a 1, a2,其发生概率为 p(a1)=0.6 ,p(a2)=0.4。将0,1 分成两个与概率比例相应的区间, 0,0.6 0.6,l当信源输出的第一个符号 s1 = a1 时,数 的值处在0,0.6 ,s 1 = a2 时,0.6,l。第五章 信源编码16根据信源字母 s1 的情况,把 所在的段再次按概率比例分成0,1 0,0.6 0.6,l 0,0.36 0.36,0.6 0.6,0.84 0.84,1s1 = a1 s1 = a2根据信源输出的第二个字母 s2 的取值情况,可以更精确地确定出数 所在的区间位置。在信源输出第 n1 个符号后,若 所在的位置为An-1 ,B n-1则
39、当信源输出的第 n 个符号为:sn= a1 时, sn= a2An= An-1 An= An-1+0.6(B n-1A n-1) Bn= An-1+0.6(B n-1A n-1) Bn= Bn-1按照这一方法,序列的概率刚好等于 所在区间的长度。随着序列的长度不断增加, 所在区间的长度就越短,也就可以更加精确地确定 的位置。当信源字母序列长度趋于无限时, 所在区间成为一点。2、累积概率 设信源字母表为 A= a1, a2,ai, am,字母 ai 的概率 p(ai)修正的累积概率为 )()(1kkiipaF定义字母 ak 的累积概率为1)()(kiiaF(a1) = 0 ,F(a 2) = p
40、(a1) ,F(a 3) = p(a1)+ p(a2)p(ak) = F(ak+1) F(ak)当 A=0,l二元信源时:F(0) = 0 , F(1) = p(0) 计 算 信 源 序 列 s =(s 1,s2,sn)的 累积概率以二元无记忆信源为例:第五章 信源编码17初始时:在0,l由 F(1)划分成二个子区间:0,l 0,F(1) F(1),1, F(1) = p(0)0 1子区间0,F(1) F(1),1的宽度为A(0) = p(0) A(1) = p(1)若 输 入 序 列 的 第 一 个 符 号 为s =“0”,即落入对应的区间0,F(1)F(s =“0”) = F(0) = 0
41、 当 输 入 第 二 个 符 号 为“1”, s =“01”对 应 的 区 间 在 0,F(1)中 进 行 分 割A(00) = A(0) p(0) = p(0) p(0) = p(00)A(01) = A(0) p(1) = p(0) p(1) = p(01)= A(0) A(00)“00”对应的区间0,F(01);“01”对应的区间F(01) , F(1)s =“01”的累积概率F(s =“01”) = F(01) = p(0) p(0) 当输入第三个符号为“1” , s1 =“011”,所对应的区间在F(01) , F(1)中进行分割对 应 的 区 间 F(s) , F(s)+ A(s)
42、 p(0)对 应 的 区 间 F(s)+ A(s) p(0) , F(1)A(010) = A(01) p(0) = A(s)p(0) A(011) = A(01) p(1) = A(s)p(1)= A(01) A(010)= A(s) A(s0)F(s1) = F(s)+ A(s) p(0) F(s0) = F(s)现已输入三个符号串,将这符号序列标为 s,接着输入第四个符号为“0”或“1” 。可计算出 s0=“0110”或 s1=“0111”对应的子区间及其累积概率。第五章 信源编码18当已知前面输入符号序列为 s,若接着再输入一个符号“0”累积概率区间宽度F(s0) = F(s)A(s0
43、) = A(s)p(0)若接着输入的一个符号是“1” ,对序列 s1 的累积概率为F(s1) = F(s)+ A(s) p(0)A(s1) = A(s)p(1) = A(s)A(s0) 由前分析又知,符号序列对应的区间宽度为A(0) = p(0) A(1) = 1A(0) = p(1)A(00) = p(00) = A(0)p(0)= p(0) p(0)A(01) = A(0) A(00) = p(01) = A(0)p(1) = p(0) p(1)A(10) = p(10) = A(1)p(0) = p(1) p(0)A(11) = A(1) A(10) = p(11) = A(1)p(1)
44、 = p(1) p(1)A(010) = A(01) p(0) = p(01)p(0) = p(010)A(011) = A(01)A(010) = A(01)p(1) = p(01)p(1) = p(011) 信 源 符 号 序 列 s 所对应区间的宽度等于符号序列 s 的概率 p(s) 二元信源符号序列的累积概率的递推公式为F(sr) = F(s) + p(s ) F(r) (r =0,1) 其中 sr 表示已知前面信源符号序列为 s 接着再输入符号为 r。而 F(r) :F(0) = 0 ,F(1) = p(0)同样可得信源符号序列所对应区间的宽度的递推公式为第五章 信源编码19A(sr
45、) = p(sr) = p(s ) p(r) (r =0,1)已输入的二元符号序列为 s =“011”,若接着输入符号为 1 得序列的累积概率:F(s1) = F(0111) = F(s =011) + p(011) p(0)= F(s =01) + p(01) p(0) + p(011) p(0)= F(s =0) + p(0) p(0) + p(01) p(0) + p(011) p(0)= 0 + p(00) + p(010) + p(0110) 其对应区间宽度A(s1) = A(s =011) p(1) = p(011)p(1) = p(0111)由于F(sr) = F(s) + p(
46、s ) F(r)A(sr) = p(sr) = p(s ) p(r)是可递推运算,因此适合于实用。实际中,只需两个存储器,把 p(s ) 和 F(s)存下来,然后根据输入符号和上式,更新两个存储器中的数值。因为在编码过程中,每输入一个符号要进行乘法和加法运算,所以称此编码方法为算术编码。将上式推广到多元信源序列,得一般的递推公式F(sak) = F(s) + p(s) F(ak)A(sak) = p(sak) = p(s) p(ak)通过关于信源符号序列的累积概率的计算,F(s)把区间0,1 分割成许多小区间,不同的信源符号序列对应于不同的区间为F(s), F(s)+ p(s) 。可取小区间内
47、的一点来代表这序列。代 表 大 于 等 于 的 最 小 整 数 。LsF.0)(令 )(1logsp把累积概率 F(s) 写成二进制的小数,取小数点后 L 位,以后如果有尾数,就进到第 L 位,这样得到一个数 C。例 F(s) = 0.10110001,p(s) 1/17,则 L = 5,得 C = 0.10111,s 的码字为 10111这样选取的数值 C,一般根据二进小数截去位数的影响 ,得 CF(s)2 -L 当 F(s)在 L 位以后没有尾数时 C=F(s)。而由 可知 F(s)2 -L)(logspL则信源符号序列 s 对应区间的上界F(s)+ p(s) F(s)+ 2-LC可见数值 C 在区间F(s), F(s)+ p(s)内。信源符号序列对应的不同区间是不重叠的,所以编得的码是即时码。第五章 信源编码20实用中,采用累积概率 F(s)表示码字 C(s),符号概率 p(s)表示状态区间 A(s),则有C(sr) = C(s) + A(s ) F(r)A(sr) = A(s ) p(r)因为信源符号序列