一种基于网络字典的无损数据压缩方法与流程

文档序号:12009558阅读:232来源:国知局
本发明涉及一种无损数据压缩方法,特别是一种基于网络字典的无损数据压缩方法。

背景技术:
压缩技术可分为有损压缩和无损压缩,有损压缩通常用于多媒体数据压缩,而无损压缩则通常用于通用数据压缩,无损压缩又可分为基于统计模型的压缩方法和基于字典模型的压缩方法,前者的代表为Huffman编码和算术编码,后者的代表为LZ77、LZ78、LZW等。现有基于字典的压缩算法中的字典均为本地基于源文件而生成。

技术实现要素:
本发明其目的就在于提供一种基于网络字典的无损数据压缩方法,采用了远程服务器保存字典,节省了本地字典的空间,提高了压缩效率,压缩算法和字典维护算法综合考虑了时间和空间复杂度,以简单的运算实现了较高的压缩效率,同时压缩算法可根据文件类型不同,采用不同字典,强化了字典针对性,提高了压缩效率。实现上述目的而采取的技术方案,所述方法包括字典维护、压缩方法、解压方法,所述压缩方法包括:1)在服务器中创建私有字典,在目标文件中注明字典版本号和私有字典编号;2)根据字典中串长度的构成方法顺序遍历原始文件,用标准字典中对应的“编码+重复次数”置换,生成过程文件,并根据标准字典中各串的使用次数,更新标准字典中的引次;3)将过程文件中未能用编码替换的串编制成私有字典,根据其引次,采用霍夫曼算法生成相应的编码,保存到服务器中私有字典中;4)用私有字典中的“编码+重复次数”置换过程文件中未置换成编码的串,生成目标文件;5)在将串转化为“编码+重复次数”的过程中,如果重复次数为0,则重复次数省略,如重复次数为大于0的数值,则判断采用“编码+编码+……+编码”方式与“编码+重复次数”方式哪种数据量更小,就采用哪种;所述解压方法包括:1)读取目标文件中的版本号和私有字典编号,连接服务器,获取版本号和私有字典编号所对应的标准字典和私有字典;2)利用标准字典和私有字典中编码和串的对应关系,将目标文件中的“编码+重复次数”还原成串,生成原始文件;所述标准字典和扩展字典维护方法包括:1)标准字典的表项长度因原始文件类型不同而定;2)每次压缩后,均将压缩过程中所有串的重复次数作为表项分别放入标准字典和扩展字典中;3)定期将扩展字典中的表项和标准字典中的表项合并,选出引次最高的部分,采用霍夫曼算法重新编码,生成新的标准字典,未入选标准字典的表项放入新的扩展字典中,创建新版本编号,得到新版本标准字典和扩展字典;其中标准字典、私有字典、扩展字典定义如下:标准字典:当前版本号使用的字典,所有使用此版本字典进行压缩的原始文件共同使用,包括三个字段串、编码、引次。私有字典:每一个原始文件对应一个私有字典,以字典版本号原始文件的编号作为私有字典的名称,私有字典由原始文件中无法在标准字典中找到对应编码的串和该串对应的编码所构成,包括两个字段串、编码。扩展字典:包含本版本中所有私有字典中的串和各串对应的引次,包括两个字段串、引次。有益效果与现有技术相比本发明具有以下优点。由于采用了远程服务器保存字典,节省了本地字典的空间,提高了压缩效率,压缩算法和字典维护算法综合考虑了时间和空间复杂度,以简单的运算实现了较高的压缩效率,同时压缩算法可根据文件类型不同,采用不同字典,强化了字典针对性,提高了压缩效率。具体实施方式一种基于网络字典的无损数据压缩方法,包括网络字典,所述方法包括字典维护、压缩方法、解压方法,所述压缩方法包括:1)在服务器中创建私有字典,在目标文件中注明字典版本号和私有字典编号;2)根据字典中串长度的构成方法顺序遍历原始文件,用标准字典中对应的“编码+重复次数”置换,生成过程文件,并根据标准字典中各串的使用次数,更新标准字典中的引次;3)将过程文件中未能用编码替换的串编制成私有字典,根据其引次,采用霍夫曼算法生成相应的编码,保存到服务器中私有字典中;4)用私有字典中的“编码+重复次数”置换过程文件中未置换成编码的串,生成目标文件;5)在将串转化为“编码+重复次数”的过程中,如果重复次数为0,则重复次数省略,如重复次数为大于0的数值,则判断采用“编码+编码+……+编码”方式与“编码+重复次数”方式哪种数据量更小,就采用哪种;所述解压方法包括:1)读取目标文件中的版本号和私有字典编号,连接服务器,获取版本号和私有字典编号所对应的标准字典和私有字典;2)利用标准字典和私有字典中编码和串的对应关系,将目标文件中的“编码+重复次数”还原成串,生成原始文件;所述标准字典和扩展字典维护方法包括:1)标准字典的表项长度因原始文件类型不同而定;2)每次压缩后,均将压缩过程中所有串的重复次数作为表项分别放入标准字典和扩展字典中;3)定期将扩展字典中的表项和标准字典中的表项合并,选出引次最高的部分,采用霍夫曼算法重新编码,生成新的标准字典,未入选标准字典的表项放入新的扩展字典中,创建新版本编号,得到新版本标准字典和扩展字典;其中标准字典、私有字典、扩展字典定义如下:标准字典:当前版本号使用的字典,所有使用此版本字典进行压缩的原始文件共同使用,包括三个字段串、编码、引次;私有字典:每一个原始文件对应一个私有字典,以字典版本号原始文件的编号作为私有字典的名称,私有字典由原始文件中无法在标准字典中找到对应编码的串和该串对应的编码所构成,包括两个字段串、编码;扩展字典:包含本版本中所有私有字典中的串和各串对应的引次,包括两个字段串、引次。所述网络字典保存在服务器中,包括标准字典、扩展字典、私有字典,所述标准字典包含串、编码、引次三个字段,标准字典为使用当前版本的压缩文件公用所述扩展字典包含串、引次两个字段,扩展字典集合了当前版本字典中所有私有字典中串的引次,用于构造下一版本字典所述私有字典包含串、编码两个字段,私有字典为每一个压缩文件私有。其中原始文件可通过标准字典和私有字典中串与编码对应关系,用标准字典和私有字典中的编码描述。标准字典中表项选取的原则为权重高者入选,权重的计算方法为串长度×引次。无论原始文件是按位、字节、双字节等方式保存,目标文件均可采用按位保存的方法。词汇说明:原始文件:压缩前的文件。目标文件:压缩后的文件。过程文件:压缩过程中产生的文件。服务器:网络中用于保存字典的计算机设备。串:一组二进制数序列,原始文件是由不同的串组合而成。串长度可以是一个正整数区间内的任意长度,也可以是一个正整数定长的正整数倍,具体可由原始文件类型而定。编码:一组二进制数序列,与不同的串一一映射,用于在目标文件中描述串。引次:每个串对应编码被引用的次数。重复次数:编码在目标文件连续使用的次数,重复次数为标准字典和扩展字典中的一个字段。权重:字典中串长度与重复次数的乘积。字典:保存串、编码、引次、重复字数、权重等字段的对应关系。字典命名由库编号和版本号构成,字典包括标准字典、私有字典和扩展字典。字典保存在服务器中。标准字典:当前版本号使用的字典,所有使用此版本字典进行压缩的原始文件共同使用,包括三个字段:串、编码、引次。私有字典:每一个原始文件对应一个私有字典,以字典版本号+原始文件的编号作为私有字典的名称。私有字典由原始文件中无法在标准字典中找到对应编码的串和该串对应的编码所构成,包括两个字段:串、编码。扩展字典:包含本版本中所有私有字典中的串和各串对应的引次,包括两个字段:串、引次。算法压缩过程:1、在服务器中创建私有字典,在目标文件中注明字典版本号和私有字典编号;2、根据字典中串长度的构成方法顺序遍历原始文件,用标准字典中对应的“编码+重复次数”置换,生成过程文件,并根据标准字典中各串的使用次数,更新标准字典中的引次;3、将过程文件中未能用编码替换的串编制成私有字典,根据其引次,采用霍夫曼算法生成相应的编码,保存到服务器中私有字典中;4、用私有字典中的“编码+重复次数”置换过程文件中未置换成编码的串,生成目标文件。5、在将串转化为“编码+重复次数”的过程中,如果重复次数为0,则重复次数省略,如重复次数为大于0的数值,则判断采用“编码+编码+……+编码”方式与“编码+重复次数”方式哪种数据量更小,就采用哪种。解压过程:1、读取目标文件中的版本号和私有字典编号,连接服务器,获取版本号和私有字典编号所对应的标准字典和私有字典;2、利用标准字典和私有字典中编码和串的对应关系,将目标文件中的“编码+重复次数”还原成串,生成原始文件。字典维护:1、标准字典的表项长度因原始文件类型不同而定;2、每次压缩后,均将压缩过程中所有串的重复次数作为表项分别放入标准字典和扩展字典中;3、定期将扩展字典中的表项和标准字典中的表项合并,选出权重最高的部分,采用霍夫曼算法重新编码,生成新的标准字典,未入选标准字典的表项放入新的扩展字典中,创建新版本编号,得到新版本字典。其他说明:1、可根据原始文件的不同文件类型建立相应的字典;2、字典中串的长度可在一个长度区间自由变化或为定长的整数倍;实施例初始标准字典:串编码引次重复1次0000重复2次0001重复3次0010重复4次0011ABCD0106ACBD0116BABC10004CBDB10014CDBA10104DBAC10114注:此处假定初始标准字典中设定最高重复次数为4次,11X为保留编码,留给私有字典分配。初始扩展字典:串引次权重DBCA312BACD312CADD312ACDB312CDDB312ACCD312DCA39DBC39DC48CA36DB24BC24D44A33B22C22原始文件:ABCDDCABCDABCDDCADBACDBCADDABCDABCDABCDBACDBACDDBACDDBACBABC压缩过程示例:1、分析原始文件中与标准文件能匹配的串(以下用粗斜体标出):ABCDDCABCDABCDDCADBACDBCADDABCDABCDABCDBACDBACDDBACDDBACBABC2、使用标准字典中编码代替原始文件中能匹配的串,生成过程文件1:010DC010010DCA1011DBCADD0100001BACDBACDDBACD101110003、计算步骤2中标准字典内各编码使用次数,累加到标准字典中,更新标准字典为:串编码引次重复1次0000重复2次0001重复3次0010重复4次0011ABCD0106ACBD0110BABC10001CBDB10010CDBA10100DBAC101124、将过程文件中未能用编码替换的串编制成私有字典:(设字典中串的长度范围为1-4字符)(1)顺序扫描过程文件1中未被替换的字符,检索出长度为4个字符的串的引次,见下表:串编码引次DBCA1BCAD1CADD1BACD3ACDB1CDBA1DBAC2ACDD1CDDB1DDBA1(2)将其中引次>K(此数值可调整,此处设定为K=1)的串降序排列,并匹配临时编码:串编码引次BACDE3DBACF2(3)依照上表用临时编码替换过程文件1中对应的串,过程中因前置表项中的替换导致引次<=K的串忽略,不进行替换,(串DBAC被忽略)得到过程文件2:010DC010010DCA1011DBCADD0100001EEDE10111000(4)顺序扫描过程文件2中未被替换的字符,检索出长度为3个字符的串的引次,见下表:串编码引次DCA1DBC1BCA1CAD1ADD1(5)未发现引次>K的串;(6)顺序扫描过程文件2中未被替换的字符,检索出长度为2个字符的串的引次,见下表:串编码引次DC2CA2DB1BC1AD1DD1(7)将其中引次>K的串降序排列,并匹配临时编码:串编码引次DCF2CAG2(8)依照上表用临时编码替换过程文件2中对应的串,过程中因前置表项中的替换导致引次<=K的串忽略,不进行替换,(串CA被忽略)得到过程文件3:010F010010FA1011DBCADD0100001EEDE10111000(9)顺序扫描过程文件3中未被替换的字符,检索出长度为1个字符的串,按引次降序排列并匹配临时编码,见下表:串编码引次DG4AH2BI1CJ1(10)将所有临时编码依据引次数,采用霍夫曼算法进行重新编码得过程文件4:串编码引次D11114BACD11003DC111012A111002B110111C110101(11)提取出过程文件4中串和编码两个字段的内容,生成私有字典:串编码D1111BACD1100DC11101A11100B11011C11010(12)用私有字典中的编码取代临时编码,得到目标文件:01011101010010111011110010111111110111101011100111111110100001110011001111110010111000经过压缩,原始文件为60字节,目标文件为86位约11个字节,实际使用中目标文件还需在文件首部写入定长的字典版本号和私有字典编号。(12)将私有字典中的串及其对应的引次合并至扩展字典中,并按权重降序排列,权重的计算方法为串长度×引次,得到新的扩展字典。串引次权重BACD624DBCA312CADD312ACDB312CDDB312ACCD312DC612DCA39DBC39D88CA36A55DB24BC24B33C33字典维护:定期将扩展字典中的表项和标准字典中的表项合并,将因此与串长度的成绩未作权重,选出权重最高的部分,采用霍夫曼算法重新编码,生成新的标准字典,未入选标准字典的表项放入新的扩展字典中,创建新版本编号,得到新版本字典。延续上例:1、合并标准字典和扩展字典为过程字典,并按权重降序排列:串引次权重ABCD624ACBD624BACD624BABC416CBDB416CDBA416DBAC416DBCA312CADD312ACDB312CDDB312ACCD312DC612DCA39DBC39D88CA36A55DB24BC24B33C332、将表中权重较高的前N项选出(N的长度可调整,此处N取7),在保留了长度编码和私有字典保留编码的基础上,采用霍夫曼算法将选出的N个串进行编码,得新的标准字典:串编码引次重复1次0000重复2次0001重复3次0010重复4次0011ABCD0106ACBD01106BACD01116BABC10004CBDB10014CDBA10104DBAC1011411X为保留编码,留给私有字典分配。3、将过程字典中剩余部分变成新的扩展字典,得:串引次权重DBCA312CADD312ACDB312CDDB312ACCD312DC612DCA39DBC39D88CA36A55DB24BC24B33C33
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1