CN101282121A - 一种基于条件概率的哈夫曼解码的方法 - Google Patents

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

Info

Publication number
CN101282121A
CN101282121A CNA2007100274251A CN200710027425A CN101282121A CN 101282121 A CN101282121 A CN 101282121A CN A2007100274251 A CNA2007100274251 A CN A2007100274251A CN 200710027425 A CN200710027425 A CN 200710027425A CN 101282121 A CN101282121 A CN 101282121A
Authority
CN
China
Prior art keywords
code word
code
coupling
conditional probability
probability
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007100274251A
Other languages
English (en)
Other versions
CN101282121B (zh
Inventor
冯云庆
姜喆
苏丹
周林均
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Ankai Microelectronics Co.,Ltd.
Original Assignee
ANKAI (GUANGZHOU) SOFTWARE TECHN Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ANKAI (GUANGZHOU) SOFTWARE TECHN Co Ltd filed Critical ANKAI (GUANGZHOU) SOFTWARE TECHN Co Ltd
Priority to CN2007100274251A priority Critical patent/CN101282121B/zh
Publication of CN101282121A publication Critical patent/CN101282121A/zh
Application granted granted Critical
Publication of CN101282121B publication Critical patent/CN101282121B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

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

Description

一种基于条件概率的哈夫曼解码的方法
技术领域
本发明涉及一种解码方法,特别涉及一种基于条件概率的哈夫曼解码的方法。
背景技术
在数据压缩领域哈夫曼算法应用得非常广泛,特别是各种音频和视频的编解码算法中都应用到这种算法。哈夫曼算法是一种根据待压缩数据中各元素出现的概率进行编码和解码的算法,能无损压缩数据所占用的空间。编码过程举例如下。
待压缩数据:AABCABAADACB
不压缩情况下编码如下:00-A,01-B,10-C,11-D
不压缩情况下表示为:00 00 01 10 00 01 00 00 11 00 10 01
设各元素出现概率为:P(A)=0.6,P(B)=0.25,P(C)=0.15,P(D)=0.05
编码表为:1-A,01-B,001-C,000-D
压缩后码流为:11 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
解码后数据:A A B  C  A B A A D  A C  B
在音频和视频的编解码算法中的熵编码环节一般采用哈夫曼算法进行处理。编码过程将之前环节生成的中间数据按编码表转换为对应的码字,再按照一定的格式生成最终的码流。解码过程首先在码流中依次查找编码表中的码字,转换为对应的中间结果,再由后续环节进行处理。实际应用中的编码表一般都有几百个码字,根据各元素出现的概率制定。可见,哈夫曼解码过程实际上是一个包含大量查表操作的匹配过程,减少匹配所需的查表次数就能加快哈夫曼解码的速度。以下描述了哈夫曼解码中查表匹配的常见解决方案。
(1)、顺序查找法。从编码表中依次取出码字,根据该码字的长度取码流首部相同位数的二进制序列进行比较,如果相同则匹配成功,否则取下一个码字重复上述过程。顺序查找法的效率较低,对于具有几百个码字的码表,每次一般需要几十次以上的比较,优点是节省码表所占用的空间。
(2)、优化的顺序查找法。在解码前首先对编码表进行重排,按照各码字出现的概率从大到小排列,然后在顺序查找法中使用整理后的编码表。出现概率大的码字只需较少的比较次数就能查找成功,总体查表次数有所降低,速度比原始的顺序查找法有所提高。
(3)、索引查找法。对码表中所***字按照前若干位分类,形成若干个相对较小的子编码表和一个索引表。解码时首先取码流的前若干位,根据索引表比较得到该码字所属的子编码表,然后在该子编码表中进行顺序查找。由于各子编码表中码字数量较少,本方法减少了查表次数。
现有普遍使用的哈夫曼解码算法主要利用编码表体现的码字出现的概率,查表次数都比较多。由于各码字出现的概率体现的是该码字出现的独立概率,实际上前后出现的两个码字往往具有一定的条件概率关系,充分利用这种关系可以减少查表操作的次数,提高哈夫曼解码算法的速度。
发明内容
本发明的目的在于提供一种基于条件概率的哈夫曼解码的方法,从而能达到显著减少查表次数,大大提高解码速度。
为了实现上述目的,本发明提供的一种基于条件概率的哈夫曼解码的方法,包括以下步骤:
1)、获得待压缩数据中各个码字出现的条件概率,构成各码字的条件概率表;
2)、在码字概率从大到小排列中选择前50%的码字各自作为前一码字分别构建相应的子编码表,该子编码表是由所述前一码字中对应条件概率表中条件概率值大于0.1的码字及其索引值构成;
3)、对各码字进行查表匹配,根据前一码字和步骤2)的子编码表的存在与否,对应选择子编码表或待压缩数据的原编码表为当前码表,并按顺序找到匹配码字,得到相关信息完成解码。
本发明所述步骤1)的条件概率为前一码字出现特定码字后,当前位置出现某个码字的概率。
本发明所述步骤2)的索引值为对应码字在待压缩数据的原编码表的位置值,用于查找该码字在原编码表中的所有相关信息。
本发明所述步骤2)的条件概率值大于0.1的码字按其出现在特定前一码字后的概率大小排列组成子编码表。
本发明所述步骤3)的查表匹配过程包括:
1)、判定上一个码字是否为空,如果为空的就选择原编码表为当前码表,否则选择所述的子编码表为当前码表;
2)、检查所述的子编码表是否存在,如果存在则在当前码表中顺序查找匹配的码字,否则选择原编码表为当前码表再顺序查找匹配的码字;
3)、检查能否找到匹配码字,如果找到匹配码字就设置上一码字为当前匹配码字,并根据对应索引值杂原编码表中得到相关信息,如果没找到匹配码字就对当前码表进行原码表判断处理;
4)判断当前码表是否为原码表,如果不为原始码则继续在原编码表里顺序查找匹配的码字并得到相关信息,如果当前码表为原始码或在原编码表里找不到匹配码字则报错结束。
对比顺序查找法,本发明能显著减少查表次数,明显提高解码速度;对比索引查找法的简单根据码字前若干位进行分类索引,本发明由于利用了码字出现的条件概率构造多个子编码表,常见码字能更快完成匹配过程,减少查表次数,总体上提高了解码速度。
附图说明
图1为本发明的统计码字条件概率的流程示意图;
图2为本发明利用条件概率的哈夫曼查表流程示意图。
具体实施方式
本发明基于条件概率的哈夫曼解码的方法主要包括以下三个部分:
一、构造条件概率表
所述的条件概率为前一码字出现特定码字后,当前位置出现某个码字的概率,如B码字的条件概率P(A|B)是指在码字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(X|Y)=p(X,Y)/T(X),X和Y可以是码表中的任一码字。
得到各个码字的条件概率后构造如表1所示的码字条件概率表。
  码字A   码字B   码字C   码字D ...
 码字A   P(A|A)   P(B|A)   P(C|A)   P(D|A) ...
 码字B   P(A|B)   P(B|B)   P(C|B)   P(D|B) ...
 码字C   P(A|C)   P(B|C)   P(C|C)   P(D|C) ...
 码字D   P(A|D)   P(B|D)   P(C|D)   P(D|D) ...
 ...   ...   ...   ...   ... ...
