CN1441555A - 改进的哈夫曼译码方法和装置 - Google Patents
改进的哈夫曼译码方法和装置 Download PDFInfo
- Publication number
- CN1441555A CN1441555A CN03106762A CN03106762A CN1441555A CN 1441555 A CN1441555 A CN 1441555A CN 03106762 A CN03106762 A CN 03106762A CN 03106762 A CN03106762 A CN 03106762A CN 1441555 A CN1441555 A CN 1441555A
- Authority
- CN
- China
- Prior art keywords
- inlet
- node
- value
- index
- look
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
提供一种改进的哈夫曼译码方法和装置。该方法由以下步骤组成:(a)接收编码后的比特流;(b)从接收的编码后的比特流的部分比特形成的码字中的第一个比特中获取索引信息,然后根据索引信息找到查找表的入口;和(c)根据获得的入口的内部值确定入口类型。
Description
技术领域
本发明涉及一种改进的哈夫曼译码方法和装置,特别涉及一种哈夫曼译码方法和装置,通过构造有效的一维查找表执行哈夫曼译码,该查找表根据二叉树产生,这是哈夫曼编码的基本原理,通过使用数字方法可以提高处理过程效率。
背景技术
因为哈夫曼编码的唯一特性,从最大查找时间,平均查找时间,查找时间偏差(search time deviation)角度来衡量,现有技术中使用二叉树的哈夫曼译码方法,被认为是非常有效的方法。然而,根据传统二叉树的查找方法,为了产生用于查找的数据结构,为了构造基于链表的二叉树,需要执行复杂的处理。另外,在二叉树节点之间的、用于转换的分支和比较语句(comparison and branch statements)减慢了处理器操作的处理流程,从而降低了哈夫曼译码的处理速度。
现有技术中哈夫曼译码装置的结构和操作,以及在装置中执行的哈夫曼译码方法将参考附图进行解释。
图1是现有技术中哈夫曼译码装置的结构方框图。装置由输入缓冲器110,查找机120,哈夫曼查找表130,和输出缓冲器140组成。
图2是解释现有技术中基于传统条件分支语句的哈夫曼译码器译码方法的流程图。
图3是现有技术中二进制哈夫曼树结构的图示。节点310,322,330,332,342,344,和356是分支到下一个节点的内部节点。节点320,340,346,350,352,354,360,和362是具有实际上被传回的返回值的终端节点。
表1是图3中所示的二进制哈夫曼树的码本。
表1
码字 | 值 |
0 | 60 |
100 | 59 |
1010 | 61 |
1011 | 58 |
1100 | 62 |
11010 | 57 |
11011 | 63 |
111 | 4 |
图4和4b是现有技术中二叉树哈夫曼译码方法的内存结构图示。如图4和4b所示,现有技术中哈夫曼使用三部分内存空间。如图4所示,对一个内部节点来说,在分配的三部分内存空间的中间部分存储一个无效值,同时在左面内存空间存储子节点的左分支节点地址,在右面内存空间存储子节点的右分支节点地址。如图4b所示,对一个终端节点来说,节点的内部值,即实际返回值,被存储在分配的三部分内存空间的中间部分,左面和右面的内存空间存储无效值。
参考图3到图5,根据图2所示的流程图来解释现有技术中的哈夫曼译码器的译码方法,该方法使用二叉树结构的哈夫曼表。
步骤210是译码的第一个步骤。在步骤210中,根据输入到哈夫曼译码器的编码比特数据流的码字,找到与图3所示的哈夫曼树根节点对应的入口(entry),即内部节点310。
步骤220是比较和分支语句,在步骤220中,确定在210中相应于所找到的入口的节点是内部节点,还是终端节点。
在步骤230中,如果在步骤220中确定相应于所找到的入口节点是终端节点,那么将分配给该终端节点的三部分内存空间中的中间部分的存储值作为实际返回的译码后的码字输出。
在步骤240中,如果在步骤220中确定找到的入口节点是内部节点,那么该步骤判断从该比特流中所输入的1个比特的值为‘0’,还是‘1’。如果是‘0’,执行步骤250;如果是‘1’,执行步骤260。
在步骤250中,找到分配给当前节点三部分内存空间的左面内存空间中存储的地址对应的入口,然后执行步骤220。
在步骤260中,找到分配给当前节点三部分内存空间的右面内存空间中存储的地址对应的入口,然后执行步骤220。
参考图2和图5,下面说明对输入的比特流‘1110100’进行译码的过程,该过程根据上面所述的现有技术的哈夫曼译码方法进行译码。
步骤210作为译码的第一步,首先找到对应于哈夫曼二叉树的根地址的入口,该入口对应图5所示哈夫曼表的地址‘1’。
在步骤220中,确定找到的入口节点是内部节点,还是终端节点。参考图5,分配给对应于地址‘1’节点的三部分内存空间的中间内存空间存储值为‘NULL’,左面内存空间存储值为‘4’,右面内存空间存储值为‘7’。因此,确定对应于地址‘1’的节点是图4所示的内部节点,然后执行步骤240。
在步骤240中,输入比特流‘
1110100’第一个编码后的码字第一个比特‘1’。因为输入比特(new digit())为‘1’,所以执行步骤260。
在步骤260中,找到对应于地址‘7’的入口,该地址存储在目前地址‘1’的右面地址‘2’中,即存储在目前节点的右面内存空间,然后执行步骤220。
在步骤220中,确定对应于哈夫曼表地址‘7’的节点是内部节点,还是终端节点。参考图5,分配给对应于地址‘7’节点的三部分内存空间的中间部分的存储值为‘NULL’,左面内存空间存储值为‘10’,右面内存空间存储值为‘13’。因此,确定对应于地址‘7’的节点是图4所示的内部节点,然后执行步骤240。
在步骤240中,输入比特流‘1
110100’第一个编码后码字的第二个比特‘1’。因为输入比特(new digit())为‘1’,所以执行步骤260。
在步骤260中,找到对应于地址‘13’的入口,该地址存储在目前地址‘7’的右面地址‘8’中,即存储在目前节点的右面内存空间,然后执行步骤220。
在步骤220中,确定对应于哈夫曼表地址‘13’的节点是内部节点,还是终端节点。参考图5,分配给对应于地址‘13’节点的三部分内存空间的中间内存空间存储值为‘NULL’,左面内存空间存储值为‘22’,右面内存空间存储值为‘25’。因此,确定对应于地址‘13’的节点是图4所示的内部节点,然后执行步骤240。
在步骤240中,输入比特流‘11
10100’第一个编码后的码字第三个比特‘l’。因为输入比特(new digit())为‘1’,所以执行步骤260。
在步骤260中,找到对应于地址‘25’的入口,该地址存储在目前地址‘13’的右面地址‘14’中,即存储在目前节点的右面内存空间,然后执行步骤220。
在步骤220中,确定对应于哈夫曼表地址‘25’的节点是内部节点,还是终端节点。参考图5,分配给对应于地址‘25’的节点的三部分内存空间的中间内存空间存储值为‘4’,左面内存空间存储值为‘NULL’,右面内存空间存储值为‘NULL’。因此,在步骤220中确定对应于地址‘25’的节点是图4b所示的终端节点,然后执行步骤230。
在步骤230中,分配给对应于地址‘25’的节点的三部分内存空间的中间部分的存储值‘4’作为译码后的码字值输出。
因此,获得对应于输入比特流‘
1110100’的第一个码字‘111’的译码后的码字,然后执行比特流‘1110100’的第二个码字的译码。
按照获得译码的码字‘4’过程的同样方法,步骤210作为译码的第一步,首先找到对应于哈夫曼表的地址‘1’的入口,即哈夫曼二叉树的根地址,然后执行步骤220。
在步骤220中,确定找到的对应于哈夫曼表地址‘1’的节点是内部节点,还是终端节点。对应于地址‘1’节点的三部分内存空间的中间部分的存储值为‘NULL’,左面内存空间存储值为‘4’,右面内存空间存储值为‘7’。因此,在步骤220中确定对应于地址‘1’的节点是图4所示的内部节点,然后执行步骤240。
在步骤240中,输入比特流‘111
0100’第二个码字的第一个比特‘0’。因为输入比特(new digit())为‘0’,所以执行步骤250。
在步骤250中,找到对应于地址‘4’的入口,该地址存储在目前地址‘1’的左面地址‘0’,即存储在目前节点的左面内存空间,然后执行步骤220。
在步骤220中,确定对应于哈夫曼表地址‘4’的节点是内部节点,还是终端节点。参考图5,分配给对应于地址‘4’节点的三部分内存空间的中间内存空间存储值为‘60’,左面内存空间存储值为‘NULL’,右面内存空间存储值为‘NULL’。因此,步骤220中确定对应于地址‘4’的节点是图4b所示的终端节点,然后执行步骤230。
在步骤230中,分配给对应地址‘4’节点的三部分内存空间的中间部分的存储值‘60’作为对应于比特流‘1110100’第二个码字‘0’的译码后的码字值输出。
按照这种方法,输出对应于编码后的比特流‘1110100’第三个码字‘100’的译码的码字值‘59’。以次类推,获得对应于比特流‘1110100’的译码的码字值‘4,60,59,…’。
这样,现有技术中基于二叉树的哈夫曼译码方法,为了产生用于查找的数据结构,需要执行产生基于链表的二叉树的复杂处理。特别是在二叉树查找中,用于转换的比较和节点语句的分支状态降低了处理器操作的处理流,从而导致处理速度的效率降低。同样,既然按照现有技术的哈夫曼译码方法,每一个节点在查找表中使用三部分内存空间,所以非常浪费内存空间。
发明内容
本发明提供一种改进的哈夫曼译码方法,通过此方法,可以去掉现有技术中哈夫曼译码过程中降低处理效率的‘比较和分支’命令,从而可以提高哈夫曼译码器的处理速度,减少所需的内存资源。
本发明同时提供一种哈夫曼译码系统,它执行改进的哈夫曼译码方法,此方法去掉了现有技术中哈夫曼译码过程中降低处理效率的‘比较和分支’命令,从而可以提高哈夫曼译码器的处理速度,减少所需的内存资源。
一方面根据本发明,提供了一种使用查找表对编码后的比特流进行译码的译码方法,该方法包括:(a)接收编码后的比特流;(b)从码字的第一个比特中获取索引信息,该码字通过使用该接收的编码后的比特流的部分中的比特形成,然后根据该索引信息找到查找表的入口;和(c)根据获得的入口的内部值确定入口类型。
最好在步骤(c)中根据所找到的入口的内部值的符号,确定入口是内部节点,还是终端节点。
最好译码方法还包括步骤(d)如果在步骤(c)中所确定找到的入口对应内部节点,则根据当前入口的索引值、所查找到入口的内部值以及码字的第二个比特值,计算下一步需要查找的入口的索引值。
另一方面根据本发明,提供了一种根据二进制数查找表对编码后的比特流进行译码的译码装置,该装置由以下部分组成:对编码后的比特流进行译码的处理器;和与处理器连接,存储与译码有关的查找表的内存;这里,查找表由对应二叉树中的各个节点并具有内部值的入口组成,并且对应于每一个入口的二叉树的节点类型根据存储在相关入口的内部值确定。最好根据对应于入口的节点类型,存储在相关入口的内部值具有不同的符号。
如果对应该入口的节点是内部节点,入口的内部值是从当前内部节点到下一个要查找的节点之间的相对距离。
附图说明
通过详细描述优选实施例,本发明上文描述的几个方面和其他方面以及优点将会变得更清楚。附图包括:
图1是现有技术中哈夫曼译码装置的结构方框图。
图2是解释在图1所示的现有技术装置中执行的哈夫曼译码方法的流程图。
图3是在哈夫曼译码方法中所使用的二叉树结构的图示。
图4和4b是哈夫曼表内存空间图示,对应于在现有技术中哈夫曼译码方法中所使用的各个节点。
图5是在现有技术哈夫曼译码方法中所使用的哈夫曼表。
图6是根据本发明实施例,产生一维查找表过程的示意图。
图7是根据本发明实施例,产生的一维查找表的过程的表。
图8是根据本发明实施例的方法,在译码方法中使用的一维查找表。和
图9是根据本发明实施例,解释基于数字操作的改进哈夫曼译码方法的流程图。
具体实施方式
图6是产生高效一维查找表过程的结构图示,此时为了执行改进的哈夫曼译码方法,根据本发明实施例重新构造查找表。在表转换过程中,对二叉树的节点在每一个相同的查找阶段进行分组,从左到右按照一维阵列进行排列,以便提高表1所示的码字大小。当图6所示的查找表产生后,每一个内部节点存储当前节点到下一个查找节点的相对距离作为内部值,而每一个终端节点存储实际返回值作为内部值。
在排序过程中产生一维阵列有图6所示的顺序静态查找表结构,并没有通过链表产生动态数据结构。
参考图6,一维查找表产生过程下面将详细解释。图6所示的二叉树,索引号从上层到下层顺序地赋给各个节点,即,按照层0,层1,层2,层3,层4,层5的顺序。同样,在同层内,索引号顺序地赋给各个节点。在本发明的优选实施例中,连续的索引号赋给图6所示的兄弟节点。虽然本实施例中,索引号是从左到右赋值,但是在同层内,也可以从右到左赋值。
在图6中,索引号为0,4,7,8,9,10,12,13,…的终端节点,按照从左到右表1所示码字大小的递增顺序,分别分配实际返回值‘60’,‘59’,‘4’,‘61’,‘58’,‘62’,‘57’和‘63’。
同时,索引号为1,2,3,5,6,11,…的内部节点,分别存储当前节点到下一个要查找的节点的相对距离。在本发明实施例中,索引号为1,2,3,5,6,11的内部节点,分别存储当前节点的索引号与子节点的左分支节点索引号的差值,即‘-1’,‘-2’,‘-3’,‘-3’,‘-4’,‘-1’。
图7是根据图6所示的表重新构造方法,构造的一维查找表。重新构造的一维查找表包括二叉树各个节点的索引号,和与索引号相关的节点的内部值。存储在查找表中的每一个内部节点的内部值是当前节点到下一个要查找的节点的相对距离,在本发明例中即为存储当前节点的索引号与子节点的左分支节点索引号的差值,因此总是负值。同时,每一个终端节点的内部值是返回的结果值,即返回值,因此总是正值。
虽然本实施例中,每一个内部节点是当前节点的索引号与子节点的左分支节点索引号的差值,在其他实施例中也可以存储其他相对距离值,比如到右分支节点索引号的差值。
图7所示的一维查找表的列‘左分支节点:0’和‘右分支节点:1’并没有包括进图8所示的最终查找表中,而是产生表的中间过程。指示查找地址值的这些列将在查找过程中被访问。结合从编码后的比特流中读入的1比特数据,这些列的每一条指示在查找阶段中到下一个节点的节点索引号。
现有技术的二叉树哈夫曼查找表中,查找表中每一个节点包括3个部分,包括节点的数据值和当执行到左分支节点或右分支节点的分支时,到下一个节点的地址值。因此,二叉树的每一个节点需要三部分内存空间。
同时,根据图8所示的本发明实施例的最终查找表,每一个内部节点只有当前节点到下一个要查找的节点的相对距离取值。每一个终端节点只有要返回的结果取值,即返回取值。还有,在图7中用粗线指示的两种取值的每一种取值通常互斥发生,因此,它们可以按照图8所示的一维空间安排。因此,与现有技术中的查找表相比,所需的内存空间减少到三分之一。
图9解释根据图8所示的本发明实施例,使用一维查找表的改进哈夫曼译码方法的流程图。
步骤910作为使用一维查找表的译码的第一步,通过使用编码后比特流的预定码字的第一比特值,找到图8中查找表的入口,该编码后比特流作为索引信息输入到哈夫曼译码器。
在步骤920中,确定步骤910中找到的入口对应的当前节点是内部节点,还是终端节点。在本实施例中,根据相应入口的内部值是正值还是负值,来确定节点的类型。当在步骤920中,如果相应入口中所存储的内部值是正值,那么确定当前节点是终端节点,并且执行步骤930。如果该内部值是正值,那么确定当前节点是内部节点,执行步骤940。
当在步骤920中确定当前节点是终端节点时,则在步骤930中,将当前节点的内部值作为实际返回值输出。
当在步骤920中确定当前节点是内部节点时,则在步骤940中,将根据下面的等式1计算新的索引值,根据计算的索引值从查找表中找到入口:
index=index-data(index)+new_digit()……(1)
在等式1中,右边的index表示目前节点的索引号,data(index)表示从作为当前入口内部值存储的当前节点到下一个要查找的节点的相对距离取值,new_digit()表示下一个比特值。
在本发明中,相对距离取值是当前节点的索引号与前节点的子节点的左分支节点索引号的差值。
参考图8所示的本发明的一维查找表和图9的流程图,下面将解释对输入到哈夫曼译码器的编码后的比特流‘1110100’的译码过程。
步骤910作为译码的第一步,通过使用作为索引信息输入到哈夫曼译码器的编码后的比特流‘
1110100’的第一个码字的第一个比特‘1’,找到图8中查找表的入口。这里,假设对应预定返回值的码字从比特流‘1110100’的第一个比特开始。
在步骤920中,根据在步骤910中所找到的当前入口对应节点的内部值的符号,确定当前节点是内部节点,还是终端节点,即图8中查找表入口的索引值为1。在本发明实施例中,既然在步骤920中索引值为1的入口的内部值为负值‘-1’,所以确定当前节点为内部节点,执行步骤940。
在步骤940中,根据等式1计算新的索引取值,并且根据计算的索引取值找到新的入口,然后执行步骤920。在本发明实施例中,data(index)是索引号1-2的结果值,new_digit()是需要被译码的比特流‘1
110100’的下一个比特值‘1’。因此新索引值为index=1-(-1)+1=3。
因此,在步骤940中,对应索引3的入口被找到,然后执行步骤920。
在步骤920中,确定在步骤940所找到的当前入口的节点,即对应图8查找表的索引3的入口,是内部节点或者终端节点。在步骤920中,既然入口的内部值为负值‘-3’,所以确定当前节点为内部节点,再次执行步骤940。
在步骤940中,根据等式1计算新的索引取值。既然new_digit()是需要被译码的比特流‘11
10100’中的第一个码字的第二个比特值‘1’,因此新索引值为index=3-(-3)+1=7。
因此,对应索引7的入口被找到,然后执行步骤920。
在步骤920中,确定步骤940找到的当前入口的节点,即对应图8查找表的索引7的入口,是内部节点还是终端节点。在步骤920中,既然入口的内部值为正值,所以确定当前节点为终端节点,然后执行步骤930。
在步骤930中,将对应索引7的入口的内部值‘4’作为实际返回值,即译码后的码字输出。这样,完成了对编码后的比特流‘
1110100’的第一个比特组,即码字‘111’的译码,然后对第二个码字的译码开始。
在步骤910中,通过使用比特流‘111
0100’的第二个码字的第一个比特‘0’找到图8查找表的入口。
在步骤920中,既然在步骤910中所找到的对应索引0的入口的内部值为正值,所以确定当前节点为终端节点,并且执行步骤930。
在步骤930中,将对应索引0的入口的内部值‘60’作为译码后的码字输出。这样,完成了对编码后的比特流‘111
0100’的第二个码字‘0’的译码,然后对第三个码字的译码开始。
在步骤910中,通过使用比特流‘1110
100’的第三个码字的第一个比特‘1’找到图8查找表的入口。
在步骤920中,既然在步骤910中所找到的当前入口的内部值,即对应索引1的入口为负值‘-1’,所以确定当前节点为内部节点,再次执行步骤940。
在步骤940中,根据等式1计算新的索引取值。既然new_digit()是需要被译码的比特流‘11101
00’下一个比特值‘0’,因此新索引值为index=1-(-1)+0=2。因此,对应索引2的入口被找到,然后执行步骤920。
在步骤920中,确定在步骤940中所找到的当前入口的节点,即对应图8查找表的索引2的入口,是内部节点还是终端节点。在本发明实施例中,既然入口的内部值为负值‘-2’,所以确定当前节点为内部节点,执行步骤940。
在步骤940中,根据等式1计算新的索引取值。既然new_digit()是需要被译码的比特流‘111010
0’ 第三个码字的第二个比特‘0’,因此根据等式1新索引值为index=2-(-2)+0=4。因此,对应索引4的入口被找到,然后执行步骤920。
在步骤920中,确定在步骤940中所找到的当前入口的节点,即对应图8查找表的索引4的入口,是内部节点还是终端节点。在步骤920中,既然入口的内部值为正值‘59’,所以确定当前节点为终端节点,并且执行步骤930。
在步骤930中,将当前入口的内部值‘59’作为编码后的比特流‘1110
100’的第三个码字‘100’的译码后的码字输出。
这样,执行对编码后的比特流‘
1110
100’3个码字的译码,作为结果值输出译码的码字‘4,60,59’。
因此,当执行基于现有技术二叉树的哈夫曼译码方法的过程与执行基于本实施例的改进的哈夫曼译码方法的过程相比,应用从编码后的比特流输入的1个数据比特的哈夫曼译码方法,直接找到查找表的入口,即计算地址值,从而可以去掉条件语句,该语句在现有技术的哈夫曼译码方法节点之间转换时使用。因此,根据本发明的哈夫曼译码方法获得改进的处理效率。
表2为根据本发明的改进的哈夫曼译码方法和现有技术中顺序查找的哈夫曼译码方法的性能结果。
表2
哈夫曼码本 | 查找级/表大小 | 整体查找频率 | 平均整体查找频率 | 查找速度的提高(%) | |
建议查找方法 | 顺序查找方法 |
比例系数 | 19/121 | 14022 | 3.91 | 5.09 | 30.01 |
1 | 16/81 | 5624 | 4.52 | 12.50 | 177.98 |
2 | 16/81 | 7857 | 5.39 | 18.61 | 245.11 |
3 | 16/81 | 16710 | 3.77 | 6.46 | 71.11 |
4 | 16/81 | 8680 | 4.77 | 11.42 | 139.32 |
5 | 16/81 | 28794 | 3.08 | 4.51 | 46.35 |
6 | 16/81 | 1086 | 5.17 | 14.04 | 172.58 |
7 | 16/64 | 2958 | 2.64 | 3.29 | 24.80 |
8 | 16/64 | 582 | 4.81 | 11.13 | 131.28 |
9 | 16/169 | 234 | 2.94 | 5.09 | 73.26 |
10 | 16/169 | 2594 | 6.51 | 33.60 | 415.63 |
11 | 16/289 | 7640 | 7.41 | 65.02 | 776.43 |
如表2所示的性能结果,当对任意MPEG-2改进声音编码(AAC)测试文件进行测试时,根据哈夫曼码本的类型获得的性能提高最小为30%,最大为777%。另外,从平均查找频率的角度,根据本实施例的哈夫曼译码方法,与使用普通顺序查找方法的哈夫曼译码器相比,显示提高了75%的性能。
表3为在相同测量环境下使用6种不同的MPEG-2 AAC文件各种方法的测试结果。
表3
测试文件 | 平均整体查找频率 | 查找速度的提高 (%) | |
建议查找方法 | 顺序查找方法 | ||
test01.aac | 407,591 | 1,168,714 | 187 |
test02.aac | 404,608 | 1,238,404 | 206 |
test03.aac | 360,727 | 1,236,965 | 243 |
test04.aac | 371,423 | 941,376 | 153 |
test05.aac | 174,997 | 511,710 | 192 |
test06.aac | 239,362 | 740,700 | 209 |
平均 | 326,451 | 972,978 | 198 |
如表3所示,根据本实施例的改进的哈夫曼译码方法与现有技术中顺序查找的哈夫曼译码方法相比,按照文件类型提高查找速度最小为24%,最大为776%。
本发明并不限于上文所述的优选实施例,很明显的,本领域的技术人员对技术的变化和修改在本发明权利要求中定义的精神和范围内有效。
还有,本发明可以用代码实现,该代码可以在计算机可读取记录介质上通过计算机读取。计算机可读取记录介质包括各种各样的记录装置,计算机可读取数据存储在这些装置上。
计算机可读取记录介质包括存储介质,比如磁存储介质(比如,ROM’s,软盘,硬盘等等),光读取介质(比如,CD-ROMs,DVDs等等),载波(比如,通过互联网发送)。还有,计算机可读取记录介质可以发送至通过网络连接的计算机系统,它可以按照分布模式存储和执行计算机可读取代码。
按照上文所述,根据本发明中改进的哈夫曼译码方法和装置可以去掉现有技术中二叉树查找的‘比较和分支’操作,从而提高查找速度。还有,查找表的存储空间只有现有技术中的用于‘比较和分支’语句中所使用的查找表的存储空间的三分之一。
Claims (18)
1.一种使用查找表对编码后的比特流进行译码的译码方法,该方法包括:
(a)接收编码后的比特流;
(b)从码字的第一个比特中获取索引信息,该码字通过使用该接收的编码后的比特流的部分中的比特形成,然后根据该索引信息找到查找表的入口;和
(c)根据获得的入口的内部值确定入口类型。
2.如权利要求1所述的译码方法,其中在步骤(c)中根据所找到的入口的内部值的符号,确定入口是内部节点,还是终端节点。
3.如权利要求1和2所述的任何一种的译码方法,更进一步包括:
(d)如果在步骤(c)中所确定找到的入口对应内部节点,则根据当前入口的索引值、所查找到入口的内部值以及码字的第二个比特值,计算下一步需要查找的入口的索引值。
4.如权利要求3所述的译码方法,其中根据下面公式计算下一个要查找的索引值:
index=index-data(index)+new_digit()
这里,index表示当前入口的索引号,data(index)表示当前入口的返回值,new_digit()表示该码字的下一个比特值,还包括找到对应于所计算索引值的查找表入口的步骤。
5.如权利要求3和4所述的任何一种译码方法,其中当前入口的内部值是从当前节点到下一个要查找节点的相对距离。
6.如权利要求3和4所述的任何一种译码方法,其中下一个要查找的入口是对应于当前节点的子节点的左分支节点入口,并且相对距离是当前入口的索引值与左分支节点入口的索引值的差值。
7.如权利要求3所述的译码方法,进一步包括:
如果在步骤(c)中确定所找到的入口对应内部节点,则将该所找到的入口的索引值、内部值的绝对值和码字的下一个比特值相加,获得查找表的入口。
8.如权利要求1和2所述的任何一种译码方法,进一步包括:
(e)如果在步骤(c)中确定所找到的入口对应终端节点,则将查找表的内部值作为译码后的码字输出,该码字由编码后的比特流的部分的比特所形成的码字形成。
9.如权利要求3所述的译码方法,其中步骤(c)进一步包括:
(c1)通过使用计算的索引和基于对应该索引的查找表入口的内部值,确定找到的入口所对应的是内部节点,还是终端节点。
10.如权利要求9所述的译码方法,步骤(c)进一步包括:
(c2)如果确定入口的节点是终端节点,则将查找表的内部值作为译码后的码字输出,该码字属于编码后的比特流的预先编码的码字。
11.如权利要求1所述的译码方法,其中编码后的比特流通过MPEG标准、JPEG标准和H.26x标准中的一种方法进行编码。
12.如权利要求1所述的译码方法,其中查找表从二叉树中产生。
13.一种根据二叉树查找对编码后的比特流进行译码的译码装置,该装置由以下部分组成:
对编码后的比特流进行译码的处理器;和
与处理器连接,存储与译码有关的查找表的内存;
这里,查找表由对应二叉树中的各个节点并具有内部值的入口组成,并且对应于每一个入口的二叉树的节点类型根据存储在相关入口的内部值确定。
14.如权利要求13所述的译码装置,其中根据对应于入口的节点类型,存储在相关入口的内部值具有不同的符号。
15.如权利要求13和14所述的任何一种译码装置,其中如果对应该入口的节点是内部节点,入口的内部值是从当前内部节点到下一个要查找的节点之间的相对距离。
16.如权利要求15所述的译码装置,其中下一个要查找的入口是对应于当前入口节点的子节点的左分支节点入口,根据该入口可以获取当前入口的内部值,而相对距离是当前入口的索引值与左分支节点入口的索引值之间的差值。
17.如权利要求13和14所述的任何一种译码装置,其中如果入口对应终端节点,则入口的内部值是比特流预定码字的译码后的码字。
18.如权利要求13所述的译码装置,其中编码后的比特流通过MPEG标准、JPEG标准和H.26x标准中的一种方法进行编码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0010981A KR100484137B1 (ko) | 2002-02-28 | 2002-02-28 | 개선된 허프만 디코딩 방법 및 장치 |
KR10981/02 | 2002-02-28 | ||
KR10981/2002 | 2002-02-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1441555A true CN1441555A (zh) | 2003-09-10 |
CN1254921C CN1254921C (zh) | 2006-05-03 |
Family
ID=36753915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB03106762XA Expired - Fee Related CN1254921C (zh) | 2002-02-28 | 2003-02-28 | 改进的哈夫曼译码方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6741191B2 (zh) |
EP (1) | EP1341314A3 (zh) |
JP (1) | JP3714935B2 (zh) |
KR (1) | KR100484137B1 (zh) |
CN (1) | CN1254921C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101072034B (zh) * | 2007-06-12 | 2010-06-02 | 华为技术有限公司 | 一种变长解码方法及其装置 |
CN104283567A (zh) * | 2013-07-02 | 2015-01-14 | 北京四维图新科技股份有限公司 | 一种名称数据的压缩、解压缩方法及设备 |
CN107797541A (zh) * | 2016-08-29 | 2018-03-13 | 河北百亚信息科技有限公司 | 基于智能家居环境中ZigBee固件升级的镜像文件轻便解压算法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100468742B1 (ko) * | 2002-06-26 | 2005-01-29 | 삼성전자주식회사 | 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법 |
US7358870B2 (en) | 2003-09-02 | 2008-04-15 | Nokia Corporation | Huffman coding and decoding based upon sectioning of a Huffman coding tree |
US6839005B1 (en) * | 2003-11-07 | 2005-01-04 | Broadcom Corporation | Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels |
KR100959532B1 (ko) * | 2003-12-18 | 2010-05-27 | 엘지전자 주식회사 | Cavlc 복호 방법 |
US6975253B1 (en) * | 2004-08-06 | 2005-12-13 | Analog Devices, Inc. | System and method for static Huffman decoding |
JP2006178013A (ja) * | 2004-12-20 | 2006-07-06 | Canon Inc | データベース作成装置及び方法 |
US20060190251A1 (en) * | 2005-02-24 | 2006-08-24 | Johannes Sandvall | Memory usage in a multiprocessor system |
WO2007011116A1 (en) * | 2005-07-20 | 2007-01-25 | Humax Co., Ltd. | Encoder and decoder |
KR100840757B1 (ko) | 2006-02-28 | 2008-06-23 | 노키아 코포레이션 | 허프만 부호화 및 복호화 |
TW201143306A (en) * | 2010-05-19 | 2011-12-01 | Hon Hai Prec Ind Co Ltd | Method for storing information of nodes in a huffman tree and method for decoding data using an array of the huffman tree |
CN102938685A (zh) * | 2012-11-15 | 2013-02-20 | 大连理工大学 | 一种基于变长编码的无线传感器网络数据压缩方法 |
US9086871B2 (en) | 2013-09-26 | 2015-07-21 | International Business Machines Corporation | Reordering the output of recirculated transactions within a pipeline |
CN104717499B (zh) * | 2015-03-31 | 2018-06-05 | 豪威科技(上海)有限公司 | 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法 |
WO2017009996A1 (ja) * | 2015-07-16 | 2017-01-19 | 三菱電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292114B1 (en) * | 1999-06-10 | 2001-09-18 | Intel Corporation | Efficient memory mapping of a huffman coded list suitable for bit-serial decoding |
EP1069691A1 (en) * | 1999-06-15 | 2001-01-17 | STMicroelectronics S.r.l. | Decoding method for a Huffman code |
US6307489B1 (en) * | 2000-03-15 | 2001-10-23 | Robert Allen Freking | Fast and small serial huffman decoder for decoding at an optimally high rate |
US6636167B1 (en) * | 2000-10-31 | 2003-10-21 | Intel Corporation | Method of generating Huffman code length information |
-
2002
- 2002-02-28 KR KR10-2002-0010981A patent/KR100484137B1/ko not_active IP Right Cessation
-
2003
- 2003-02-06 US US10/359,089 patent/US6741191B2/en not_active Expired - Lifetime
- 2003-02-17 JP JP2003038864A patent/JP3714935B2/ja not_active Expired - Fee Related
- 2003-02-28 EP EP20030251215 patent/EP1341314A3/en not_active Ceased
- 2003-02-28 CN CNB03106762XA patent/CN1254921C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101072034B (zh) * | 2007-06-12 | 2010-06-02 | 华为技术有限公司 | 一种变长解码方法及其装置 |
CN104283567A (zh) * | 2013-07-02 | 2015-01-14 | 北京四维图新科技股份有限公司 | 一种名称数据的压缩、解压缩方法及设备 |
CN104283567B (zh) * | 2013-07-02 | 2018-07-03 | 北京四维图新科技股份有限公司 | 一种名称数据的压缩、解压缩方法及设备 |
CN107797541A (zh) * | 2016-08-29 | 2018-03-13 | 河北百亚信息科技有限公司 | 基于智能家居环境中ZigBee固件升级的镜像文件轻便解压算法 |
Also Published As
Publication number | Publication date |
---|---|
JP2003273748A (ja) | 2003-09-26 |
EP1341314A3 (en) | 2006-01-04 |
KR20030071327A (ko) | 2003-09-03 |
US20030174076A1 (en) | 2003-09-18 |
CN1254921C (zh) | 2006-05-03 |
JP3714935B2 (ja) | 2005-11-09 |
US6741191B2 (en) | 2004-05-25 |
KR100484137B1 (ko) | 2005-04-18 |
EP1341314A2 (en) | 2003-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1254921C (zh) | 改进的哈夫曼译码方法和装置 | |
CN1183683C (zh) | 使用前缀预测的位自适应编码方法 | |
CN101034891A (zh) | 基于cabac的编码方法和设备及解码方法和设备 | |
CN1783729A (zh) | 用联合节点处理来解码低密度奇偶校验码的方法和设备 | |
CN1744083A (zh) | 模糊重复的鲁棒检测器 | |
CN1499731A (zh) | 低密度奇偶校验码解码装置和方法 | |
CN1230054A (zh) | 自适应概率估计方法、自适应编码方法及自适应解码方法 | |
CN1149218A (zh) | 维特比解码方法和维特比解码装置 | |
CN1510595A (zh) | 词典更新系统、更新处理服务器、终端、控制方法、程序、记录媒体 | |
CN1236582C (zh) | 伪随机序列发生器及有关的方法 | |
CN1302624C (zh) | 基于格子的信道编码所用的解码器 | |
CN1163054C (zh) | 图像处理设备和图像处理方法 | |
CN1254121C (zh) | 特博码的解码方法 | |
WO2024125558A1 (zh) | 基于预测树的点云几何编码、解码方法及设备 | |
CN1682449A (zh) | 使用数据窗口来解码数据的方法 | |
CN100350751C (zh) | Turbo解码装置 | |
CN1741614A (zh) | 使用冗余对视/音频和语音数据进行解码的方法和系统 | |
CN104679775A (zh) | 一种基于Huffman表的数据处理方法 | |
CN1263224C (zh) | 解码器 | |
CN1252949C (zh) | 欧洲数字音频广播接收器的信道解码器及其信道解码方法 | |
US8854235B1 (en) | Decompression circuit and associated compression method and decompression method | |
CN1120576C (zh) | 体全息存储器用调制—阵列码的编、译码方法及编码系统 | |
CN1123125C (zh) | 可变长编码方法及其装置 | |
CN1534873A (zh) | 数据转换装置和数据转换方法 | |
CN1561005A (zh) | 快速纠双错bch码译码器 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060503 Termination date: 20200228 |