字典查询压缩、解压缩方法及其装置的制作方法

文档序号:7537910阅读:267来源:国知局
专利名称:字典查询压缩、解压缩方法及其装置的制作方法
技术领域
本发明涉及通信领域,特别涉及字典查询压缩及解压缩技术。
背景技术
出于带宽和存储空间的限制,或节省成本的考虑,压缩技术在信息处理中有广泛应用。压缩通常分为有损与无损两大类,前者常用于图像、视频、声音等领域,解压后结果无法恢复到压缩前,但有较高的压缩比;后者常用于代码,文本等,解压后可以完全复原,但压缩比偏低。字典查询压缩(LZ77)是一种无损压缩方法,基本原理如图1所示,其核心思想是保留最近已编码的原文作为滑动窗口,即将要编码的原文作为前瞻窗口。在滑动窗口中搜索尽可能长的与前瞻窗口重合的部分(即相匹配的部分),并输出其在滑动窗口中的位置和长度,作为新编码,并更新滑动窗口与前瞻窗口。如无匹配,另以匹配长度为O及该字符编码。比如说,图1 (a)中,滑动窗口长度为20字节,前瞻窗口长度为8字节。黑体部分为搜索到的最长匹配字符串,起始位置为6,长度为5,编码后如图1 (b)所示。编码完成后新滑动窗口与前瞻窗口如图1 (C)。然后没有搜索到重合部分,只能编码为(C,0)。其中C代表原文,O代表匹配长度为O。分析以上编码过程可知,在未匹配时,效率降到原文的50%,这是难以接受的;而且匹配成功时,起始位置(即偏移)随编码位置不断移动,有大量的加减计算,增加硬件负担。

发明内容
本发明的目的在于提供一种字典查询压缩、解压缩方法及其装置,以极大地提高压缩比,并且简化硬件结构,以低成本获得高表现。为解决上述技术问题,本发明的实施方式提供了一种字典查询压缩方法,包含以下步骤将最近已编码的N个字节作为滑动窗口,将即将要编码的L个字节作为前瞻窗口 ;其中,所述N为滑动窗口包含的字节数,所述L为前瞻窗口包含的字节数;在所述滑动窗口中搜索尽可能长的与所述前瞻窗口匹配的部分;如果在所述滑动窗口中搜索到与所述前瞻窗口匹配的部分,则采用第一标志字节和第二标志字节表示匹配结果、匹配长度与匹配起始位置;其中,所述第一标志字节中的一个固定比特位用于指示所述滑动窗口与所述前瞻窗口匹配,所述第一标志字节中的其余比特用于指示匹配的长度;所述第二标志字节用于指示匹配起始位置;如果在所述滑动窗口中未搜索到与所述前瞻窗口匹配的部分,则采用所述第一标志字节表示匹配结果与将跟随的原文长度;其中,所述第一标志字节中的所述固定比特位用于指示所述滑动窗口与所述前瞻窗口不匹配,所述第一标志字节中的其余比特用于指示将跟随的原文长度。本发明的实施方式还提供了一种字典查询解压缩方法,对应于上述的字典查询压缩方法,包含以下步骤解析所述第一标志字节中的所述固定比特位;根据所述固定比特位指示的匹配结果,恢复压缩之前的原文;其中,如果所述固定比特位指示匹配,则根据所述第一标志字节中其余比特指示的匹配长度与所述第二标志字节指示的匹配起始位置,恢复压缩之前的原文;如果所述固定比特位指示不匹配,则根据所述第一标志字节中其余比特指示的原文长度,恢复压缩之前的原文。本发明的实施方式还提供了一种字典查询压缩装置,包含匹配搜索单元,用于在滑动窗口中搜索尽可能长的与前瞻窗口匹配的部分;其中,所述将最近已编码的N个字节作为滑动窗口,将即将要编码的L个字节作为前瞻窗口,所述N为滑动窗口包含的字节数,所述L为前瞻窗口包含的字节数;判断单元,用于判断所述匹配搜索单元是否在所述滑动窗口中搜索到与所述前瞻窗口匹配的部分;编码单元,用于在所述判断单元判定搜索到与所述前瞻窗口匹配的部分时,采用第一标志字节和第二标志字节表示匹配结果、匹配长度与匹配起始位置;其中,所述第一标志字节中的一个固定比特位用于指示所述滑动窗口与所述前瞻窗口匹配,所述第一标志字节中的其余比特用于指示匹配的长度;所述第二标志字节用于指示匹配起始位置;并在所述判断单元判定未搜索到与所述前瞻窗口匹配的部分时,采用所述第一标志字节表示匹配结果与将跟随的原文长度;其中,所述第一标志字节中的所述固定比特位用于指示所述滑动窗口与所述前瞻窗口不匹配,所述第一标志字节中的其余比特用于指示将跟随的原文长度。本发明的实施方式还提供了一种字典查询解压缩装置,对应于上述的字典查询压缩装置,包含匹配结果分析单元,用于解析所述第一标志字节中的所述固定比特位;解码单元,用于根据所述固定比特位指示的匹配结果,恢复压缩之前的原文;其中,所述解码单元在所述固定比特位指示匹配时,根据所述第一标志字节中其余比特指示的匹配长度与所述第二标志字节指示的匹配起始位置,恢复压缩之前的原文;在所述固定比特位指示不匹配时,根据所述第一标志字节中其余比特指示的原文长度,恢复压缩之前的原文。本发明实施方式相对于现有技术而言,保存最近一段原文作为滑动窗口,根据匹配结果,每个压缩字段表达为第一标志字节和原文,或第一标志字节和用于指示匹配地址的第二标志字节。由于仅用I比特区分是否在滑动窗口中搜索到与前瞻窗口匹配的部分,同时充分利用第一标志字节的其余比特表达匹配(或原文)长度,匹配时另有第二标志字节表达匹配位移,未匹配时,该第二标志字节不存在,后续内容为原文。因此在不匹配时,也无需用一个字节表示,杜绝空间浪费,极大地提高了压缩效率,减少了存储空间,并且由于始终以第一标志字节中的固定比特位指示匹配结果,简化了硬件结构,能以低成本获得高表现。
优选地,第一标志字节中的所述固定比特位为该第一标志字节中的最高比特位。采用第一标志字节中的最高位比特指示匹配结果,其余的低7位比特指示匹配的长度或原文,实现简单,进一步简化了硬件结构。优选地,在采用第一标志字节和第二标志字节表示匹配结果、匹配长度与匹配起始位置时,将第一标志字节中的其余比特设置为表示实际匹配字节数-1的数值;在采用第一标志字节表示匹配结果与将跟随的原文长度时,将第一标志字节中的其余比特设置为表示实际将跟随的原文的字节数-1的数值。由于长度无论匹配与否都至少为1,因此编码等于实际长度-1,进一步充分利用了表达空间。优选地,滑动窗口包含的字节数为256。由于第一标志字节的长度为8比特,能表达的范围是O到255,故滑动窗口大小为256,可以被匹配位移的字节全覆盖。优选地,在进行相应的解压缩时,将最近已解码的256个字节作为解码滑动窗口,以所述解码滑动窗口的起点作为所述匹配起始位置的基点,取出所述匹配起始位置起的符合匹配长度的字节数。由于对于匹配位移的计算,以二的整数次幂为基本单位构成地址块,以每个地址块的起点作为位移基点,匹配时,直接从滑动窗口中取数即可,大量地减少了地址加减计算。