表1码字条件概率表
二、构造新的编码表集
在码字概率从大到小排列中选择前50%的若干个码字,根据条件概率表(表1)构造相应的子编码表。假设码字A和码字C出现概率位于大小排列的前50%内,同时,P(A|B)>P(A|C)>P(A|A)>P(A|D),P(C|A)>P(C|C)>P(C|B)>P(C|D),则按条件概率从大到小构造两张子码表如下表2和表3。索引值Sx是指码字X在原编码表中的位置值,用于查找该码字在原编码表中的所有相关信息。
受限于哈夫曼解码装置的存储容量,对所***字都分别构造一张子码表将占用大量的存储资源。根据存储容量的限制和码字出现的概率,对于在码字概率从大到小排列中后50%的的码字可不构造子编码表,如码字D在码字概率大小排列中处于后50%的位置,则不构造作为前一字码的子编码表;对于条件概率值小于0.1的码字可不编入相应的子编码表,如表2和表3都没有编入码字D。所有子编码表和原编码表构成新的编码表集。
  码字   索引值
  B   Sb
  C   Sc
  A   Sa
表2子编码表A
  码字   索引值
  A   Sa
  C   Sc
  B   Sb
表3子编码表C
三、利用条件概率的哈夫曼查表
如图2所示,为本发明利用条件概率的哈夫曼查表流程示意图。其查表匹配过程包括:
1)、判定上一个码字是否为空,如果为空的就选择原编码表为当前码表,否则选择所述的子编码表为当前码表;
2)、检查所述的子编码表是否存在,如果存在则在当前码表中顺序查找匹配的码字,否则选择原编码表为当前码表再顺序查找匹配的码字;
3)、检查能否找到匹配码字,如果找到匹配码字就设置上一码字为当前匹配码字,并根据对应索引值杂原编码表中得到相关信息,如果没找到匹配码字就对当前码表进行原码表判断处理;
4)判断当前码表是否为原码表,如果不为原始码则继续在原编码表里顺序查找匹配的码字并得到相关信息,如果当前码表为原始码或在原编码表里找不到匹配码字则报错结束。
完成上述一次匹配过程后,不断重复上过程即可完成所有的解码操作。如编码后码流为1 1 01 001 1 01 1 1 000 1 001 01,设原编码表中各码字相关信息排列顺序为A B C D,编码表为:1-A,01-B,001-C,000-D。对于第一个码字,上一码字为空,直接使用原编码表进行顺序查找,在第1个位置就找到码字A,索引值就是1,根据索引值得到码字相关信息。对于第二个码字,上一码字为A,使用子码表A进行顺序查找,在子码表中找到A的索引值Sa为1,根据索引值到原编码表中第1个位置可找到码字A的相关信息。对于第四个码字C,上一码字为B,子码表不存在,选择原编码表作为当前码表进行顺序查找,余下过程与第一个码字相同。对于第九个码字D,上一码字为A,选择子码表A进行顺序查找,该子码表中并没有编入码字D,匹配码字不存在,选择原编码表作为当前码表再查找一次,在第4个位置找到匹配码字,得到相关信息。
由于常见的码字都编入各子编码表,各子编码表的码字数量不会很多,大部分查表过程都可以在子编码表中完成匹配,只有某些不常见的码字才需要在码字较多的原编码表中查找。可见大部分码字经过较少的查找次数即可完成匹配,总体查找次数将明显低于顺序查找法。

