CN101741392A - 一种快速解析码长的哈夫曼解码方法 - Google Patents

一种快速解析码长的哈夫曼解码方法 Download PDF

Info

Publication number
CN101741392A
CN101741392A CN 200810219457 CN200810219457A CN101741392A CN 101741392 A CN101741392 A CN 101741392A CN 200810219457 CN200810219457 CN 200810219457 CN 200810219457 A CN200810219457 A CN 200810219457A CN 101741392 A CN101741392 A CN 101741392A
Authority
CN
China
Prior art keywords
code
length
huffman
word
code word
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
CN 200810219457
Other languages
English (en)
Other versions
CN101741392B (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 CN 200810219457 priority Critical patent/CN101741392B/zh
Publication of CN101741392A publication Critical patent/CN101741392A/zh
Application granted granted Critical
Publication of CN101741392B publication Critical patent/CN101741392B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明公开了一种快速解析码长的哈夫曼解码方法,步骤包括:建立一张完备码长码表;在定长码字完备码长码表中检索到与这个哈夫曼码字生成树相对应的码表部分;以最大码字长度截取当前待解析的哈夫曼码流作为索引,检索到的码长码表值即为待解析码流中首个码字码长;提取首个码字即可解析到当前码字所对应的数据;从码流中除去已解析的部分,将剩余码流返回第二步;直至全部码流解析完毕后退出。本发明可以根据索引快速解析码长,从而大大减少解码时间,当最大码长为N时,对于逐位比较解析法,解析其码长时间复杂度为o(N/2);对于级别比较解析法,对于一个给定的码字,其码长解析时间复杂度为o(1),极大地提高码长确定速度。

Description

一种快速解析码长的哈夫曼解码方法
技术领域
本发明涉及一种解码方法,尤其涉及一种快速解析码长的哈夫曼解码方法。
背景技术
哈夫曼算法是一种根据待压缩数据中各元素出现的概率进行编码和解码的算法,能无损的压缩数据所占用的空间。图1是一个哈夫曼码字生成树的例子,以其码字为叶子,码字所属层数为级别数。
解析哈夫曼码时,先确定要解析的码流的首个码字长度,将其取出,用哈夫曼编码提供的符号表就可以找到这个码字所对应的数据元素。除去码流里的首个码字,将剩余的码流按上述方法逐一解析,即可完成哈夫曼的解码过程。由于哈夫曼编码是变长编码,在整个解码过程中,必须解决的一个问题是确定哈夫曼码字的长度,以下描述了哈夫曼解码中码字长度确定的常见解决方案。
A、逐位比较解析法:将哈夫曼码字所有级别的首个码字按级别为索引建立一张码长检索表。解码时,取出码流里的第一个比特,如果这个码流数值不小于码长为1的码长检索表所对应的码字,将前面取出的比特数左移一位,并加上下一个取出的比特数,将这个合成的码流数值与上一个码长加1所对应的码长检索表中的哈夫曼码字比较;如果这个新的码流数值还是不小于新的哈夫曼码字,继续按上述方法比较,直到码流数值小于码长检索表中的哈夫曼码字。那么,这个哈夫曼码字所对应的码长减1就是码流里首个哈夫曼码字的长度。
B、级别比较解析法:由于哈夫曼码字生成树并不一定每一级都有叶子,对于那些叶子不存在的级别还去比较就没有意义。级别比较解析法正是基于这一点,在逐位比较解析法的基础上,用一个叶子检索表来指示最近下一级存在哈夫曼码字的级别(等同码字长度),并将同一级上最小码字作为前缀位,其余位补0,扩充到最大码长长度,用这个扩充码建成一张定长码字检索表。在哈夫曼码长解析时,取出码流中待解码的最大码长长度的码流数值与定长码字检索表里的首个码字比较,如果这个码流数值不小于定长码字检索表里的码字,按照叶子检索表检索当前级别的下一级叶子码字级别,然后用这个下一级别值来检索定长码字检索表里的码字,以码流数值比较检索到的定长码字,直到码流数值小于定长码字检索表里的码字,此时叶子检索表里当前级别数和码流里首个码字长度相同。
在音频、视频领域,基于哈夫曼数据压缩的编码、解码算法应用非常广泛。在哈夫曼算法中,码字以变长二进制前缀码表示,为了解析一个哈夫曼码字,必须先解析哈夫曼码字的字长,传统的码长解析算法在总的解码算法中耗时比例较大,减少码长解析的时间对于提高哈夫曼解码的速度有很重要的意义。
发明内容
本发明目的在于提供一种可以快速解析码长的哈夫曼解码方法。
本发明的目的可以通过以下技术实现:一种快速解析码长的哈夫曼解码方法,步骤包括:
1)基于码流中所包含的所有哈夫曼码字生成树的叶子码字,建立一张完备码长码表;
2)对于当前待解析的哈夫曼码流,按照其待解析码字所属的哈夫曼码字生成树,在定长码字完备码长码表中检索到与这个哈夫曼码字生成树相对应的码表部分;
3)以最大码字长度截取当前待解析的哈夫曼码流,并将这个截取出的码流数值作为索引,在当前码流哈夫曼码字生成树对应的码长码表部分检索,检索到的当前码长码表值即为当前待解析码流中首个码字码长;
4)提取首个码字,在当前哈夫曼码字生成树所对应的符号表中即可解析到当前码字所对应的数据;从码流中除去已解析的部分,将剩余码流返回第二步;直至全部码流解析完毕后退出。
上述的构造哈夫曼码字生成树对应的完备码长码表的过程:
按照对应的哈夫曼码字生成树,构建最大码长长度的各个比特位为全0到全1的索引,并将所有索引值(即码长码表值)初始化为0;以哈夫曼生成树的所有叶子码子为前缀,将剩余码字位以全0到全1填充到最大码长长度,将所有同哈夫曼码字前缀的扩充码的码长码表值以对应哈夫曼前缀码的长度赋值。
上述的完备码长码表的每项索引以哈夫曼码字为前缀、其余位按全0到全1填充扩展到最大码长长度,索引对应的值为相应的哈夫曼前缀码码长。
本发明可以根据索引快速解析码长,从而大大减少解码时间,当最大码长为N时,对于逐位比较解析法,解析其码长时间复杂度为o(N/2);对于级别比较解析法,解析其码长时间复杂度为o
Figure G2008102194576D0000031
其中pi为码长为i的码字的统计概率;本发明将所有码长以码字为索引建成一张表,那么对于一个给定的码字,其码长解析时间复杂度为o(1),极大地提高码长确定速度。
说明书附图
图1是现有技术中哈夫曼码字生成树;
图2是本发明单个哈夫曼码字生成树对应码长码表的生成流程。
具体实施方式
首先构建一张以哈夫曼码字为定长码前缀的完备码表:这个完备码长码表的每项索引以哈夫曼码字为前缀、其余位按全0到全1填充扩展到最大码长长度,索引对应的值为相应的哈夫曼前缀码码长。在这个完备码长码表的构建过程中,以码流包含的每个哈夫曼码字生成树为单位,按相同的方式逐一构建。
图2是码长码表构建过程中单个哈夫曼码字生成树对应部分的处理,其中当前级别、当前叶子数和当前码字在当前级别中的位序均从0起始。初始化将所有码长设为0,并设置当前级别为1;每个哈夫曼码字生成树对应的码长码表部分构建过程如下,
1)提取当前级别的首个哈夫曼码作为前缀,获得以首个哈夫曼码为前缀的8比特码字总数;然后设置当前级别当前叶子位序为0;
2)令当前码字的值为前缀码补0到定长加上当前叶子位序,然后设置当前叶子当前码字位序位0;
3)设置当前码字对应的码长为当前级别值,并当前码字加1;
4)比较当前码字位序是否小于当前码字总数,如果结果返回是,则码字位序加1并返回步骤4;如果结果返回否,则进行下一步;
5)将前缀码加1作为下一个前缀码,比较当前叶子位序是否小于级别总叶子数,如果结果返回是,则当前叶子位序加1并返回步骤3;如果结果返回否,则进行下一步;
6)检测当前码字级别是否不大于8,如果结果返回是,则返回步骤2;如果结果返回否,则码表生成完毕并结束。
然后对于当前待解析的哈夫曼码流,按照其待解析码字所属的哈夫曼码字生成树,在定长码字完备码长码表中检索到与这个哈夫曼码字生成树相对应的码表部分。
以最大码字长度截取当前待解析的哈夫曼码流,并将这个截取出的码流数值作为索引,在当前码流哈夫曼码字生成树对应的码长码表部分检索,检索到的当前码长码表值即为当前待解析码流中首个码字码长。
提取首个码字,在当前哈夫曼码字生成树所对应的符号表中即可解析到当前码字所对应的数据。从码流中除去已解析的部分,剩余码流返回继续解析,直至完成所有哈夫曼码的解析。
假设当前待解析码流为11010011111……,其最大码长为5,对应的哈夫曼码字生成树和图1相同,码流解析过程如下。以5截取码流,得到11010,以11010为索引在码长码表中查得对应的哈夫曼码字长度为4,并查得码字1101在符号表中对应的符号,从码流中除去1101,即完成一个哈夫曼码字解析。同理,可解析到码字00、11111……。

