CN1889366A - 哈夫曼解码方法 - Google Patents

哈夫曼解码方法 Download PDF

Info

Publication number
CN1889366A
CN1889366A CN 200610052434 CN200610052434A CN1889366A CN 1889366 A CN1889366 A CN 1889366A CN 200610052434 CN200610052434 CN 200610052434 CN 200610052434 A CN200610052434 A CN 200610052434A CN 1889366 A CN1889366 A CN 1889366A
Authority
CN
China
Prior art keywords
code word
information
code
length
address
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.)
Pending
Application number
CN 200610052434
Other languages
English (en)
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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN 200610052434 priority Critical patent/CN1889366A/zh
Publication of CN1889366A publication Critical patent/CN1889366A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

本发明为一种并行查表的哈夫曼解码方法。该方法可根据译码时对性能和资源的要求灵活构造哈夫曼树和码表,在解码时可将多个短码字作为一个码字组合通过分步查表一次解出。

Description

哈夫曼解码方法
技术领域
本发明属于解码技术领域,尤其涉及一种并行分布查表的哈夫曼解码方法。
背景技术
变长编码(Variable Length Coding,VLC)是一种无损数据压缩方法,在图像、视频、文本、数据、语音以及其它各种媒体压缩中都有着广泛的应用。变长编码通过给信源符号集中出现概率越大的符号分配越短的来减少每个符号编码所需的平均码长,充分消除数据中的冗余性,达到数据压缩的目的。
在变长编解码技术中,哈夫曼(Huffman)编解码是一种经典的方法,该方法能够在平均码字长度熵达到最优。哈夫曼码广泛应用于各类数据压缩中,并被MPEG、H。26x等音视频压缩编码标准所采纳。目前常见的Huffman变长解码(Variable Length Decoding,VLD)的软件实现方法有线性搜索法、直接查表法、二进制搜索法、分步查表法等。其中,线性搜索法和二进制搜索法的效率较低,不适于实时性要求较高的场合;直接查表法效率较高,但由于内存开销很大,应用场合受到较大限制;分步查表法是对二进制搜索与直接查表的折衷优化,内存开销和译码效率介于二者之间,是在实际中常用的方法。
在Huffman码的集合中,短码字出现的概率远大于长码字,因此码流中多个短码字连续出现的概率也较高。利用Huffman码的这一特性,通过修改码表结构,可以实现对连续多个短码字的并行处理,减少译码操作,节省译码开销。
发明内容
本发明提出了一种并行分步查表的解码方法。该方法采用并行查表减少比特操作,并引入两种数据结构来构造码表。该方法对存储资源的要求比较灵活,通过修改码表可以适应不同平台上译码对性能和资源的要求。
在该方法中使用了码字组合的概念,一个码字组合的长度为n个单个码字与n-1位符号位的总长度。码字组合被看作一个码字,可以一次解出。
该哈夫曼解码方法,具体包括以下两个方面:
(A)Huffman树的构造和基于Huffman树的码表的构造。
(B)基于(A)中所构造码表进行并行分布查表的Huffman解码过程。
在(A)中所构造的Huffman树,可根据码字组合最大长度L划分为上下两部分。长度小于或等于L的叶子节点包含码字组合和长度小于或等于L的单个码字。长度大于L的叶子节点为长度大于L的单个码字;
在(A)中所构造的码表,为一张包含转跳地址信息(也可包含长度小于L的单个码字的信息)的地址表,以及多张包含码字组合信息或单个码字信息的码字表;
在(B)中所述基于(A)中所构造码表进行并行分布查表的Huffman解码过程,其具体过程如下:
(b1)在解Huffman码时,一次取L(码字组合最大长度)个比特码流在地址表中查表,若查得需要转跳到包含长度小于或等于L码字(码字组合)信息的表,到步骤(b2);反之,则到步骤(b3);
(b2)根据查表得到信息判断该码是为码字组合还是单个码字。若为单个码字,则在地址表中直接查表或根据地址表中的地址信息在相应的码表中查表得到该码字信息;若为码字组合,则根据该对应项中地址信息在包含码字组合信息的码表中查得该码字组合信息;
(b3)则取接下去Huffman树最大长度与码字组合最大长度之差个比特码流在转跳地址信息对应的码表中查表得到相应的码字长度大于L单个码字信息;
该方法中,在Huffman树的构造上可综合考虑码字组合出现概率和内存开销等因素确定码字组合的最大长度L,然后可根据对内存开销和解码速度的要求灵活构造码表。若在解码时首先必须访问的地址表中不存放长度小于L的单个码字信息,而只存放该码字在对应的码字表里的相对地址信息,则该地址信息栏只需占很少几个比特,比存放完整码字信息时所占位宽大幅降低。因地址表中的单个码字项为多对一的关系,若将其简化为一张包含码字长度小于或等于码字组合最大长度L的单个码字信息的码表,一项对应一个码字,则新增的项数并不多,而码表所占用的总的内存空间可大大降低。
该方法中所构造的码字表包括一张包含码字组合信息的码表,一张包含码字长度小于或等于码字组合最大长度L的单个码字信息的码表(此表如上段中所述可合并到地址表中),以及一张或多张包含码字长度大于码字组合最大长度L的单个码字信息的码表。包含码字组合信息的码表存放码字组合中多个码字的信息。在由地址表在向该表转跳时,由于该表只有一张,表的首地址为确定值,所以在地址表中只需存放码字组合在该码字表中的相对地址。包含码字长度小于或等于L的单个码字信息的码字表只有一张,表的首地址为确定值,在由地址表向该表转跳时,同样只需在地址表中存放单个码字在该码字表中的相对地址。包含码字长度大于L的单个码字信息的码表的数目取决于Huffman树在长度L上中间节点的个数,一个中间节点对应一张码表。每个中间节点下面部分的叶子节点按其与该中间节点的相对位置构成码表。
在地址表中还包含一位转跳位,用以表明下一步所要转跳到的地址是相对地址还是绝对地址。当要转跳到包含码字长度大于L的单个码字信息的码表是,为绝对地址;反之则为相对地址。
附图说明
图1为具体实施方式中所示实施例的解码流程图;
图2为具体实施方式中所示实施例的Huffman树结构图,图中符号意义:
○表示根节点或中间节点;□表示叶子节点;◇表示码字组合节点;
图3是一张表,为具体实施例中根据Huffman树所构造的包含地址信息和单个码字信息的地址表(以下称作表(a));
图4是一张表,为具体实施例中根据Huffman树所构造的包含码字组合信息的码字表(以下称作表(b));
图5是一张表,为具体实施例中根据Huffman树所构造的包含码字长度大于码字组合最大长度L的单个码字信息的码字表(以下称作表(c))。
具体实施方式
下面结合附图以一个具体的实施例来说明本方法。图1所示为包含12个码字(00,01,100,101,110,1110,11110,1111101,1111110,1111111,11111000,11111001),码字组合最大长度L=5,单个码字最大长度为8的一个Huffman树。以码字长度小于或等于L为界,将Huffman树分成上下两部分。根据Huffman树的划分进行码表的构造。表(a)(如图3所示)对应Huffman树的上半部,在每次查表时首先被访问。在本实施例中,将包含码字长度小于或等于码字组合最大长度L的单个码字信息的码字表合并到了表(a)中。表(a)第二列表明是否跳转到表(c)(如图5所示)继续查找。在本例所示的Huffman树在长度L上只有一个中间节点,因此只需构造一张包含码字长度在大于L的单个码字信息的码字表。表(a)只有最后一项“11111”对应的节点是中间节点,所以除了这一项是1外,其余表项的第二列为0。第三列是一个二选一的表项,当第二列为0时,对应的是码字信息,即“run”、“level”、“length”、“last”的组合;当第二列为1时,对应的是跳转到的码表起始地址。当待查码字包含在表(a)中时,还要判断是否为码字组合。此例中用“run”值作为判据依据。正常码字的run值在0到63之间,可用一个不属于[0,63]范围的run值来标示码字组合。若待查码字为码字组合,则第三列为码字组合对应的码字组合信息在表(b)(如图4所示)中的对应位置以及码字组合总长度;若待查码字不是码字组合,则第三列为对应的码字信息。表(b)包含最大长度为L(在本例中为5)的由n(在本例中为2)个单个码字与n-1位符号字节成的码字组合的信息。根据地址信息访问表(b)的对应表项,查出码字组合的信息。表(c)对应本例中Huffman树的下半部分,存放长度大于L的码字的信息。
假设接收到一段码流“001111110000011000”,第一步取5比特,即“00111”查表(a),“00111”对应的码字在第八项,码字长度为2,即前两个比特位“00”对应Huffman树中的码字1,第三个比特位“1”为该码字的符号位。第二步取接下去的5比特,即“11111”,先查表(a),对应于最后一项,由于该项第二列为1,表明需要跳转到表(c)。再取接下去的3比特,即“000”,可以确定该码字在表2中的位置。查得该8比特对应Huffman树中码字19。接下去的一个比特“1”为该码字的符号位。第三步取接下去的5比特,即“01100”,其对应于表(a)的第13项,查得“run”值超出了0到63的范围,因此这是一个码字组合,码字总长度为5。通过第三列中的地址信息可以得到该码字组合在表(b)中位置并查出相应的码字组合信息。这段码流的解码最终结果为:码字1、19、2、1,符号由每个码字后最邻近比特确定。
以上所述仅为本发明的一个特定实例,并不用以限制本发明,凡在本发明的精神和原则之内所作的修改、替换、改进等,均应包含在本发明的保护范围内。