Claims (5)

1. 一种基于条件概率的哈夫曼解码的方法,其特征在于包括以下步骤:
1)、获得待压缩数据中各个码字出现的条件概率,构成各码字的条件概率表;
2)、在码字概率从大到小排列中选择前50%的码字各自作为前一码字分别构建相应的子编码表,该子编码表是由所述前一码字中对应条件概率表中条件概率值大于0.1的码字及其索引值构成;
3)、对各码字进行查表匹配,根据前一码字和步骤2)的子编码表的存在与否,对应选择子编码表或待压缩数据的原编码表为当前码表,并按顺序找到匹配码字,得到相关信息完成解码。
2. 根据权利要求1所述的哈夫曼解码的方法,其特征在于:所述步骤1)的条件概率为前一码字出现特定码字后,当前位置出现某个码字的概率。
3. 根据权利要求1所述的哈夫曼解码的方法,其特征在于:所述步骤2)的索引值为对应码字在待压缩数据的原编码表的位置值。
4. 根据权利要求1所述的哈夫曼解码的方法,其特征在于:所述步骤2)的条件概率值大于0.1的码字按其出现在特定前一码字后的概率大小排列组成子编码表。
5. 根据权利要求1所述的哈夫曼解码的方法,其特征在于:所述步骤3)的查表匹配过程包括:
1)、判定上一个码字是否为空,如果为空的就选择原编码表为当前码表,否则选择所述的子编码表为当前码表;
2)、检查所述的子编码表是否存在,如果存在则在当前码表中顺序查找匹配的码字,否则选择原编码表为当前码表再顺序查找匹配的码字;
3)、检查能否找到匹配码字,如果找到匹配码字就设置上一码字为当前匹配码字,并根据对应索引值杂原编码表中得到相关信息,如果没找到匹配码字就对当前码表进行原码表判断处理;
4)判断当前码表是否为原码表,如果不为原始码则继续在原编码表里顺序查找匹配的码字并得到相关信息,如果当前码表为原始码或在原编码表里找不到匹配码字则报错结束。
CN2007100274251A 2007-04-05 2007-04-05 一种基于条件概率的哈夫曼解码的方法 Active CN101282121B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007100274251A CN101282121B (zh) 2007-04-05 2007-04-05 一种基于条件概率的哈夫曼解码的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007100274251A CN101282121B (zh) 2007-04-05 2007-04-05 一种基于条件概率的哈夫曼解码的方法

