改进的哈夫曼译码方法和装置.pdf

上传人:r5 文档编号:1131213 上传时间:2018-04-01 格式:PDF 页数:25 大小:958.98KB
返回 下载 相关 举报
摘要
申请专利号:

CN03106762.X

申请日:

2003.02.28

公开号:

CN1441555A

公开日:

2003.09.10

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

H03M7/40

主分类号:

H03M7/40

申请人:

三星电子株式会社;

发明人:

张兴烨; 长泰奎; 郑锺勋

地址:

韩国京畿道

优先权:

2002.02.28 KR 10981/2002

专利代理机构:

北京市柳沈律师事务所

代理人:

马莹;邵亚丽

PDF下载: PDF下载
内容摘要

提供一种改进的哈夫曼译码方法和装置。该方法由以下步骤组成:(a)接收编码后的比特流;(b)从接收的编码后的比特流的部分比特形成的码字中的第一个比特中获取索引信息,然后根据索引信息找到查找表的入口;和(c)根据获得的入口的内部值确定入口类型。

权利要求书

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标准中的一种方法进行编码。

说明书


改进的哈夫曼译码方法和装置

    【技术领域】

    本发明涉及一种改进的哈夫曼译码方法和装置,特别涉及一种哈夫曼译码方法和装置,通过构造有效的一维查找表执行哈夫曼译码,该查找表根据二叉树产生,这是哈夫曼编码的基本原理,通过使用数字方法可以提高处理过程效率。

    背景技术

    因为哈夫曼编码的唯一特性,从最大查找时间,平均查找时间,查找时间偏差(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中,输入比特流‘1110100’第一个编码后码字的第二个比特‘1’。因为输入比特(new digit())为‘1’,所以执行步骤260。

    在步骤260中,找到对应于地址‘13’的入口,该地址存储在目前地址‘7’的右面地址‘8’中,即存储在目前节点的右面内存空间,然后执行步骤220。

    在步骤220中,确定对应于哈夫曼表地址‘13’的节点是内部节点,还是终端节点。参考图5,分配给对应于地址‘13’节点的三部分内存空间的中间内存空间存储值为‘NULL’,左面内存空间存储值为‘22’,右面内存空间存储值为‘25’。因此,确定对应于地址‘13’的节点是图4所示的内部节点,然后执行步骤240。

    在步骤240中,输入比特流‘1110100’第一个编码后的码字第三个比特‘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中,输入比特流‘1110100’第二个码字的第一个比特‘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()是需要被译码的比特流‘1110100’的下一个比特值‘1’。因此新索引值为index=1-(-1)+1=3。

    因此,在步骤940中,对应索引3的入口被找到,然后执行步骤920。

    在步骤920中,确定在步骤940所找到的当前入口的节点,即对应图8查找表的索引3的入口,是内部节点或者终端节点。在步骤920中,既然入口的内部值为负值‘-3’,所以确定当前节点为内部节点,再次执行步骤940。

    在步骤940中,根据等式1计算新的索引取值。既然new_digit()是需要被译码的比特流‘1110100’中的第一个码字的第二个比特值‘1’,因此新索引值为index=3-(-3)+1=7。

    因此,对应索引7的入口被找到,然后执行步骤920。

    在步骤920中,确定步骤940找到的当前入口的节点,即对应图8查找表的索引7的入口,是内部节点还是终端节点。在步骤920中,既然入口的内部值为正值,所以确定当前节点为终端节点,然后执行步骤930。

    在步骤930中,将对应索引7的入口的内部值‘4’作为实际返回值,即译码后的码字输出。这样,完成了对编码后的比特流‘1110100’的第一个比特组,即码字‘111’的译码,然后对第二个码字的译码开始。

    在步骤910中,通过使用比特流‘1110100’的第二个码字的第一个比特‘0’找到图8查找表的入口。

    在步骤920中,既然在步骤910中所找到的对应索引0的入口的内部值为正值,所以确定当前节点为终端节点,并且执行步骤930。

    在步骤930中,将对应索引0的入口的内部值‘60’作为译码后的码字输出。这样,完成了对编码后的比特流‘1110100’的第二个码字‘0’的译码,然后对第三个码字的译码开始。

    在步骤910中,通过使用比特流‘1110100’的第三个码字的第一个比特‘1’找到图8查找表的入口。

    在步骤920中,既然在步骤910中所找到的当前入口的内部值,即对应索引1的入口为负值‘-1’,所以确定当前节点为内部节点,再次执行步骤940。

    在步骤940中,根据等式1计算新的索引取值。既然new_digit()是需要被译码的比特流‘1110100’下一个比特值‘0’,因此新索引值为index=1-(-1)+0=2。因此,对应索引2的入口被找到,然后执行步骤920。

    在步骤920中,确定在步骤940中所找到的当前入口的节点,即对应图8查找表的索引2的入口,是内部节点还是终端节点。在本发明实施例中,既然入口的内部值为负值‘-2’,所以确定当前节点为内部节点,执行步骤940。

    在步骤940中,根据等式1计算新的索引取值。既然new_digit()是需要被译码的比特流‘1110100’  第三个码字的第二个比特‘0’,因此根据等式1新索引值为index=2-(-2)+0=4。因此,对应索引4的入口被找到,然后执行步骤920。

    在步骤920中,确定在步骤940中所找到的当前入口的节点,即对应图8查找表的索引4的入口,是内部节点还是终端节点。在步骤920中,既然入口的内部值为正值‘59’,所以确定当前节点为终端节点,并且执行步骤930。

    在步骤930中,将当前入口的内部值‘59’作为编码后的比特流‘1110100’的第三个码字‘100’的译码后的码字输出。

    这样,执行对编码后的比特流‘1110100’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等等),载波(比如,通过互联网发送)。还有,计算机可读取记录介质可以发送至通过网络连接的计算机系统,它可以按照分布模式存储和执行计算机可读取代码。

    按照上文所述,根据本发明中改进的哈夫曼译码方法和装置可以去掉现有技术中二叉树查找的‘比较和分支’操作,从而提高查找速度。还有,查找表的存储空间只有现有技术中的用于‘比较和分支’语句中所使用的查找表的存储空间的三分之一。

改进的哈夫曼译码方法和装置.pdf_第1页
第1页 / 共25页
改进的哈夫曼译码方法和装置.pdf_第2页
第2页 / 共25页
改进的哈夫曼译码方法和装置.pdf_第3页
第3页 / 共25页
点击查看更多>>
资源描述

《改进的哈夫曼译码方法和装置.pdf》由会员分享,可在线阅读,更多相关《改进的哈夫曼译码方法和装置.pdf(25页珍藏版)》请在专利查询网上搜索。

提供一种改进的哈夫曼译码方法和装置。该方法由以下步骤组成:(a)接收编码后的比特流;(b)从接收的编码后的比特流的部分比特形成的码字中的第一个比特中获取索引信息,然后根据索引信息找到查找表的入口;和(c)根据获得的入口的内部值确定入口类型。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 基本电子电路


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1