Claims (4)

1、本发明所提出的哈夫曼解码方法,其特征在于该方法包括以下方面:
(A)Huffman树的构造和基于Huffman树的码表的构造;
(B)基于(A)中所构造码表进行并行分布查表的Huffman解码过程。
2、按权利要求1所述的哈夫曼解码方法,其特征在于按该方法所构造的Huffman树,可根据码字组合的最大长度L划分为上下两部分,长度小于或等于L的叶子节点包含码字组合以及长度小于或等于L的单个码字,长度大于L的叶子节点为长度大于L的单个码字。
3、按权利要求1所述的哈夫曼解码方法,其特征在于基于权利要求2中所述Huffman树所构造的码表,为一张包含转跳地址信息的地址表和多张包含码字组合信息或单个码字信息的码字表,在包含转跳地址信息的地址表中也可包含长度小于L的单个码字的码字信息,
4、按权利要求1所述的哈夫曼解码方法,其特征在于该方法所述基于所构造码表进行并行分布查表的Huffman解码过程,其具体过程如下:
(a)在解Huffman码时,一次取L即码字组合最大长度个比特码流在地址表中查表;
(b)根据步骤(a)查表结果,若需要转跳到包含长度小于或等于L的码字或码字组合信息的表,再根据查表得到信息判断该码是为码字组合还是单个码字,若为单个码字,则在地址表中直接查表或根据地址表中的地址信息在相应的码表中查表得到该码字信息;若为码字组合,则根据该对应项中地址信息在包含码字组合信息的码表中查得该码字组合信息;
(c)根据步骤(a)查表结果,若需要转跳到包含长度大于L的单个码字的信息的表,则取接下去Huffman树最大长度与码字组合最大长度之差个比特码流在转跳地址信息所示的码表中查表得到相应的码字长度大于L的单个码字的码字信息。
CN 200610052434 2006-07-13 2006-07-13 哈夫曼解码方法 Pending CN1889366A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200610052434 CN1889366A (zh) 2006-07-13 2006-07-13 哈夫曼解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200610052434 CN1889366A (zh) 2006-07-13 2006-07-13 哈夫曼解码方法