Claims (3)

1.一种快速解析码长的哈夫曼解码方法,其特征在于,步骤包括:
1)基于码流中所包含的所有哈夫曼码字生成树的叶子码字,建立一张完备码长码表;
2)对于当前待解析的哈夫曼码流,按照其待解析码字所属的哈夫曼码字生成树,在定长码字完备码长码表中检索到与这个哈夫曼码字生成树相对应的码表部分;
3)以最大码字长度截取当前待解析的哈夫曼码流,并将这个截取出的码流数值作为索引,在当前码流哈夫曼码字生成树对应的码长码表部分检索,检索到的当前码长码表值即为当前待解析码流中首个码字码长;
4)提取首个码字,在当前哈夫曼码字生成树所对应的符号表中即可解析到当前码字所对应的数据;从码流中除去已解析的部分,将剩余码流返回第二步;直至全部码流解析完毕后退出。
2.根据权利要求1所述的一种快速解析码长的哈夫曼解码方法,其特征在于,上述的构造哈夫曼码字生成树对应的完备码长码表的过程:按照对应的哈夫曼码字生成树,构建最大码长长度的各个比特位为全0到全1的索引,并将所有索引值(即码长码表值)初始化为0;以哈夫曼生成树的所有叶子码子为前缀,将剩余码字位以全0到全1填充到最大码长长度,将所有同哈夫曼码字前缀的扩充码的码长码表值以对应哈夫曼前缀码的长度赋值。
3.根据权利要求1所述的一种快速解析码长的哈夫曼解码方法,其特征在于,所述的完备码长码表的每项索引以哈夫曼码字为前缀、其余位按全0到全1填充扩展到最大码长长度,索引对应的值为相应的哈夫曼前缀码码长。
CN 200810219457 2008-11-27 2008-11-27 一种快速解析码长的哈夫曼解码方法 Active CN101741392B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200810219457 CN101741392B (zh) 2008-11-27 2008-11-27 一种快速解析码长的哈夫曼解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200810219457 CN101741392B (zh) 2008-11-27 2008-11-27 一种快速解析码长的哈夫曼解码方法

