一种基于概率查表的哈夫曼快速解码方法技术

技术编号:3420040 阅读:244 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种基于概率查表的哈夫曼快速解码方法,包括:在解码中依次读取码流,根据所读取码流在所述辅助表中查找其对应信息,并且根据所述对应信息输出解码后的对应字符,其中,所述辅助表根据哈夫曼表建立,包含码流解码后的多组信息,并且反映了解码后的对应字符在码流中的出现概率。本发明专利技术在哈夫曼解码之前建立一个辅助表,在需要编码的字符在数据流中出现概率较高的情况下,通过一次移位并进行16位的查表获得多个或一个哈夫曼码值,且码流的读取均以字作为单位;而在概率较低的情况下,通过常规方式得到一个哈夫曼码值,提高了哈夫曼解码的速度。

【技术实现步骤摘要】

本专利技术涉及。技术背景哈夫曼编码是熵编码的一种,是一种可变字长编码(VLC)的无损压 缩方法。它的基本思想是通过给在数据流中出现概率不同的字符分配 不同长度的码值来进行压缩。简言之,就是当需要编码的字符在数据 流中出现概率较高时,为其分配较短的码值,反之,则为其分配较长 的码值。哈夫曼编码在计算机科学当中应用广泛,许多压缩数据格式 都使用了哈夫曼编码作为其标准的一部分。一般来讲,哈夫曼解码作为一种运算复杂度O(n)的简单操作,其计算 量不是很大。但是在某些对速度要求较高或对成本要求较低的情况下,提 高哈夫曼解码速度还是重要的。特别地,如果哈夫曼解码后的数据运算量 较小或是有其他高速方法的时候(比如有高速硬件加速),这个问题就更 加凸现。传统的哈夫曼解码主要经过反复几次移位,读取数据,比较码值,查 表的循环来完成一个哈夫曼单元的解码过程。在这个过程中有三点消耗时 间首先,由于哈夫曼编码是按位编码,这个过程需要较多的位操作,而 且数据读取过程往往也不是整字节读取;其次,哈夫曼编码是可变长编码, 故往往要重复几次操作才能得到对应的码值;再次,对于现代的CPU来说, 其寄存器的长度往往有16或32位,但哈夫曼编码的长度往往只有几位, 这样并不能有效利用寄存器的宽度。所以,为了有效地提高哈夫曼解码的速度,需要对上述三个关键点进 行改进。
技术实现思路
为了解决上述的哈夫曼解码现有技术中存在的问题,本专利技术提供了一 种基于概率查表的哈夫曼解码方法。本专利技术提供了,包括在解 码中依次读取码流,根据所读取码流在所述辅助表中查找其对应信息,并 且根据所述对应信息输出解码后的对应字符,其中,所述辅助表根据哈夫 曼表建立,包含码流解码后的多组信息,并且反映了解码后的对应字符在 码流中的出现概率。在本专利技术的一个实施例中,所述多组信息是16位二进制码流解码后的 65536组信息。在本专利技术的另 一个实施例中,所述每组信息以较高概率包括码流解码 后包含的完整字符数量、所述完整字符的哈夫曼编码长度和、以及所述完 整字符的内容。在本专利技术的又一个实施例中,所述每组信息以较低概率为空。 在本专利技术的另 一个一个实施例中,所述对应字符为多个或一个。 在本专利技术的还一个实施例中,如在辅助表中存在所读取码流的对应信 息,则随后的码流读取以字(16bit)为单位。在本专利技术的又一个实施例中,在所述查表之前只进行一次移位。 在本专利技术的另 一个实施例中,如在没有在辅助表中查找到所读取码流 的对应信息,则通过哈夫曼表直接解码。本专利技术在哈夫曼解码之前建立一个辅助表,在需要编码的字符在数据 流中出现概率较高的情况下,通过一次移位并进行16位的查表获得多个或 一个哈夫曼码值,且码流的读取均以字作为单位;而在概率较低的情况下, 通过常规方式得到一个哈夫曼码值,提高了哈夫曼解码的速度。附图说明下面将参照附图对本专利技术的具体实施方案进行更详细的说明,在附图中图l示意了才艮据本专利技术的在进行哈夫曼解码前建立辅助表的流程图;以及图2示意了根据本专利技术的哈夫曼解码的流程图。具体实施方式图1示意了在进行哈夫曼解码前建立辅助表的流程图。本专利技术的哈夫曼解码方法首先需要建立一个辅助表Table,此辅助表有 65536个元素,每个元素包括三项,Table->N,Table->L,Table->data对应的是以B为16位二进制码流的信息(例如B=421,其二进制 为IIOIOOIOIB,则其代表的就是二进制码流0000000110100101的信息), TableN代表此码流解码后所包含的完整字符的数量,TableL代表解 码后所包含的完整字符的哈夫曼编码长度和,Tabledata代表解码后所包 含的完整字符的内容。建立辅助表Table的过程如图1所示。建立辅助变量B, L, K(16bit无符号),建立过程如下 1 、 初始化B = 02、 令Table.N = 0,L=0,K=B3、 将K换算成16位二进制码流进行正常的哈夫曼解码4、 判断K是否能正常解码出1个哈夫曼字符,如不能,跳转至IO5、 步骤4解码出的字符为X, X哈夫曼编码所占的长度为C6、 令I^L + C7、 判断L是否大于15,如大于,跳转至IO8、 令Table.data.N] = X, Table.N = Table.N + 19、 令K:K&((1 (16-L))-1),并跳转至3 (&代表按位与,《代 表按位左移)10、 令Table.N是否等于O,如果是,跳转至84、 从Table.data输出Table.N个数据作为解码出的数据 5 、 令POS = POS - Table.N6、 判断POS是否小于l,如不是,跳转至177、 令A = (A 16)+ getl6bit(PTR),POS = POS + 16,并跳转至178、 令C:B,POS2-09、 判断POS是否小于l,如不是,跳转至ll10、 令C-(C〈〈 1 ) + getlbit(PTR),POS2 = POS2+1,跳转至1211、 C = (C l) + A.(POS-l),POS = POS —1,其中A.(POS-l)代表A的二 进制第POS-l位12、 判断C是否是哈夫曼码值,如不是,跳转至913、 输出C所对应的字符值14、 判断POS2是否等于0,如是,跳转至1615、 令A = get(32國POS2 % 16)bit(PTR), POS = 16-POS2 % 16,跳转至1716、 令A = (A《16)+ getl6bit(PTR)17、 判断是否解码完成,如不是,跳转至218、 结束显而易见,在不偏离本专利技术的真实精神和范围的前提下,在此描述的 本专利技术可以有许多变化。例如,所述的辅助表可以是其他位N的二进制码 流解码后的2"组信息。又例如,如在辅助表中存在所读耳又码流的对应信息, 随后的码流读取以一个或多个字节为单位,而不一定非得是以字(16bit) 为单位。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本 权利要求书所涵盖的范围之内。本专利技术所要求保护的范围仅由所述的权利 要求书进行限定。权利要求1.,包括在解码中依次读取码流,根据所读取码流在所述辅助表中查找其对应信息,并且根据所述对应信息输出解码后的对应字符,其中,所述辅助表根据哈夫曼表建立,包含码流解码后的多组信息,并且反映了解码后的对应字符在码流中的出现概率。2. 根据权利要求1的方法,其中,所述多组信息是16位二进制码流解 码后的65536组信息。3. 根据权利要求2的方法,其中,所述每组信息以较高概率包括码流解 码后包含的完整字符数量、所述完整字符的哈夫曼编码长度和、以及所述 完整字符的内容。4. 根据权利要求2的方法,其中,所述每组信息以较低概率为空。5. 根据权利要求1的方法,其中,所述对应字符为多个或一个。6. 根据权利要求1的方法,其中,如在辅助表中存在所读取码流的对应 信息,则随后的码流读取以字(16bit)为单位。7. 根据权利要求1的方法,其中,在所述查表之前只进行一次移位。8. 根据权利要求1的方法,还包括如在没有在辅助表中查找到所读取码流的对应信息,则通过哈夫曼表 直接解码。本文档来自技高网...

【技术保护点】
一种基于概率查表的哈夫曼快速解码方法,包括:在解码中依次读取码流,根据所读取码流在所述辅助表中查找其对应信息,并且根据所述对应信息输出解码后的对应字符,其中,所述辅助表根据哈夫曼表建立,包含码流解码后的多组信息,并且反映了解码后的对应字 符在码流中的出现概率。

【技术特征摘要】

【专利技术属性】
技术研发人员:史岩
申请(专利权)人:北京海尔集成电路设计有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利