[发明专利]一种基于LZ77的编码方法有效
申请号: | 201611036850.2 | 申请日: | 2016-11-23 |
公开(公告)号: | CN106656198B | 公开(公告)日: | 2020-08-04 |
发明(设计)人: | 赵雅倩 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | H03M7/30 | 分类号: | H03M7/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 lz77 编码 方法 | ||
本发明公开了一种基于LZ77的编码方法,包括以下步骤:对字符进行LZ77编码;读入LZ77编码;判断当前字符编码结果,若当前字符编码结果为重复字符串编码,则判断相邻之前的字符编码结果,若相邻之前的字符编码结果为重复字符串编码,则判断当前字符编码结果与相邻之前的字符编码结果的距离是否相同,若相同,则将当前字符编码结果与相邻之前的字符编码结果进行合并。通过对相邻匹配串编码的合并,在不增加字典存储的字符串长度,不增加字典内字符串搜索匹配的复杂度的前提下,可以降低压缩文本容量,提升压缩质量,并能保持较快的压缩速率。
技术领域
本发明涉及数据压缩技术领域,尤其涉及一种基于LZ77的编码方法。
背景技术
LZ77编码是一种开源的字典压缩算法,属于无损压缩,广泛应用于gzip、LZMA等常用压缩工具。字典压缩的原理是构建一个字典,存储已编码窗口中出现的重复字符串,然后用相应的编码代替文件中与字典内字符串相匹配的字符串。其中,字典存储的重复字符串最大长度是字典容量与压缩质量的重要影响因素之一。字典内重复字符串的最大长度越大,字典容量越大,耗内存越多,搜索匹配过程越长,压缩速度越慢,压缩质量越高。
当前,随着互联网、物联网的飞速发展,数据文件规模越来越大,压缩文件所需的压缩时间越来越长,占用的CPU资源也越来越多,需要采用FPGA等硬件加速手段,以降低CPU占用率,减少数据中心功耗。但是,FPGA内存资源有限,不能构建大容量的压缩字典,压缩质量受限。
因此,对于本领域技术人员而言,如何在不增加字典容量的基础上提升压缩质量为亟需解决的技术问题。
发明内容
为了便于理解,对本申请文件中出现的部分词语,澄清如下:
LZ77:基于字典的、“滑动窗”的无损压缩算法,在本申请文件中为具有一种编码理论的算法集合,其中所述编码理论的特征为:总会包含一个动态窗口和预读缓冲器,并在动态窗口中寻找与预读缓冲器中最匹配的数据,如果匹配的数据长度大于最小匹配长度,那么就输出一对(长度(length),距离(distance))数组,长度(length)是匹配的数据长度,距离(distance)说明了在输入流中向后多少字节这个匹配数据可以被找到;
重复字符串编码:在LZ77中输出的(长度(length),距离(distance))数组,其中长度(length)为重复字符串长度编码,距离(distance)为重复字符串偏移量编码。
基于背景技术存在的技术问题,本发明提出了一种基于LZ77的编码方法,包括以下步骤:
对字符进行LZ77编码;
读入LZ77编码;
判断当前字符编码结果,若当前字符编码结果为重复字符串编码,则判断相邻之前的字符编码结果,若相邻之前的字符编码结果为重复字符串编码,则判断当前字符编码结果与相邻之前的字符编码结果的距离是否相同,若相同,则将当前字符编码结果与相邻之前的字符编码结果进行合并。
优选地,包括以下步骤:
S1:初始化编码位置;
S2:对当前位置字符进行LZ77编码;
S3:读入上述LZ77编码;
S4:若当前位置编码结果为字符,编码位置右移1位,转入S2;若当前位置编码结果为重复字符串编码(length[n],distance[n]),转入S5;
S5:判断上次编码结果,若上次编码结果为字符,编码位置右移length[n]位,转入S2;若上次编码结果为重复字符串编码(length[n-1],distance[n-1]),转入S6;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611036850.2/2.html,转载请声明来源钻瓜专利网。