Publications (2)

Publication Number Publication Date
CN101282121A true CN101282121A (zh) 2008-10-08
CN101282121B CN101282121B (zh) 2010-10-06

Family

ID=40014446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100274251A Active CN101282121B (zh) 2007-04-05 2007-04-05 一种基于条件概率的哈夫曼解码的方法

Country Status (1)

Country Link
CN (1) CN101282121B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102438145A (zh) * 2011-11-22 2012-05-02 广州中大电讯科技有限公司 一种基于Huffman编码的图片无损压缩方法
CN102811113A (zh) * 2012-07-12 2012-12-05 中国电子科技集团公司第二十八研究所 一种字符型报文压缩方法
CN101741392B (zh) * 2008-11-27 2013-01-09 安凯(广州)微电子技术有限公司 一种快速解析码长的哈夫曼解码方法
CN105630755A (zh) * 2016-01-22 2016-06-01 上海普适导航科技股份有限公司 北斗卫星短报文扩大信息量传输的信源编解码方法及装置
CN105988777A (zh) * 2015-01-27 2016-10-05 深圳市腾讯计算机***有限公司 一种规则匹配方法及装置
CN104054316B (zh) * 2011-11-15 2017-04-12 思杰***有限公司 用于对sms中心进行负载平衡和建立虚拟专用网络的***和方法
CN109412604A (zh) * 2018-12-05 2019-03-01 云孚科技(北京)有限公司 一种基于语言模型的数据压缩方法
CN110692243A (zh) * 2017-08-29 2020-01-14 谷歌有限责任公司 用于在视频压缩中的熵代码化的概率的混合
CN111130558A (zh) * 2019-12-31 2020-05-08 世纪恒通科技股份有限公司 一种基于统计概率的编码表压缩方法
CN114885035A (zh) * 2022-06-30 2022-08-09 北京城建设计发展集团股份有限公司 无损压缩方法及装置、无损解压方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774081A (en) * 1995-12-11 1998-06-30 International Business Machines Corporation Approximated multi-symbol arithmetic coding method and apparatus
US6563439B1 (en) * 2000-10-31 2003-05-13 Intel Corporation Method of performing Huffman decoding
CN1889366A (zh) * 2006-07-13 2007-01-03 浙江大学 哈夫曼解码方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741392B (zh) * 2008-11-27 2013-01-09 安凯(广州)微电子技术有限公司 一种快速解析码长的哈夫曼解码方法
CN104054316B (zh) * 2011-11-15 2017-04-12 思杰***有限公司 用于对sms中心进行负载平衡和建立虚拟专用网络的***和方法
CN102438145A (zh) * 2011-11-22 2012-05-02 广州中大电讯科技有限公司 一种基于Huffman编码的图片无损压缩方法
CN102811113B (zh) * 2012-07-12 2014-12-10 中国电子科技集团公司第二十八研究所 一种字符型报文压缩方法
CN102811113A (zh) * 2012-07-12 2012-12-05 中国电子科技集团公司第二十八研究所 一种字符型报文压缩方法
CN105988777A (zh) * 2015-01-27 2016-10-05 深圳市腾讯计算机***有限公司 一种规则匹配方法及装置
CN105988777B (zh) * 2015-01-27 2019-03-15 深圳市腾讯计算机***有限公司 一种规则匹配方法及装置
CN105630755A (zh) * 2016-01-22 2016-06-01 上海普适导航科技股份有限公司 北斗卫星短报文扩大信息量传输的信源编解码方法及装置
CN105630755B (zh) * 2016-01-22 2018-08-14 上海普适导航科技股份有限公司 北斗卫星短报文扩大信息量传输的信源编解码方法及装置
CN110692243A (zh) * 2017-08-29 2020-01-14 谷歌有限责任公司 用于在视频压缩中的熵代码化的概率的混合
CN110692243B (zh) * 2017-08-29 2022-08-23 谷歌有限责任公司 用于在视频压缩中的熵代码化的概率的混合
CN109412604A (zh) * 2018-12-05 2019-03-01 云孚科技(北京)有限公司 一种基于语言模型的数据压缩方法
CN111130558A (zh) * 2019-12-31 2020-05-08 世纪恒通科技股份有限公司 一种基于统计概率的编码表压缩方法
CN114885035A (zh) * 2022-06-30 2022-08-09 北京城建设计发展集团股份有限公司 无损压缩方法及装置、无损解压方法及装置