Publications (2)

Publication Number Publication Date
CN101741392A true CN101741392A (zh) 2010-06-16
CN101741392B CN101741392B (zh) 2013-01-09

Family

ID=42464366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200810219457 Active CN101741392B (zh) 2008-11-27 2008-11-27 一种快速解析码长的哈夫曼解码方法

Country Status (1)

Country Link
CN (1) CN101741392B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102136270A (zh) * 2010-12-27 2011-07-27 华为软件技术有限公司 一种音频解码方法及装置
WO2012159301A1 (zh) * 2011-05-25 2012-11-29 深圳市融创天下科技股份有限公司 一种视频熵编码、熵解码方法、装置及介质
CN106851323A (zh) * 2015-12-07 2017-06-13 腾讯科技(深圳)有限公司 解码方法及解码装置
CN107682018A (zh) * 2017-09-28 2018-02-09 西安万像电子科技有限公司 解码方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6373412B1 (en) * 2000-12-15 2002-04-16 International Business Machines Corporation Fast JPEG huffman encoding and decoding
CN101282121B (zh) * 2007-04-05 2010-10-06 安凯(广州)微电子技术有限公司 一种基于条件概率的哈夫曼解码的方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102136270A (zh) * 2010-12-27 2011-07-27 华为软件技术有限公司 一种音频解码方法及装置
CN102136270B (zh) * 2010-12-27 2012-08-08 华为软件技术有限公司 一种音频解码方法及装置
WO2012159301A1 (zh) * 2011-05-25 2012-11-29 深圳市融创天下科技股份有限公司 一种视频熵编码、熵解码方法、装置及介质
CN106851323A (zh) * 2015-12-07 2017-06-13 腾讯科技(深圳)有限公司 解码方法及解码装置
CN106851323B (zh) * 2015-12-07 2019-07-19 腾讯科技(深圳)有限公司 解码方法及解码装置
CN107682018A (zh) * 2017-09-28 2018-02-09 西安万像电子科技有限公司 解码方法及装置