图1是根据现有技术中的字典查询压缩方法的原理示意图;图2是根据本发明第一实施方式的字典查询压缩方法流程图;图3是根据本发明第一实施方式中的第一、第二标志字节的结构示意图;图4是根据本发明第二实施方式的字典查询解压缩方法流程图;图5是根据本发明第二实施方式中的原文以256字节为地址块的示意图;图6是根据现有技术中的匹配位移计算示意图;图7是根据本发明第二实施方式中保存的解码滑动窗口的示意图;图8是根据本发明第二实施方式中的匹配位移计算示意图;图9是根据本发明第三实施方式的字典查询压缩装置结构示意图;图10是根据本发明第四实施方式的字典查询解压缩装置结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。本发明的第一实施方式涉及一种字典查询压缩方法。在本实施方式中,将最近已编码的N个字节作为滑动窗口,将即将要编码的L个字节作为前瞻窗口 ;其中,所述N为滑动窗口包含的字节数,所述L为前瞻窗口包含的字节数。具体流程如图2所示,在步骤210中,在滑动窗口中搜索尽可能长的与前瞻窗口匹配的部分,本步骤与现有技术相同,在此不再赘述。
接着,在步骤220中,判断在滑动窗口中是否搜索到与前瞻窗口匹配的部分。如果搜索到与前瞻窗口匹配的部分,则进入步骤230 ;如果未搜索到与前瞻窗口匹配的部分,则进入步骤240。在步骤230中,采用第一标志字节和第二标志字节表示匹配结果、匹配长度与匹配起始位置。其中,第一标志字节中的一个固定比特位用于指示滑动窗口与所述前瞻窗口匹配,第一标志字节中的其余比特用于指示匹配的长度;第二标志字节用于指示匹配起始位置。具体地说,如图3所示,将第一标志字节中的最高比特位(比特位7)作为用于指示匹配结果的固定比特位,如将第一标志字节中的比特位7设置为1,表示匹配。将第一标志字节中的其余比特位(比特位O至6)指示匹配的长度。由于考虑到长度无论匹配与否都至少为I,编码等于实际长度-1,因此,在本实施方式中,将第一标志字节中的比特位O至6设置为表示实际匹配字节数-1的数值。第二标志字节仅在匹配时存在,代表匹配字符串在滑动窗口的位置。在本实施方式中,滑动窗口包含的字节数为256。由于第一标志字节的长度为8比特,能表达的范围是O到255,故滑动窗口大小为256,可以被匹配位移的字节全覆盖。在步骤240中,在未搜索到与前瞻窗口匹配的部分时,采用第一标志字节表示匹配结果与将跟随的原文长度。其中,第一标志字节中的固定比特位用于指示滑动窗口与所述前瞻窗口不匹配,如将第一标志字节中的最高比特位设置为0,表示之后为原文。第一标志字节中的其余比特用于指示将跟随的原文长度。与步骤230类似,将第一标志字节中的其余比特设置为表示实际将跟随的原文的字节数-1的数值,以充分利用表达空间。在步骤230或步骤240之后,进入步骤250,判断编码是否已结束,如果已编码结束,则结束流程,如果还存在需编码的内容,则进入步骤260,更新滑动窗口和前瞻窗口,并回到步骤210。本领域技术人员可以理解,在现有技术中,在未匹配时,用整个编码单位(通常为字节)等于零表达,浪费极大,其实仅用I比特即可。因此,在本实施方式中,将第一标志字节分为2部分,最高比特区分匹配与否,其余比特表达长度(未匹配时则代表跟随的原文长度);匹配时,紧跟的第二标志字节表达匹配位置,即偏移;如不匹配,第二标志字节不存在,紧跟的即是原文。由于仅用I比特区分是否在滑动窗口中搜索到与前瞻窗口匹配的部分,同时充分利用第一标志字节的其余比特表达匹配(或原文)长度,匹配时另有第二标志字节表达匹配位移,未匹配时,该第二标志字节不存在,后续内容为原文。因此在不匹配时,也无需用一个字节表示,杜绝空间浪费,极大地提高了压缩效率,减少了存储空间,并且由于始终以第一标志字节中的固定比特位指示匹配结果,简化了硬件结构,能以低成本获得高表现。而且,采用第一标志字节中的最高位比特指示匹配结果,其余的低7位比特指示匹配的长度或原文,实现简单,进一步简化了硬件结构。本发明的第二实施方式涉及一种字典查询解压缩方法。第二实施方式为与第一实施方式相对应的解压缩方式,为第一实施方式中的逆过程。也就是说,自动识别压缩文的第一标志字节,根据其匹配与否的信息,配合已解压的原文所构成的滑动窗口,完全无损地恢复压缩之前的原文。
具体地说,如图4所示,在步骤410中,解析第一标志字节中的固定比特位,即解析第一标志字节中的最高比特位。接着,在步骤420中,根据固定比特位指示的匹配结果,恢复压缩之前的原文。其中,如果固定比特位指示匹配(即第一标志字节的最高位比特为1),则根据第一标志字节中其余比特指示的匹配长度与第二标志字节指示的匹配起始位置,恢复压缩之前的原文;如果固定比特位指示不匹配(即第一标志字节的最高位比特为0),则根据第一标志字节中其余比特指示的原文长度,恢复压缩之前的原文。具体地说,将最近已解码的256个字节作为解码滑动窗口,在第一标志字节的最高位比特指示匹配时,以解码滑动窗口的起点作为匹配起始位置的基点,取出匹配起始位置起的符合匹配长度的字节数。本领域技术人员可以理解,原文以256字节为地址块的示意图如图5所示,写指针(write pointer)位置是压缩/解压所在的最新字节,解码滑动窗口即回溯256字节的范围(图5中有阴影覆盖的部分):较稀疏的属于第N块,较密集的属于第N+1块。图6示意了现有的LZ77方法定义的匹配位移(图中为双向箭头),匹配位移的基点是(写指针-256),匹配的第一个字节在原文中的地址是(写指针-256+匹配位移),很明显,由于写指针在不断变化,此处必须进行加减运算。而在本实施方式中,解码滑动窗口保存为图7的格式,原文不断向下刷新,刷新255字节后跳回O字节。匹配位移则以每个地址块起点(固定为图7中的O字节位置)为基点,如图8所示,匹配位移是对向箭头夹住的部分。如此匹配时,直接从滑动窗口中取数即可,无需加减运算。图8中O字节位置,即可代表原文的(N+1 )*256字节(如果匹配的是较密集的阴影部分),也可代表N*256字节(如果匹配的是较稀疏的阴影部分),无需额外信息,自动区分而无歧义。也就是说,由于对于匹配位移的计算,以二的整数次幂为基本单位构成地址块,以每个地址块的起点作为位移基点,匹配时,直接从滑动窗口中取数即可,大量地减少了地址加减计算。本发明第三实施方式涉及一种字典查询压缩装置,如图9所示,包含匹配搜索单元,用于在滑动窗口中搜索尽可能长的与前瞻窗口匹配的部分;其中,所述将最近已编码的N个字节作为滑动窗口,将即将要编码的L个字节作为前瞻窗口,所述N为滑动窗口包含的字节数,所述L为前瞻窗口包含的字节数。判断单元,用于判断所述匹配搜索单元是否在所述滑动窗口中搜索到与所述前瞻窗口匹配的部分。编码单元,用于在所述判断单元判定搜索到与所述前瞻窗口匹配的部分时,采用第一标志字节和第二标志字节表示匹配结果、匹配长度与匹配起始位置;其中,所述第一标志字节中的一个固定比特位用于指示所述滑动窗口与所述前瞻窗口匹配,所述第一标志字节中的其余比特用于指示匹配的长度;所述第二标志字节用于指示匹配起始位置;并在所述判断单元判定未搜索到与所述前瞻窗口匹配的部分时,采用所述第一标志字节表示匹配结果与将跟随的原文长度;其中,所述第一标志字节中的所述固定比特位用于指示所述滑动窗口与所述前瞻窗口不匹配,所述第一标志字节中的其余比特用于指示将跟随的原文长度。在本实施方式中,第一标志字节中的所述固定比特位为该第一标志字节中的最高比特位。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单
J Li ο本发明第四实施方式涉及一种字典查询解压缩装置。第四实施方式为与第三实施方式相对应的解压缩装置,如图10所示,包含匹配结果分析单元,用于解析第一标志字节中的所述固定比特位;解码单元,用于根据所述固定比特位指示的匹配结果,恢复压缩之前的原文;其中,所述解码单元在所述固定比特位指示匹配时,根据所述第一标志字节中其余比特指示的匹配长度与所述第二标志字节指示的匹配起始位置,恢复压缩之前的原文;在所述固定比特位指示不匹配时,根据所述第一标志字节中其余比特指示的原文长度,恢复压缩之前的原文。值得一提的是,解码单元在根据所述第一标志字节中其余比特指示的匹配长度与所述第二标志字节指示的匹配起始位置,恢复压缩之前的原文时,将最近已解码的N个字节作为解码滑动窗口,以所述解码滑动窗口的起点作为所述匹配起始位置的基点,取出所述匹配起始位置起的符合匹配长度的字节数。由于第二实施方式与本实施方式相互对应,因此本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,在第一实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
权利要求
1.一种字典查询压缩方法,其特征在于,包含以下步骤: 将最近已编码的N个字节作为滑动窗口,将即将要编码的L个字节作为前瞻窗口 ;其中,所述N为滑动窗口包含的字节数,所述L为前瞻窗口包含的字节数; 在所述滑动窗口中搜索尽可能长的与所述前瞻窗口匹配的部分; 如果在所述滑动窗口中搜索到与所述前瞻窗口匹配的部分,则采用第一标志字节和第二标志字节表示匹配结果、匹配长度与匹配起始位置;其中,所述第一标志字节中的一个固定比特位用于指示所述滑动窗口与所述前瞻窗口匹配,所述第一标志字节中的其余比特用于指示匹配的长度;所述第二标志字节用于指示匹配起始位置; 如果在所述滑动窗口中未搜索到与所述前瞻窗口匹配的部分,则采用所述第一标志字节表示匹配结果与将跟随的原文长度;其中,所述第一标志字节中的所述固定比特位用于指示所述滑动窗口与所述前瞻窗口不匹配,所述第一标志字节中的其余比特用于指示将跟随的原文长度。
2.根据权利要求1所述的字典查询压缩方法,其特征在于, 所述第一标志字节中的所述固定比特位为该第一标志字节中的最高比特位。
3.根据权利要求1所述的字典查询压缩方法,其特征在于,在所述采用第一标志字节和第二标志字节表示匹配结果、匹配长度与匹配起始位置的步骤中, 将所述第一标志字节中的其余比特设置为表示实际匹配字节数-1的数值; 在所述采用第一标志字节表示匹配结果与将跟随的原文长度的步骤中, 将所述第一标志字节中的其余比特设置为表示实际将跟随的原文的字节数-1的数值。
4.根据权利要求1所述的字典查询压缩方法,其特征在于,所述N为256。
5.一种字典查询解压缩方法,对应于权利要求1至4中任一项所述的字典查询压缩方法,其特征在于,包含以下步骤: 解析所述第一标志字节中的所述固定比特位; 根据所述固定比特位指示的匹配结果,恢复压缩之前的原文; 其中,如果所述固定比特位指示匹配,则根据所述第一标志字节中其余比特指示的匹配长度与所述第二标志字节指示的匹配起始位置,恢复压缩之前的原文;如果所述固定比特位指示不匹配,则根据所述第一标志字节中其余比特指示的原文长度,恢复压缩之前的原文。
6.根据权利要求5所述的字典查询解压缩方法,其特征在于,在所述根据第一标志字节中其余比特指示的匹配长度与所述第二标志字节指示的匹配起始位置,恢复压缩之前的原文的步骤中, 将最近已解码的N个字节作为解码滑动窗口,以所述解码滑动窗口的起点作为所述匹配起始位置的基点,取出所述匹配起始位置起的符合匹配长度的字节数。
7.一种字典查询压缩装置,其特征在于,包含: 匹配搜索单元,用于在滑动窗口中搜索尽可能长的与前瞻窗口匹配的部分;其中,所述将最近已编码的N个字节作为滑动窗口,将即将要编码的L个字节作为前瞻窗口,所述N为滑动窗口包含的字节数,所述L为前瞻窗口包含的字节数; 判断单元,用于判断所述匹配搜索单元是否在所述滑动窗口中搜索到与所述前瞻窗口匹配的部分; 编码单元,用于在所述判断单元判定搜索到与所述前瞻窗口匹配的部分时,采用第一标志字节和第二标志字节表示匹配结果、匹配长度与匹配起始位置;其中,所述第一标志字节中的一个固定比特位用于指示所述滑动窗口与所述前瞻窗口匹配,所述第一标志字节中的其余比特用于指示匹配的长度;所述第二标志字节用于指示匹配起始位置;并在所述判断单元判定未搜索到与所述前瞻窗口匹配的部分时,采用所述第一标志字节表示匹配结果与将跟随的原文长度;其中,所述第一标志字节中的所述固定比特位用于指示所述滑动窗口与所述前瞻窗口不匹配,所述第一标志字节中的其余比特用于指示将跟随的原文长度。
8.根据权利要求7所述的字典查询压缩装置,其特征在于, 所述第一标志字节中的所述固定比特位为该第一标志字节中的最高比特位。
9.一种字典查询解压缩装置,对应于权利要求7或8所述的字典查询压缩装置,其特征在于,包含: 匹配结果分析单元,用于解析所述第一标志字节中的所述固定比特位; 解码单元,用于根据所述固定比特位指示的匹配结果,恢复压缩之前的原文; 其中,所述解码单元在所述固定比特位指示匹配时,根据所述第一标志字节中其余比特指示的匹配长度与所述第二标志字节指示的匹配起始位置,恢复压缩之前的原文;在所述固定比特位指示不匹配时,根据所述第一标志字节中其余比特指示的原文长度,恢复压缩之前的原文。
10.根据权利要求9所 述的字典查询解压缩装置,其特征在于, 所述解码单元在根据所述第一标志字节中其余比特指示的匹配长度与所述第二标志字节指示的匹配起始位置,恢复压缩之前的原文时,将最近已解码的N个字节作为解码滑动窗口,以所述解码滑动窗口的起点作为所述匹配起始位置的基点,取出所述匹配起始位置起的符合匹配长度的字节数。
全文摘要
本发明涉及通信领域,公开了一种字典查询压缩、解压缩方法及其装置,在本发明中,对于压缩过程中匹配与否的情况,仅用第一标志字节中的一比特区分,同时充分利用标志字节的其余比特表达匹配(或原文)长度,匹配时另有标志字节表达匹配位移,杜绝空间浪费,极大地提高了压缩效率,进一步地,对于匹配位移的计算,采取以二的整数次幂为基本单位构成地址块,减少大量地址加减计算,利用本发明的方法与装置可以大幅减少存储空间,节省带宽,简化硬件设计,提高压缩比。
文档编号H03M7/30GK103078646SQ201210592500
公开日2013年5月1日 申请日期2012年12月31日 优先权日2012年12月31日
发明者黄寅, 蒋玉东, 胡健 申请人:上海宇芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1