Publications (1)

Publication Number Publication Date
CN1889366A true CN1889366A (zh) 2007-01-03

Family

ID=37578627

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200610052434 Pending CN1889366A (zh) 2006-07-13 2006-07-13 哈夫曼解码方法

Country Status (1)

Country Link
CN (1) CN1889366A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101282121B (zh) * 2007-04-05 2010-10-06 安凯(广州)微电子技术有限公司 一种基于条件概率的哈夫曼解码的方法
CN102780493A (zh) * 2011-05-09 2012-11-14 晨星软件研发(深圳)有限公司 霍夫曼解码器及其解码方法
CN106533628A (zh) * 2016-11-30 2017-03-22 郑州云海信息技术有限公司 一种哈夫曼并行解码方法及其装置
CN106788451A (zh) * 2016-11-30 2017-05-31 郑州云海信息技术有限公司 一种哈夫曼解码方法及其装置
CN107547906A (zh) * 2017-08-29 2018-01-05 郑州云海信息技术有限公司 一种jpeg图像解码的方法与装置
CN107682018A (zh) * 2017-09-28 2018-02-09 西安万像电子科技有限公司 解码方法及装置
CN108155969A (zh) * 2016-12-02 2018-06-12 北京深鉴科技有限公司 一种针对变长编码数据的解码电路
CN109086270A (zh) * 2018-07-24 2018-12-25 重庆大学 基于古诗词语料向量化的自动作诗系统及其方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101282121B (zh) * 2007-04-05 2010-10-06 安凯(广州)微电子技术有限公司 一种基于条件概率的哈夫曼解码的方法
CN102780493A (zh) * 2011-05-09 2012-11-14 晨星软件研发(深圳)有限公司 霍夫曼解码器及其解码方法
CN102780493B (zh) * 2011-05-09 2016-06-29 晨星软件研发(深圳)有限公司 霍夫曼解码器及其解码方法
CN106533628B (zh) * 2016-11-30 2019-10-18 郑州云海信息技术有限公司 一种哈夫曼并行解码方法及其装置
CN106788451A (zh) * 2016-11-30 2017-05-31 郑州云海信息技术有限公司 一种哈夫曼解码方法及其装置
CN106533628A (zh) * 2016-11-30 2017-03-22 郑州云海信息技术有限公司 一种哈夫曼并行解码方法及其装置
CN106788451B (zh) * 2016-11-30 2021-03-09 苏州浪潮智能科技有限公司 一种哈夫曼解码方法及其装置
CN108155969A (zh) * 2016-12-02 2018-06-12 北京深鉴科技有限公司 一种针对变长编码数据的解码电路
CN108155969B (zh) * 2016-12-02 2021-02-19 赛灵思公司 一种针对变长编码数据的解码电路
CN107547906A (zh) * 2017-08-29 2018-01-05 郑州云海信息技术有限公司 一种jpeg图像解码的方法与装置
CN107547906B (zh) * 2017-08-29 2020-02-21 郑州云海信息技术有限公司 一种jpeg图像解码的方法与装置
CN107682018A (zh) * 2017-09-28 2018-02-09 西安万像电子科技有限公司 解码方法及装置
CN109086270A (zh) * 2018-07-24 2018-12-25 重庆大学 基于古诗词语料向量化的自动作诗系统及其方法
CN109086270B (zh) * 2018-07-24 2022-03-01 重庆大学 基于古诗词语料向量化的自动作诗系统及其方法

