VLSI高效霍夫曼编码设备和方法技术

技术编号:15059056 阅读:124 留言:0更新日期:2017-04-06 08:50
本发明专利技术揭示了一种基于霍夫曼译码的压缩算法,其适于容易使用VLSI设计来实施。可以处理数据文件以例如根据述LV算法用包含偏移和长度的复制命令替换重复数据。接着可对于所述文件的一些部分生成霍夫曼码。所述霍夫曼码生成用于数据文件中的文字的霍夫曼码长度,而无需首先将文字统计数据排序。可以将所述霍夫曼码长度限制为不比最大长度长,并且可以修改所述霍夫曼码以提供可接受的溢流概率并且所述霍夫曼码可以采用规范次序。可以将文字、偏移和长度分别编码。可以向有限数目的二进制数指派用于这些数据集的不同值以生成用于生成霍夫曼码的使用统计数据。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及用于数据的无损压缩的系统和方法。
技术介绍
霍夫曼译码是用于无损数据压缩的一种熵编码算法(见D.A霍夫曼(D.A.Huffman),“用于构造最小冗余代码的方法(Amethodfortheconstructionofminimum-redundancycodes)”,Proc.IRE40(9),第1098-1101页,1952年)。霍夫曼译码是指使用可变长度代码表编码源文字(例如文件中的字符),其中已基于源文字的每个可能值的估计出现概率以特定方式导出可变长度代码表。霍夫曼译码使用特定的方法挑选每个文字的表示,从而得到前缀码(有时被称作“无前缀代码”,也就是说,表示一些特定文字的位串从不是表示任何其它文字的位串的前缀),其使用比用于较不常见的源文字更短的位串来表达最常见的源文字。霍夫曼能够设计这种类型的最高效的压缩方法:当实际文字频率与用于创建代码的文字频率一致时,没有其它个别源文字到唯一位串的映射将产生更小的平均输出大小。下文描述霍夫曼算法的伪代码。算法1:计算二进制霍夫曼码输入:N对(文字、计数/概率)的集合。输出:N对(文字,霍夫曼码)的集合。1-通过减小的计数将文字集合排序。2-选择2个最不可能的文字,并且分别向每个文字指派位0和1。3-通过为选定文字的计数求和的复合文字替代选定文字,并且将其重新顺序。4-当剩余的文字多于一个时,进行步骤到6。5-选择两个最不可能的文字,并且分别附加0和1。6-通过为选定文字的计数求和的复合文字替代选定文字,并且将其重新顺序。7-通过聚合位的级联给出每个文字的霍夫码。以上霍夫曼树在译码方案的实施方案中引入两个关键的低效因素。首先,树的每个节点必须存储对其子节点的参考或对其表示的文字的参考。这在存储器使用方面成本很高,并且如果在源数据中存在高比例的唯一文字,则代码树的总大小可能占据大量的整体经编码数据。第二,穿越树的计算成本很高,因为在读入经编码数据中的每个位时,需要算法随机跳转通过存储器中的结构。规范霍夫曼码通过用清晰的标准化格式生成代码解决这两个问题;依次向给定长度的所有代码指派其值。这表示不是存储代码树的结构以用于解压缩,而是仅仅需要代码的长度,从而减小了经编码数据的大小。另外,因为代码是顺序的,所以可以显著简化解码算法,从而使得解码算法在计算方面是高效的。在给定以递增次序通过霍夫曼码长度(通过L指示)排序的文字列表的情况下,以下伪代码将打印规范霍夫曼码本:算法2:通过位长度计算规范霍夫曼码输入:经排序(Si,Li),i=0,1,2,...,N-1输出:经排序(Si,Ci),i=0,1,2,...,N-1设置C0=0对于i=0,1,...,N-2,进行:设置软件压缩是众所周知的,并且用于GZIP之类程序的源代码在公共领域中容易获得。在给定GZIP压缩是基于DEFLATE算法和霍夫曼译码的情况下,对于高带宽应用,实施压缩的算法在硬件中执行起来相对复杂(DEFLATE压缩数据格式规范版本1.3.IETF,1996年5月,第1页,摘要章节.RFC1951.2012年11月11日检索)。压缩背后的概念是稍后在数据流中更早出现的数据流中使用复制命令。因此,所有压缩实施方案都需要搜索历史缓冲器和某个类型的比较长度函数来确定可用于复制命令的最长长度。一种在先前历史中实施搜索匹配的方法是实施散列函数,其将可变长度串映射成固定值,所述固定值可以用于比较正在压缩的数据流。对所述数据进行散列运算并且根据Lempel-Ziv算法或可比算法比较以生成复制或文字命令(泽甫J.、兰珀尔A.(Ziv,J.;Lempel,A.)(1978).“经由可变速率译码对个别序列的压缩(Compressionofindividualsequencesviavariable-ratecoding)”,IEEE信息理论学报(IEEETransactionsonInformationTheory),24(5):530)。一旦收集了有待压缩的数据的统计数据,接着将统计数据霍夫曼编码,然后压缩以发出。霍夫曼译码并不是如上所述在硬件中实施的简单算法。本文中所揭示的系统和方法提供了一种使用超大规模集成(VLSI)电路实施规范霍夫曼译码的改进的方法。附图说明为了使得将容易理解本专利技术的优点,将参照附图中所图示的具体实施例呈现对上文简述的本专利技术的更具体的描述。在理解这些图式仅描绘本专利技术的典型实施例且因此不应认为其限制本专利技术的范围的情况下,将通过使用附图来以额外特异性和细节来描述并解释本专利技术,在附图中:图1是适合于实施根据本专利技术的实施例的方法的计算机系统的示意性框图;图2是根据本专利技术的实施例的用于霍夫曼编码的VLSI高效实施方案的组件的示意性框图;图3是根据本专利技术的实施例的同时排序和生成输入文件的霍夫曼码长度的方法的过程流程图;图4是根据本专利技术的实施例的用于将规范霍夫曼位长度归一化成指定长度的方法的过程流程图;以及图5是根据本专利技术的实施例的用于对数据文件进行霍夫曼编码的方法的过程流程图。具体实施方式将容易理解,本文中在图中总体描述和图示的本专利技术的组件可以用多种多样的不同配置来布置和设计。因此,图中表示的本专利技术的实施例的以下更详细描述并不意图限制所要求的本专利技术的范围,而是仅表示根据本专利技术的当前设想的实施例的某些实例。参照图式将最好地理解当前所描述的实施例,其中通篇中用相同数字标示相同部分。已响应于技术现状并且具体来说响应于本领域中通过当前可用的设备和方法尚未完全解决的问题和需要研发了本专利技术。因此,已研发本专利技术以提供执行非常适合VLSI实施方案的霍夫曼编码的设备和方法。众所周知,使用规范霍夫曼码,传输让解压缩器重构霍夫曼树的霍夫曼码长度就够了,此外,可以容易实施构造算法,如
技术介绍
部分中所论述。在这个部分中,下面的系统和方法提供一种计算霍夫曼码长度的改进的实施方案。具体来说,所揭示的系统和方法具有两个方面。第一方面将霍夫曼算法变换成更容易使用超大规模集成(VLSI)设计实施。第二方面导出能适应硬件的算法来限制最大霍夫曼长度(以便限制用于传输霍夫曼码长度的位数)。根据本专利技术的实施例可以具体实施为设备、方法或计算机程序产品。因此,本专利技术可以采用完全硬件实施例、完全软件实施例(包含固件、驻留软件、微码等)或组合软硬件方面的实施例(在本文中可以全部总称为“模块”或“系统”)的形式。此外,本专利技术可以采用具体实施在任何有形表达媒体中的计算机程序产品的形式,所述有形表达媒体具有具体实施于媒体中的计算机可用程序代码。可以利用一或多个计算机可用媒体或计算机可读媒体的任何组合,包含非暂时性媒体。举例来说,计算机可读媒体可以包含便携式计算机磁盘、硬盘、随机存取存储器(RAM)装置、只读存储器(ROM)装置、可擦除可编程只读存储器(EPROM或快闪存储器)装置、便携式压缩光盘只读存储器(CDROM)、光学存储装置和磁性存储装置中的一或多个。在所选的实施例中,计算机可读媒体可包括任何非暂时性媒体,其可以容纳、存储、传送、传播或传递通过或结合指令执行系统、设备或装置使用的程序。可以一种或多种编程语言的任何组合编写用于执行本专利技术的操作的计算机程序代码,所述一种或多种编程语言包含例如Java、Smalltalk、C++等等面向本文档来自技高网
...

【技术保护点】
一种用于压缩的方法,其包括通过计算机系统执行:接收多个计数P(i),i=1到N,每个计数P(i)对应于数据集中的多个符号中的一个符号S(i),所述多个计数P(i)未排序;根据所述计数P(i)向N个中的每个符号S(i),i=1到N指派位长度而无需首先将所述计数P(i)排序,以获得第一规范霍夫曼码;以及使用所述第一规范霍夫曼码对所述数据集进行规范霍夫曼译码。

【技术特征摘要】
【国外来华专利技术】2014.06.09 US 14/299,9901.一种用于压缩的方法,其包括通过计算机系统执行:接收多个计数P(i),i=1到N,每个计数P(i)对应于数据集中的多个符号中的一个符号S(i),所述多个计数P(i)未排序;根据所述计数P(i)向N个中的每个符号S(i),i=1到N指派位长度而无需首先将所述计数P(i)排序,以获得第一规范霍夫曼码;以及使用所述第一规范霍夫曼码对所述数据集进行规范霍夫曼译码。2.根据权利要求1所述的方法,其中根据所述计数P(i)向每个符号S(i)指派所述位长度而无需首先将所述计数P(i)排序包括:向每个符号S(i)指派映射值I(i),所述映射值是依次向所述数据集中的每个符号S(i)指派的;确定所述多个计数P(i),i=1到N,每个计数对应于不同的符号S(i);(a)寻找所述多个符号S(i)中具有所述多个频率量度P(i)中的最低对应计数P(a)和P(b)的两个符号S(a)和S(b);(b)将所述计数P(a)和C(b)求和以获得总和Pt;(c)确定指派给符号S(a)和S(b)的所述映射值I(a)和I(b)中的较小映射值I(min)以及所述映射值I(a)和I(b)中的较大映射值I(max);(d)将I(max)中的一者改变成等于所述较小映射值I(min);(e)将对应于所述较小映射值I(min)的计数C(min)设置成等于Pt;(f)将对应于I(max)的计数C(max)设置成等于零;(g)递增对应于符号S(a)和S(b)的位长度L(a)和L(b);以及(h)重复(a)到(g),直到所有映射值I(i)等于零为止。3.根据权利要求1所述的方法,其进一步包括:将所有大于阈值的代码长度L(i)设置成等于所述阈值以获得第二规范霍夫曼码;确定基准代码,其是低于所述阈值的最大代码长度,其在逐一递增时,使得所述第二规范霍夫曼译码的溢流概率大于或等于一;使经调整的代码逐一递增以生成第三规范霍夫曼码,所述经调整的代码具有小于所述基准代码的长度;以及根据所述第三规范霍夫曼译码对所述数据文件进行霍夫曼译码。4.根据权利要求3所述的方法,其中生成所述第三规范霍夫曼译码进一步包括移动所述经调整的代码,使得对于对应于所述经调整的代码的所述文字,所述经调整的代码采用规范次序。5.根据权利要求4所述的方法,其中移动所述经调整的代码使得所述经调整的代码采用规范次序包括:将所述经调整的代码向右移位,直到所述经调整的代码采用规范次序为止,其中所述第三霍夫曼码的具有相等长度的代码长度按照字母顺序从左到右。6.一种用于压缩的方法,其包括通过计算机系统:生成数据文件中的多个文字的第一规范霍夫曼码,所述第一规范霍夫曼译码包含所述多个文字中的每个文字的代码长度,所述代码长度按照顺序布置;将所有大于阈值的代码长度设置成等于所述阈值以获得第二规范霍夫曼码;确定低于所述阈值的最大代码长度的基准代码,其在逐一递增时,使得所述第二规范霍夫曼译码的溢流概率大于或等于一;使经调整的代码逐一递增以生成第三规范霍夫曼码,所述经调整的代码具有小于所述基准代码的长度;以及根据所述第三规范霍夫曼译码对所述数据文件进行霍夫曼译码。7.根据权利要求6所述的方法,其中生成所述第三规范霍夫曼译码进一步包括移动所述经调整的代码,使得对于对应于所述经调整的代码的所述文字,所述经调整的代码采用规范次序。8.根据权利要求7所述的方法,其中移动所述经调整的代码使得所述经调整的代码采用规范次序包括:将所述经调整的代码向右移位,直到所述经调整的代码采用规范次序为止,其中所述第三霍夫曼码的具有相等长度的代码长度按照字母顺序从左到右。9.一种用于压缩的方法,其包括通过计算机系统:处理数据文件并且标记每个文字以作为一或多个非重复文字的多个文字群组中的一者和一或多个文字的多个复制群组中的一者的一部分,在所述数据文件中每个文字群组的所述一或多个文字前面不是一或多个文字的相同群组,在所述数据文件中每个复制群组的所述一或多个文字前面是一或多个文字的相同群组,每个复制群组具有指示所述复制群组中的文字数目的长度以及相对于在所述数据文件中在所述每个复制群组前面的一或多个文字的相同群组的偏移,并且每个文字群组具有指示所述文字群组中的文字数目的长度;对所述多个文字群组的第一部分进行霍夫曼译码以获得经霍夫曼译码的文字群组,所述多个文字群组的所述部分包含于所述数据文件的第一部分中;在输出文件中包含所述经霍夫曼译码的文字群组;以及在所述输出文件中包含所述数据文件的第二部分中的所述多个文字群组的第二部分而无需对所述多个文字...

【专利技术属性】
技术研发人员:吴英全亚历山大·贺布利司
申请(专利权)人:泰德系统股份有限公司
类型:发明
国别省市:美国;US

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

1