Also Published As

Publication number Publication date
CN101282121B (zh) 2010-10-06

Similar Documents

Publication Publication Date Title
CN101282121B (zh) 一种基于条件概率的哈夫曼解码的方法
US9589046B2 (en) Anomaly, association and clustering detection
CN110399104B (zh) 数据存储方法、数据存储装置、电子设备、存储介质
CN100525450C (zh) 一种实现霍夫曼译码的方法和装置
CN109325032B (zh) 一种索引数据存储及检索方法、装置及存储介质
CN112953550B (zh) 数据压缩的方法、电子设备及存储介质
CN1868127B (zh) 数据压缩***和方法
US6831575B2 (en) Word aligned bitmap compression method, data structure, and apparatus
CN104283567A (zh) 一种名称数据的压缩、解压缩方法及设备
US7650040B2 (en) Method, apparatus and system for data block rearrangement for LZ data compression
CN116318173B (zh) 一种金融融资服务数字智能管理***
JP2001357048A (ja) ブロックソート圧縮データの検索方法、および検索に適したブロックソート圧縮法の符号化方法
CN112506879B (zh) 数据处理方法及相关设备
US20060069857A1 (en) Compression system and method
CN101630323A (zh) 确定自动机的空间压缩方法
CN104579360A (zh) 一种数据处理的方法和设备
CN111384959B (zh) 编码方法、处理器、编码模块及存储介质
CN101520771A (zh) 一种对词库压缩编码及解码的方法和***
CN116610265A (zh) 一种商务信息咨询***的数据存储方法
US6518895B1 (en) Approximate prefix coding for data compression
CN107623524B (zh) 一种基于硬件的Huffman编码方法及***
CN109446198B (zh) 一种基于双数组的trie树节点压缩方法及装置
CN115865099A (zh) 基于霍夫曼编码的多类型数据分段压缩方法及***
US6573847B1 (en) Multi-table mapping for huffman code decoding
CN102955828B (zh) 用于数据库大对象重整的方法和***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 510663 301-303, 401-402, zone C1, 182 science Avenue, Science City, Guangzhou high tech Industrial Development Zone, Guangdong Province

Patentee after: Guangzhou Ankai Microelectronics Co.,Ltd.

Address before: 510663 301-303, 401-402, zone C1, 182 science Avenue, Science City, Guangzhou high tech Industrial Development Zone, Guangdong Province

Patentee before: ANYKA (GUANGZHOU) MICROELECTRONICS TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 510555 No. 107 Bowen Road, Huangpu District, Guangzhou, Guangdong

Patentee after: Guangzhou Ankai Microelectronics Co.,Ltd.

Address before: 510663 301-303, 401-402, zone C1, 182 science Avenue, Science City, Guangzhou high tech Industrial Development Zone, Guangdong Province

Patentee before: Guangzhou Ankai Microelectronics Co.,Ltd.