Similar Documents

Publication Publication Date Title
CN1889366A (zh) 哈夫曼解码方法
US8497788B1 (en) Efficient techniques for aligned fixed-length compression
CN1786939A (zh) 实时数据压缩方法
US6737994B2 (en) Binary-ordered compression for unicode
US7375660B1 (en) Huffman decoding method
KR20070109487A (ko) 효율적인 h.264/avc cavlc 디코딩 방법
CN101520771A (zh) 一种对词库压缩编码及解码的方法和系统
CN112380196B (zh) 一种用于数据压缩传输的服务器
CN113868206A (zh) 一种数据压缩方法、解压缩方法、装置及存储介质
CN1713173A (zh) 计算机可实现的字符集转换方法及系统
CN101055593A (zh) 藏文网页及其编码的识别方法
US10496703B2 (en) Techniques for random operations on compressed data
US20150248432A1 (en) Method and system
CN101043353A (zh) 一种提高网管系统数据处理效率的方法
CN1129232C (zh) 一种对数据库中的数据进行压缩与解压缩的方法
US7930435B2 (en) Hub and spoke compression
CN115865099A (zh) 基于霍夫曼编码的多类型数据分段压缩方法及系统
Mahmood et al. A feasible 6 bit text database compression scheme with character encoding (6BC)
CN103024380A (zh) 一种数据的熵编码方法和装置
CN104682966A (zh) 列表数据的无损压缩方法
CN101707484B (zh) 一种适合硬件实现的快速指数哥伦布码解码方法
Shu et al. A two-stage data compression method for real-time database
Chuang et al. An SGH-tree based efficient huffman decoding
CN1662063A (zh) 可变长码解码方法
Islam et al. A Dynamic 5 Bit Data Compression Scheme by Using Set Change Table (5BDC)

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication