1、第五章 无失真信源编码,5.1 信源编码的相关概念 5.2 定长码及定长编码定理 5.3 变长码及变长编码定理 5.4 变长码的编码方法 5.5 实用的无失真信源码方法,5.1 信源编码的相关概念,5.1.1 编码器信源输出的符号序列,需要变换成适合信道传输的符号序列,一般称为码序列,对信源输出的原始符号按照一定的数学规则进行的这种变换称为编码,完成编码功能的器件,称为编码器。接收端有一个译码器完成相反的功能。信源编码器的输入是信源符号集 ,共有q个信源符号。同时存在另一个符号集 ,称为码符号集,共有r个码符号,码符号集中的元素称为码元或码符号,编码器的作用就是将信源符号集 Si 中的符号 变
2、换成由 个码符号组成的一一对应的码符号序列。编码器输出的码符号序列称为码字,并用 来表示,它与信源符号 之间是一一对应的关系,如图5.1所示。,码字的集合C称为码,即 。信源符号 对应的码字 包含 个码符号, 称为码字长度,简称码长。所以,信源编码就是把信源符号序列变换到码符号序列的一种映射。 若要实现无失真编码,那么这种映射必须是一一对应的、可逆的。 一般来说,人们总是希望把信源所有的信息毫无保留地传递到接收端,即实现无失真传递,所以首先要对信源实现无失真编码。,图5.1 信源编码器,信源编码有以下3种主要方法: (1) 匹配编码根据信源符号的概率不同,编码的码长不同:概率大的信源符号,所编
3、的代码短;概率小的信源符号所编的代码长,这样使平均码长最短。将要讲述的香农编码、哈夫曼编码、费诺码都是概率匹配编码,都是无失真信源编码。 (2) 变换编码 先对信号进行变换,从一种信号空间变换为另一种信号空间,然后针对变换后的信号进行编码。 (3) 识别编码识别编码主要用于印刷或打字机等有标准形状的文字符号和数据的编码,比如中文文字和语音的识别。后两种信源编码均为有失真的信源编码。无失真信源编码主要针对离散信源,连续信源在量化编码的过程中必然会有量化失真,所以对连续信源只能近似地再现信源的消息。,5.1.2 码的分类,1. 分组码和非分组码定义5.1 将信源符号集中的每个信源符号 固定地映射成
4、一个码字 ,这样的码称为分组码。用分组码对信源符号进行编码时,为了使接收端能够迅速准确地将码译出,分组码必须具有一些直观属性。与分组码对应的是非分组码,又称为树码、树码编码器输出的码符号通常与编码器的所有信源符号都有关。 2. 奇异码与非奇异码定义5.2 若一种分组码中的所有码字都不相同,则称此分组码为非奇异码,否则称为奇异码。,3. 唯一可译码与非唯一可译码定义5.3 任意有限长的码元序列,如果只能唯一地分割成一个个码字,便称为唯一可译码。唯一可译码的物理含义是指不仅要求不同的码字表示不同的信源符号,而且还要求对由信源符号构成的符号序列进行编码时,在接收端仍能正确译码而不发生混淆。唯一可译码
5、首先是非奇异码,且任意有限长的码字序列不会雷同。 4. 即时码与非即时码定义5.4 无需考虑后续的码符号就可以从码符号序列中译出码字,这样的唯一可译码称为即时码。,下面讨论唯一可译码成为即时码的条件。定义5.5 设 为一码字,对于任意的 ,称码符号序列的前j个元素 为码字的前缀。按照上述的前缀的定义,有下述结论:定理5.1 一个唯一可译码成为即时码的充要条件是其中任何一个码字都不是其他码字的前缀。即时码可以用树图来构造图5.2是一个二元即时码的树图,图5.2 二元即时码的树图,树是没有回路的图,所以它也是由节点和弧构成的树中最顶部的节点称为根节点,没有子节点的节点称为叶子节点。所有根节点的子节
6、点称为一阶节点,所有一阶节点的子节点称为二阶节点,依此类推。 阶节点最多有 个。节点的阶次又称为节点的深度。综上所述,可将信源编码作如下分类:,码,非分组码(树码),分组码(块码),奇异码,非奇异码,非唯一可译码,唯一可译码,即时码,非即时码,5.2 定长码及定长编码定理,若对一个有q个信源符号的信源S进行定长编码,那么信源S存在唯一可译定长码的条件是(5.1)其中,r是码符号集中的码元数,l是定长码的码长。如果对信源S的N次扩展信源 进行定长编码,若要编得的定长码是唯一可译码,则必须满足(5.2)其中,q是信源S的符号个数, 是信源S的N次扩展信源 的符号个数,r是码符号集X的码符号数。,定
7、长编码的信息传输效率是很低的。提高信息传输效率的方法有:方法1 考虑符号之间的依赖关系,对信源S的扩展信源进行编码。方法2对于概率等于0或非常小的符号序列不予编码。 定理5.2 离散无记忆信源的熵为H(S),若对信源长为N的序列进行定长编码,码符号集X中有r个码符号,码长为l,则对于任意 ,只要满足则当N足够大时,可实现几乎无失真编码,即译码错误概率任小;反之,如果则不可能实现几乎无失真编码,即当N足够大时,译码错误概率为1。,定理5.2是在离散平稳无记忆信源的条件下证明的,但它同样适合于平稳有记忆信源,只要将式中H(S)改为极限熵 即可,条件是有记忆信源的极限熵 和极限方差 存在。定长信源编
8、码定理给出了定长编码时每个信源符号最少所需的码符号的理论极限,该极限值由H(S)决定。定义5.6 设熵为H(S)的离散无记忆信源,若对信源的长为N的符号序列进行定长编码,码符号集中码符号个数为r,设码字长为l,定义 比特/信源符号为编码速率,它表示平均每个信源符号编码后能载荷的最大信息量。这时,定理5.2的条件可表述为RH(S)+,即编码速率大于信源的熵才能实现几乎无失真编码。为了衡量编码效果,引进编码效率。,定义5.7 定义 为编码效率。由定理5.2可得最佳编码效率为 ,所以在已知方差和信源熵的条件下,信源符号序列长度N与最佳编码效率和允许错误概率 的关系为:当允许错误概率越小,编码效率又要
9、高,那么信源符号序列长度N必须越长在实际情况下,要实现几乎无失真的定长编码,N需要的长度将会大到难以实现。,5.3 变长码及变长编码定理,5.3.1 Kraft不等式和McMillan不等式定理5.3 设信源符号集为 ,码符号集为 ,对信源进行编码,得到的码为 ,码长分别为 。即时码存在的充要条件是 这称为Kraft不等式。由Kraft不等式可知,给定r和q,只要允许码字长度可以足够长,则码长总可以满足Kraft不等式而得到即时码,Kraft不等式指出了即时码的码长必须满足的条件,(5.11),对于唯一可译码,该不等式又称为McMillan不等式。定理5.4 唯一可译码存在的充要条件是 r为码
10、符号个数,为码字长度,q为信源符号个数。定理5.4指出了唯一可译码中r、q、 之间的关系,如果满足这个不等式的条件,则一定能够构成至少一种唯一可译码,否则,无法构成唯一可译码它给出了唯一可译变长码的存在性。另外,从定理5.3和定理5.4可以得到一个重要的结论,即任何一个唯一可译码均可用一个相同码长的即时码来代替,因为即时码很容易用树图法构造,因此要构造唯一可译码,只要构造即时码就可以了。,(5.12),5.3.2 唯一可译码的判别准则,A.A.Sardinas和G.W.Patterson于1957年提出下述算法用于判断码C的唯一可译性此算法的原理如下所示:其中 都是码字。可知,当且仅当某个有限
11、长的码符号序列能译成两种不同的码字序列时,此码不是唯一可译码,此时 一定是 的前缀,而 的尾随后缀一定是另一码字 的前缀;而 的尾随后缀又是其他码字的前缀最后,码符号序列的尾部一定是一个码字。,设C为码字集合,按以下步骤构造此码的尾随后缀集合F:(1) 考查C中所有的码字,若 是 的前缀,则将相应的后缀作为一个尾随后缀码放入集合 中;(2) 考查C和 两个集合,若 是 的前缀或 是 的前缀,则将相应的后缀作为尾随后缀码放入集合 中;(3) 即为码C的尾随后缀集合;(4) 若F中出现了C中的元素,则算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素,则返回真。定理5.5 一个码是唯
12、一可译码的充要条件是的 并集中没有C中的码字。,5.3.3 无失真变长编码定理,定义5.8 设有信源 编码后的码字分别为 ,各码字相应的码长分别为 因为是唯一可译码,信源符号 和码字 一一对应,则定义此码的平均码长为 其中, 表示每个信源符号平均需用的码元数。当信源给定时,信源熵H(S)就确定了,而编码后每个信源符号平均用 个码元来变换,故平均每个码元载荷的信息量即编码后信源的信息传输率。,码符号/信源符号,(5.20),定义5.9 编码后信源的信息传输率为 如果传输一个码符号平均需要t秒时间,则编码后信源每秒钟提供的信息量为 可以看出, 越小,则 越大,信息传输率就越高,因此我们感兴趣的码是
13、使平均码长 最短的码。定义5.10 对于给定的信源和码符号集,若有一个唯一可译码,其平均码长 小于所有其他唯一可译码,则称这种码为紧致码或最佳码。无失真信源编码的核心问题就是寻找紧致码,比特/码符号,(5.21),(5.22),下面的定理给出了紧致码的平均码长可能达到的理论极限定理5.6 若一个离散无记忆信源S,熵为H(S),用拥有r个码符号的码符号集 对S进行无失真编码,则总可以找到一种唯一可译码,其平均码长满足若熵以r进制为单位,则式(5.23)可写成 另外还可以看到平均码长的极限值与无失真定长信源编码定理中的极限值是一致的。,(5.23),(5.33),5.3.4 香农第一编码定理,定理
14、5.7 设离散无记忆信源S的信源熵H(S),它的N次扩展信源 ,其熵 。并用码符号 对信源 进行编码,总可以找到一种唯一可译码,使信源S中每个信源符号所需的平均码长满足 或者写成定理5.6可以看作定理5.7在N=1时的特殊情况。定理5.7是香农信息论的主要定理之一。,(5.34),(5.35),定义5.11 编码后信道的信息传输率为这里, ,所以无失真信源编码的实质就是对离散信源进行适当的变换,使变换后新的码符号信源(信道的输入)尽可能为等概率分布,使新信源的每个码符号平均所含的信息量达到最大,从而使信道的信息传输率R达到信道容量,实现信源与信道理想的统计匹配。这就是香农第一定理的物理意义。,
15、比特/码符号,(5.43),比特/信源符号,码符号/信源符号,为了衡量各种编码是否已达到极限情况,我们定义变长码的编码效率。定义5.12 设对信源S进行无失真编码所得到的平均码长为 ,则 ,定义 为编码效率,对同一信源来说,码的平均码长 越短,越接近极限 ,信道的信息传输率越高,越接近无噪无损信道的信道容量,这时也越接近于1,所以用码的效率来衡量各种编码的优劣。,(5.44),另外,为了衡量各种编码与最佳码的差距,引入码的剩余度的概念。定义5.13 定义为码的剩余度。在二元无噪无损信道中r=2, ,所以在二元无噪无损信道中信息传输率注意它们数值相同,单位不同是个无单位的比值,而R的单位是比特/
16、码符号。,(5.45),5.4 变长码的编码方法,本章介绍的变长码的常见编码方法,如香农编码、香农-费诺-埃利斯编码、霍夫曼编码、费诺编码均为匹配编码,也称统计编码,都是通过使用较短的码字来给出现概率较高的信源符号编码。而出现概率较小的信源符号用较长的码字来编码,从而使平均码长最短,达到最佳编码的目的。下面介绍这几种方法: 5.4.1 香农编码香农码的方法是选择每个码字长度 满足按照香农编码方法构造的码,其平均码长 不超过上界,即,其具体方法如下: (1) 将信源发出的q个消息符号按其概率的递减次序排列(2) 计算出各个信源符号的累加概率(3) 按下式计算第i个消息的二元代码组的码长(4) 将
17、累加概率 (十进制小数)变换成二进制小数。根据码长 取小数点后 个二进制符号作为第i个消息的码字。,5.4.2 香农-费诺-埃利斯编码,将香农编码中的累加概率换成修正累加概率即可得到相应的香农-费诺-埃利斯编码:(1) 计算出各个信源符号的修正累加概率(2) 按下式计算第i个消息的二元代码组的码长(3) 将累加概率 (十进制小数)变换成二进制小数根据码长 取小数点后 个二进制符号作为第i个消息的码字,5.4.3 霍夫曼编码,这是霍夫曼于1952年提出的一种构造紧致码的方法具体方法如下: (1) q将个信源符号按概率大小递减排列 (2) 用“0,1”码符号分别代表概率最小的两个信源符号,并将这两
18、个概率最小的信源符号合并成一个,从而得到只包含q-1个符号的新信源 ,称为缩减信源 ; (3) 把缩减信源 的符号仍按概率大小递减次序排列,再将其最后两个概率最小的信源符号分别用“0”和“1”码符号表示,并且合并成一个符号,这样又形成了q-2个信源符号的缩减信源 ; (4) 依次继续下去,直至信源最后只剩下两个信源符号为止,将这最后两个信源符号分别用二元码符号“0”和“1”表示; (5) 然后从最后一级缩减信源开始,进行回溯,就得到各信源符号所对应的码符号序列,即相应的码字。,霍夫曼编码方法得到的码并非是唯一的。造成非唯一的原因有两个: (1) 每次对信源缩减时,赋予最后两个概率最小的信源符号
19、的码符号“0”和“1”是可以互换的,所以可得到不同的霍夫曼码; (2) 对信源进行缩减时,如果两个概率最小的信源符号合并后的概率与其他信源符号的概率相同,则在进行概率排序时的次序可以是任意的,因此会得到不同的霍夫曼码。 霍夫曼码是用概率匹配的方法进行信源编码它有两个明显特点: (1) 霍夫曼码的编码方法保证了概率大的信源符号对应的码长小,概率小的信源符号对应的码长大,充分利用了短码; (2) 每次缩减信源的最长两个码字有相同的码长,并且仅仅只有最后一位码符号不同。 定理5.8 霍夫曼码是紧致码。,5.4.4 r元霍夫曼编码,二进制霍夫曼码的编码方法很容易推广到r进制的情况,只是编码过程中构成缩
20、减信源时,每次都是将r个概率最小的信源符号合并,并分别用码符号0,1,(r-1)表示。为了充分利用短码,使霍夫曼码的平均码长最短,必须使最后一个缩减信源恰好有r个信源符号因此对于r元霍夫曼编码,信源S符号个数q必须满足q=(r-1)+r。表示信源缩减次数如果不满足上式,则可以在最后增补一些概率为0的信源符号,因此上式又可以写成q+i=(r-1)+r。i为增加的信源符号数,并且是满足上式的最小正整数或0。当r=2时的二元码信源S的符号个数q满足q=+2。由于霍夫曼码是紧致码,所以编码后单个信源符号平均码长随N的增加很快接近于极限值信源熵。,5.4.5 费诺编码,费诺码编码过程如下: (1) 将信
21、源符号 以概率递减次序排列,即(2) 将依次排列的信源符号以概率分为两组,使两个组的概率和基本相等,并对各组赋予二元码符号“0”和“1”; (3) 将每一大组的信源符号进一步再分成两组,使划分后的两个组的概率和近于相等,又分别赋予各组二元码符号“0”和“1”; (4) 如此重复,直至每组只剩下一个信源符号为止; (5) 信源符号所对应的码符号序列即为费诺码,以上讨论了霍夫曼码和其他一些编码方法,并且证明了霍夫曼码是最佳码,当N不很大时,它能使无失真编码的效率接近于1,但是在实际使用时设备较复杂。首先,每个信源符号所对应的码长不同,一般情况下,信源符号以匀速输出,信道也是匀速传输的。其次,差错扩
22、散的问题变长码的一个码元的差错可能造成译码错误,并且还会造成同步错误,结果后面一系列码字也会译错。最后,霍夫曼码的编译码需要用查表的方法来进行。,表5.15 三种编码方法的比较,5.5 实用的无失真信源编码方法,5.5.1 游程编码游程编码主要用于黑白二值文件、传真的数据压缩。 由于传真文件中连“0”和连“1”较多这些连“0”或连“1”的字符串称为游程对游程长度进行霍夫曼编码或其他的编码处理就可以达到压缩数据的目的。图5.5是一幅1050黑白二值图像。 ,图5.5 二值图像,MH编码是一种实用的游程编码算法,应用于黑、白传真数据的压缩编码,根据不同的黑、白游程长度有两张结尾码表和两张组合码表其
23、基本的编码规范为(1) 游程长度在063时,直接查表用相应的结尾码作为码字;(2) 游程长度在641728范围内时,用组合码加上结尾码作为相应的码字;(3) 每行的第一个游程规定为白游程(长度可以为零),每行用一个结束码(EOL) 终止;(4) 在传输时,每页数据之前加一个结束码,每页尾部连续实用6个结束码。,5.5.2 算术编码,算术式编码是一种非分组码,无需计算出所有N长信源序列的概率分布及码表,可以直接对输入的信源符号序列编码输出。这种方法是由香农-费诺-埃利斯编码直接扩展得到的。算术式编码算法的中心思想是高效地计算n长信源符号序列x的分布概率p(x)和累积概率F(x),然后用区间F(x
24、)-p(x), F(x)中的一个值来作为x的码字。假定信源是二进制的,并且分组的长度n已知。定义5.14 两个n长信源符号序列x和y,定义x大于y,当第一个使得 的i有 。,5.5.3 LZW码,LZW码也称基于字典的编码方法,它是定长码。 (1) 基于字典编码的基本原理计算机文件是以字节为单位组成的。LZW码是一种自适应变码,它的字典是直接由被压缩文件在编码过程中生成的。 (2) 字典的构成字典的容量为4096(04095),序号用12bit表示最后一个单词(第4095个单词)为空。 (3) 算法字典初始化动态数据初始化:初始化新单词存放位置指针P,将它指向字典的第一个空位置。,如果文件再没
25、有字符了,输出当前单词W的序号。编码结束。如果文件中还有字符,把当前单词W作为前缀,再从被压缩文件中读入一个字符CH,把CH作为尾字符,得到一个单词 。如果字典中已有 ,则将 看作当前单词W,返回。如果字典中没有 (发现一个新单词),先将原单词W的序号输出,再加新单词 ,增加到字典中,然后把刚刚读入的字符CH作为当前单词W,返回。 (4) 适用文件类型不适合小文件的压缩(因为压缩编码初期,由于字典中的单词很少,字典对压缩效果的贡献也很少,主要是进行字典的扩充),也不适合太大的文件(因字典容量有限,文件太大时字典满了,效率将受到制约)适合内容有明显单词结构的文件(如文本文件、程序文件)。,(5) 译码字典初始化动态数据初始化如果压缩中已经没有码字,解码结束。否则继续读入一个码字。如果读入的码字是无效码字FFF,则解码结束,否则下一步。如果在字典中已经有该码字对应的单词,则采用递归算法,输出该单词的内容。并将单词的第一个有效字符作为尾字符,将已经记忆的前一个码字作为前缀,组成一个新单词,写入字典中,然后将当前码字记忆下来,返回;否则,首先在字典中生成新的单词,然后再输出这个单词,将新单词的码字记忆下来,返回。这时的新单词一定是首尾相同的单词。 (6) LZW编码算法的优化,