哈夫曼编码方法.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.哈夫曼编码的方法 编码过程如下 : (1) 将信源符号按概率递减顺序排列 ; (2) 把两个最小的概率加起来 , 作为新符号的概率 ; (3) 重复步骤 (1) 、 (2), 直到概率和达到 1 为止 ; (4) 在每次合并消息时,将被合并的消息赋以1和0或0和1; (5) 寻找从每个信源符号到概率为1处的路径,记录下路径上的1和0; (6) 对每个符号写出1、0序列(从码数的根到终节点)。 2.哈夫曼编码的特点 哈夫曼方法构造出来的码不是唯一的 。 原因 ·在给两个分支赋值时 , 可以是左支 ( 或上支 ) 为 0, 也可以是右支 ( 或下支 ) 为 0, 造成编码的不唯一。 ·当两个消息的概率 相等时, 谁前谁后也是随机的 , 构造出来的码字就不是唯一的。 哈夫曼编码码字字长参差不齐 , 因此硬件实现起来不大方便。 哈夫曼编码对不同的信源的编码效率是不同的。 · 当信源概率是 2 的负幂时 , 哈夫曼码的编码效率达到 100%; · 当信源概率相等时 , 其编码效率最低。 · 只有在概率分布很不均匀时 , 哈夫曼编码才会收到显著的效果 , 而在信源分布均匀的情况下 , 一般不使用哈夫曼编码。 对信源进行哈夫曼编码后 , 形成了一个哈夫曼编码表。解码时 , 必须参照这一哈夫编码表才能正确译码。 ·在信源的存储与传输过程中必须首先存储或传输这一哈夫曼编码表在实际计算压缩效果时 , 必须考虑哈夫曼编码表占有的比特数。在某些应用场合, 信源概率服从于某一分布或存在一定规律 ( 这主要由大量的统计得到 ), 这样就可以在发送端和接收端固定哈夫曼编码表 , 在传输数据时就省去了传输哈夫曼编码表 , 这种方法称为哈夫曼编码表缺省使用。 使用缺省的哈夫曼编码表有两点好处: · 降低了编码的时间 , 改变了编码和解码的时间不对称性 ; · 便于用硬件实现 , 编码和解码电路相对简单。这种方法适用于实时性要求较强的场合。虽然这种方法对某一个特定应用来说不一定最好 , 但从总体上说 , 只要哈夫曼编表基于大量概率统计,其编码效果是足够好的。 3. 哈夫曼编码举例 现在有8个待编码的符号 M0,….,M0 它们的概率如下表所示,使用霍夫曼编码算法求出8个符号所分配的代码。(写出编码树) 待编码的符号 概率 M0 0.2 M1 0.4 M2 0.1 M3 0.15 M4 0.03 M5 0.04 M6 0.07 M7 0.01 解: 为了进行哈夫曼编码 , 先把这组数据由大到小排列 , 再按上方法处理 (1) 将信源符号按概率递减顺序排列。 (2) 首先将概率最小的两个符号的概率相加,合成一个新的数值。 (3) 把合成的数值看成是一个新的组合符号概率,重复上述操作,直到剩下最后两个符号。 ? ? 5.4.2 Shannon-Famo编码 Shannon-Famo(S-F) 编码方法与 Huffman 的编码方法略有区别 , 但有时也能编出最佳码。 1.S-F码主要准则 符合即时码条件 ; 在码字中 ,1 和 0 是独立的 , 而且是 ( 或差不多是 )等概率的。 这样的准则一方面能保证无需用间隔区分码字,同时又保证每一位码字几乎有1位的信息量。 2.S-F码的编码过程 信源符号按概率递减顺序排列 ; 把符号集分成两个子集 , 每个子集的概率和相等或近似相等 ; 对第一个子集赋编码 0, 对第二个子集赋编码 1; 重复上述步骤 , 直到每个子集只包含一个信源符号为止。 5.4.3 游程编码 游程编码(简写为RLE或RLC)是一种十分简单的压缩方法 ,它将数据流中连续出现的字符 ( 称为游程 ) 用单一的记号来表示。例如,字符串 a b a C C C b b a a a a 可以压缩为 a b a 3c 2b 4a 游程编码的压缩效果不太好, 但由于简单, 编码 / 解码的速度非常快 , 因此仍然得到广 泛的应用。许多图形和视频文件, 如 .BMP,.TIF 及 .AVI 等 , 都使用了这种压缩。 ? 5.4.4 算术编码 1.算术编码 算术编码把一个信源集合表示为实数线上的 0 到 1 之间的一个区间。这个集合中的每个元素都要用来缩短这个区间。信源集合的元素越多,所得到的区间就越小,当区间变小时,就需要更多的数位来表示这个区间,这就是区间作为代码的原理。算术编码首先假设一个信源的概率模型,然后用这些概率来缩小表示信源集的区间。 2.举例说明算术编码过程 [ 例 ]设英文元音字母采用固定模式符号概率分配如下: 字符 a e i o u 概率 0.2 0.3 0.1 0.2 0.2 范围 [0,0.2] [0.2,0.5] [0.5,0.6] [0.6,0.8] [0.8,1.0] 设编

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档