一种基于条件概率的哈夫曼解码的方法技术

技术编号:3420164 阅读:237 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于条件概率的哈夫曼解码的方法,包括以下步骤:1)统计待压缩数据中各个码字出现的条件概率,构成各码字的条件概率表;2)在码字概率大小排列中选择前50%的码字各自作为前一码字分别构建相应的子编码表,该子编码表是由所述前一码字中对应条件概率表中条件概率值大于0.1的码字及其索引值构成;3)对各码字进行查表匹配,根据前一码字和步骤2)的子编码表的存在与否,对应选择子编码表或待压缩数据的原编码表为当前码表,并按顺序找到匹配码字,得到相关信息完成解码。对比顺序查找法和索引查找法,本发明专利技术能显著减少查表次数,明显提高解码速度。

【技术实现步骤摘要】

本专利技术涉及一种解码方法,特别涉及。
技术介绍
在数据压縮领域哈夫曼算法应用得非常广泛,特别是各种音频和视频的编 解码算法中都应用到这种算法。哈夫曼算法是一种根据待压縮数据中各元素出 现的概率进行编码和解码的算法,能无损压縮数据所占用的空间。编码过程举 例如下。待压縮数据AABCABAADACB不压縮情况下编码如下00—A, Ol—B, IO—C, ll一D不压縮情况下表示为00 00 01 10 00 01 00 00 11 00 10 01设各元素出现概率为:P(A)二O. 6, P(B)二O. 25, P(C)二O. 15, P(D)二0.05编码表为1—A, Ol—B, 001—C, OOO—D压縮后码流为1 1 01 001 1 01 1 1 000 1 001 01不压缩存储该数据需要24个字符,压缩后只需要21个字符,减少了 3个 字符的空间。各元素出现概率是一个先验数据, 一般是根据待压缩数据的特性 推算得出,或者对大量待压缩数据进行统计得出。解码是编码的逆过程,方法是重复在码流中查找编码表中的码字,再还原 为码字对应的信息,最后依次组合为待压縮数据。上述例子的压缩码流解码过 程如下压缩码流为1 1 01 001 1 01 1 1 000 1 001 01解码后数据AABC ABAAD AC B在音频和视频的编解码算法中的熵编码环节一般采用哈夫曼算法进行处 理。编码过程将之前环节生成的中间数据按编码表转换为对应的码字,再按照 -定的格式生成最终的码流。解码过程首先在码流中依次查找编码表中的码字, 转换为对应的中间结果,再由后续环节进行处理。实际应用中的编码表一般都 有几百个码字,根据各元素出现的概率制定。可见,哈夫曼解码过程实际上是 一个包含大量査表操作的匹配过程,减少匹配所需的查表次数就能加快哈夫曼 解码的速度。以下描述了哈夫曼解码中査表匹配的常见解决方案。(1) 、顺序查找法。从编码表中依次取出码字,根据该码字的长度取码流 首部相同位数的二进制序列进行比较,如果相同则匹配成功,否则取下一个码 字重复上述过程。顺序查找法的效率较低,对于具有几百个码字的码表,每次 一般需要几十次以上的比较,优点是节省码表所占用的空间。(2) 、优化的顺序査找法。在解码前首先对编码表进行重排,按照各码字 出现的概率从大到小排列,然后在顺序查找法中使用整理后的编码表。出现概 率大的码字只需较少的比较次数就能査找成功,总体査表次数有所降低,速度 比原始的顺序查找法有所提高。(3) 、索引査找法。对码表中所有码字按照前若干位分类,形成若干个相 对较小的子编码表和一个索引表。解码时首先取码流的前若干位,根据索引表 比较得到该码字所属的子编码表,然后在该子编码表中进行顺序查找。由于各 子编码表中码字数量较少,本方法减少了査表次数。现有普遍使用的哈夫曼解码算法主要利用编码表体现的码字出现的概率, 查表次数都比较多。由于各码字出现的概率体现的是该码字出现的独立概率,实际上前后出现的两个码字往往具有一定的条件概率关系,充分利用这种关系可以减少查表操作的次数,提高哈夫曼解码算法的速度。
技术实现思路
本专利技术的目的在于提供,从而能达 到显著减少查表次数,大大提高解码速度。为了实现上述目的,本专利技术提供的一种基于条件概率的哈夫曼解码的方 法,包括以下步骤1) 、获得待压縮数据中各个码字出现的条件概率,构成各码字的条件概率表;2) 、在码字概率从大到小排列中选择前50%的码字各自作为前一码字分别构 建相应的子编码表,该子编码表是由所述前一码字中对应条件概率表中条件概 率值大于0. 1的码字及其索引值构成;3) 、对各码字进行査表匹配,根据前一码字和步骤2)的子编码表的存在与 否,对应选择子编码表或待压縮数据的原编码表为当前码表,并按顺序找到匹 配码字,得到相关信息完成解码。本专利技术所述步骤l)的条件概率为前一码字出现特定码字后,当前位置出现 某个码字的概率。本专利技术所述步骤2)的索引值为对应码字在待压縮数据的原编码表的位置 值,用于查找该码字在原编码表中的所有相关信息。本专利技术所述步骤2)的条件概率值大于0. 1的码字按其出现在特定前一码字后的概率大小排列组成子编码表。本专利技术所述步骤3)的查表匹配过程包括1) 、判定上一个码字是否为空,如果为空的就选择原编码表为当前码表,否则选择所述的子编码表为当前码表;2) 、检查所述的子编码表是否存在,如果存在则在当前码表中顺序查找匹 配的码字,否则选择原编码表为当前码表再顺序査找匹配的码字;3) 、检查能否找到匹配码字,如果找到匹配码字就设置上一码字为当前匹 配码字,并根据对应索引值杂原编码表中得到相关信息,如果没找到匹配码字 就对当前码表进行原码表判断处理;4) 判断当前码表是否为原码表,如果不为原始码则继续在原编码表里顺序 查找匹配的码字并得到相关信息,如果当前码表为原始码或在原编码表里找不 到匹配码字则报错结束。对比顺序查找法,本专利技术能显著减少查表次数,明显提高解码速度;对比 索引查找法的简单根据码字前若干位进行分类索引,本专利技术由于利用了码字出 现的条件概率构造多个子编码表,常见码字能更快完成匹配过程,减少查表次 数,总体上提高了解码速度。 附图说明图1为本专利技术的统计码字条件概率的流程示意图; 图2为本专利技术利用条件概率的哈夫曼査表流程示意图。具体实施方式本专利技术基于条件概率的哈夫曼解码的方法主要包括以下三个部分 一、构造条件概率表所述的条件概率为前一码字出现特定码字后,当前位置出现某个码字的概率,如B码字的条件概率P(AlB)是指在码字A后出现码字B的概率。可利用现有的哈夫曼解码算法,通过大量的实际解码过程统计各个码字的条件概率,如 图1所示,为统计码字条件概率的流程示意图。根据图1算法可得到关于码子 的多个条目,每个条目表示前一码字为X时当前码字为Y的出现次数,表示为p(X,Y), X和Y可以是码表中的任一码字。令T(X)为前一码字为X时当前码字 出现的所有码字的次数总和,则T(X)二p(X,A)+p(X,B)+p(X,C)+p(X,D), X可以 是码表中的任一码字,A/B/C/D代表码表中的所有码字,如有其他码字还需继续 求和。条件概率P(XlY)二p(X,Y)/ T(X), X和Y可以是码表中的任一码字。得到各个码字的条件概率后构造如表1所示的码字条件概率表。码字A码字B码字c码字D…码字AP(AIA)P(BIA)P(CIA)P(DIA)…码字BP(AIB)P(BIB)P(CIB)P(DIB)…码字CP(AIC)P(BIC)P(CIC)P(DIC)' 码字DP(AID)P(BID)P(CID)P, ………………表1码字条件概率表二、构造新的编码表集在码字概率从大到小排列中选择前50%的若干个码字,根据条件概率表(表 1)构造相应的子编码表。假设码字A和码字C出现概率位于大小排列的前5(F。 内,同时,P(AlB) 〉 P(AlC) > P(AlA) 〉 P(AlD), P(C|A) 〉 P(C|C) 〉 P(C|B) 〉P(ClD),则按条件概率从大到小构造两张子码表如下表2和表3。索引值Sx 是指码字X在原编码表中的位置值,用于查找该码字在原编码表中的所本文档来自技高网
...

【技术保护点】
一种基于条件概率的哈夫曼解码的方法,其特征在于包括以下步骤:1)、获得待压缩数据中各个码字出现的条件概率,构成各码字的条件概率表;2)、在码字概率从大到小排列中选择前50%的码字各自作为前一码字分别构建相应的子编码表,该子编码表是由所述前一码字中对应条件概率表中条件概率值大于0.1的码字及其索引值构成;3)、对各码字进行查表匹配,根据前一码字和步骤2)的子编码表的存在与否,对应选择子编码表或待压缩数据的原编码表为当前码表,并按顺序找到匹配码字,得到相关信息完成解码。

【技术特征摘要】

【专利技术属性】
技术研发人员:冯云庆姜喆苏丹周林均
申请(专利权)人:安凯广州微电子技术有限公司
类型:发明
国别省市:81[中国|广州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1