Also Published As

Publication number Publication date
CN101741392B (zh) 2013-01-09

Similar Documents

Publication Publication Date Title
CN101783788B (zh) 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置
WO2019153700A1 (zh) 编解码方法、装置及编解码设备
AU702207B2 (en) Method of and apparatus for compressing and decompressing data and data processing apparatus and network system using the same
US7375660B1 (en) Huffman decoding method
CN101557517A (zh) 解码器、解码装置及解码方法
CN100525450C (zh) 一种实现霍夫曼译码的方法和装置
WO2010044100A1 (en) Lossless compression
CN101741392B (zh) 一种快速解析码长的哈夫曼解码方法
CN101534124B (zh) 一种用于短小自然语言的压缩算法
CN104467868A (zh) 中文文本压缩方法
EP1941617A1 (en) Method and system for compressing data
US6518895B1 (en) Approximate prefix coding for data compression
Farina et al. Boosting text compression with word-based statistical encoding
US20060176195A1 (en) System and method for partition and pattern-match decoding of variable length codes
JP5913748B2 (ja) セキュアで損失のないデータ圧縮
CN101325418B (zh) 一种基于概率查表的哈夫曼快速解码方法
EP3552313B1 (en) Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines
EP3136607A1 (en) A method and a system for encoding and decoding of suffix tree and searching within encoded suffix tree
CN101729076B (zh) 一种基于非完备码表解析码长的哈夫曼解码方法
CN112181869B (zh) 信息存储方法、装置、服务器及介质
Anto et al. A Compression System for Unicode Files Using an Enhanced Lzw Method.
Shanmugasundaram et al. Text preprocessing using enhanced intelligent dictionary based encoding (EIDBE)
US20180041223A1 (en) Method and apparatus for adaptive data compression
JPH0628149A (ja) 複数種類データのデータ圧縮方法
Klein et al. Searching in compressed dictionaries

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
CP03 Change of name, title or address
CP03 Change of name, title or address

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

Patentee after: Guangzhou Ankai Microelectronics Co.,Ltd.

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

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: 301-303, 401-402, zone C1, No. 182, science Avenue, Science City, Guangzhou high tech Industrial Development Zone

Patentee before: Guangzhou Ankai Microelectronics Co.,Ltd.