CN100517979C - 一种数据压缩及解压缩方法 - Google Patents
一种数据压缩及解压缩方法 Download PDFInfo
- Publication number
- CN100517979C CN100517979C CNB2005101078998A CN200510107899A CN100517979C CN 100517979 C CN100517979 C CN 100517979C CN B2005101078998 A CNB2005101078998 A CN B2005101078998A CN 200510107899 A CN200510107899 A CN 200510107899A CN 100517979 C CN100517979 C CN 100517979C
- Authority
- CN
- China
- Prior art keywords
- main symbol
- symbol
- data stream
- compression
- main
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种数据压缩及解压缩方法。压缩包括步骤:将原始数据流分割成若干段符号,每段符号都是由N比特数据组成,再将所述若干段符号组成为连续的符号流;在所述分割后的若干段符号中确定出现次数最多的符号,并将其作为主符号,其余符号为非主符号;在输出的压缩数据流的首位写入一个表示压缩的标志,然后再写入主符号;顺序输入原始数据流,对其中出现的非主符号,将非主符号的出现的个数信息、出现非主符号的位置信息,与在各位置出现的对应的非主符号分别写入输出的压缩数据流中的主符号信息之后。按照本发明所述方法,能够实现高效的数据压缩,并且保证不会过度扩张输出的码流。
Description
技术领域
本发明涉及一种数据压缩及解压缩方法,具体地说,是涉及一种数据无损压缩及解压缩方法。
背景技术
数据压缩起源于20世纪40年代的信息论,其主要目的是通过数据压缩手段将信息数据量以压缩形式进行存储或者传输。一般情况下每个符号都有一定的出现概率,如果要压缩一条信息,必须首先分析清楚信息中每个符号出现的概率。在压缩程序中,用来处理输入信息并计算符号出现概率和决定输出哪个或哪些代码的模块称之为模型。通过一定的模型与编码进行组合计算就构成压缩技术的主要思路。根据不同的编码对原始文件数据产生不同的损失效果,可把压缩技术分为有损压缩和无损压缩两大类。其中,无损压缩的方法包括:游程、Huffman(霍夫曼编码)、算术编码等方法。
游程编码是一种非常简单的编码方法,它将数据流中连续出现的数据(游程)用该数据以及它连续出现的个数来表示。游程编码(Run LengthEncoding,RLE)是一种利用空间冗余度进行压缩的方法,相对比较简单。它属于统计编码类,是一种无损基本压缩方法,可分为定长编码和变长编码两类。
游程编码在当数据中出现连续重复的字符形成的字符串时,如果给定形成这个字符串的字符、长度和串的位置,就能恢复出原始的数据。游程编码的编码基本数据由标志位、游程长度、重复字符位构成。对于相同种类的数据采用两个字节进行表示,第1个字节表示重复的个数(游程长度),第2个字节表示重复的数据,如果重复数超过255个字节数,应重新计数。例如,假设有一段数据流:
...0A0A0A0A0D0D0D0F0F0F0F0F0F0F...
经过游程编码后,该数据流可以表示为:
...040A030D070F...
很显然,这种编码方法实现了数据的压缩。由于这种方法编码和解码的算法都非常简单,因此得到了广泛的应用。
虽然游程编码方法的通用性较好,其效率不是最优。比如,传统处理的方法是以字节为单位,降低了处理2-7bits重复数据时游程处理的效果,传统的游程长度是基于字节的,对于数据量低于256的,显然是一种浪费。
另外,对于有一种符号大量出现的数据流,采用游程方法需要反复标记这个字符,显然也是一种浪费。
因此,如何提供一种压缩效率高的数据压缩及解压缩方法,成为亟待解决的问题。
发明内容
本发明所要解决的技术问题是提供一种数据压缩及解压缩方法。来实现高效的数据压缩效率,并且保证不会过度扩张输出的码流。
为解决上述技术问题,本发明提供方案如下:
一种数据压缩方法,当“0”为原始数据流中出现次数最多的符号时,包括如下步骤:
将原始数据流分割成若干段符号,每段符号都是由N比特数据组成,再将所述若干段符号组成为连续的符号流;
将非“0”符号作为非主符号;
在输出的压缩数据流的首位写入一个表示压缩的标志;
顺序输入原始数据流,对其中出现的非主符号,将非主符号的出现的个数信息、出现非主符号的位置信息,与在各位置出现的对应的非主符号分别写入输出的压缩数据流中的压缩标志之后。
一种对上述数据压缩方法压缩后的数据流进行解压缩的方法,包括如下步骤:
输入压缩数据流,当遇到压缩标志时,准备解压缩;
根据压缩标志后的非主符号出现的个数信息,确定需要还原的非主符号个数;
根据压缩标志后的非主符号的位置信息,确定该非主符号的还原位置;
根据压缩标志后的非主符号信息,在输出的解压缩数据流中,在所述确定的还原位置写入该非主符号;
在还原的非主符号个数与所述确定的个数信息相符后,在输出的解压缩数据流中的其余位置写入“0”。
一种数据压缩方法,包括如下步骤:
将原始数据流分割成若干段符号,每段符号都是由N比特数据组成,再将所述若干段符号组成为连续的符号流;
在所述分割后的若干段符号中确定出现次数最多的符号,并将其作为主符号,其余符号为非主符号;
在输出的压缩数据流的首位写入一个表示压缩的标志,然后再写入主符号;
顺序输入原始数据流,对其中出现的非主符号,将非主符号的出现的个数信息、出现非主符号的位置信息,与在各位置出现的对应的非主符号分别写入输出的压缩数据流中的主符号信息之后。
一种对上述数据压缩方法压缩后的数据流进行解压缩的方法,包括如下步骤:
输入压缩数据流,当遇到压缩标志时,准备解压缩;
根据压缩标志后的主符号信息,确定主符号;
根据主符号信息后的非主符号出现的个数信息,确定需要还原的非主符号个数;
根据主符号后的非主符号的位置信息,确定该非主符号的还原位置;
根据主符号后的非主符号信息,在输出的解压缩数据流中,在所述确定的还原位置写入该非主符号;
在还原的非主符号个数与所述确定的个数信息相符后,在输出的解压缩数据流中的其余位置写入所述确定的主符号。
与现有技术相比,本发明的优点在于:
本发明所述方法,通过分析数据的有效特征,采用位置编码的方法进行编码压缩,极大地提高了数据的压缩效率。
本发明所要解决的技术问题、技术方案要点及有益效果,将结合实施例,参照附图作进一步的说明。
附图说明
图1为本发明所述数据压缩方法的流程图;
图2为本发明对所述数据压缩方法所压缩数据的解压缩方法的流程图;
图3a为本发明所述方法实施例表示原始数据的示意图;
图3b为本发明所述方法实施例表示压缩后数据的示意图。
具体实施方式
如图1所示,为本发明所述数据压缩方法的流程图。
一种数据压缩方法,包括如下步骤:
首先,将原始数据流分割成若干段符号,每段符号都是由N比特数据组成,再将所述若干段符号组成为连续的符号流(步骤11);
然后,在所述分割后的若干段符号中确定出现次数最多的符号,并将其作为主符号,其余符号为非主符号(步骤12);
设定一个压缩门限数,并统计非主符号出现的次数;
当所述非主符号的出现次数大于该压缩门限数时,则输出一个非压缩标志,然后将输入的原始数据流依序输出,编码结束;
当所述非主符号的出现次数小于该压缩门限数时,则继续执行步骤(13)。
在输出的压缩数据流的首位写入一个表示压缩的标志,然后再写入主符号(步骤13);
最后,顺序输入原始数据流,对其中出现的非主符号,将非主符号的出现的个数信息、出现非主符号的位置信息,与在各位置出现的对应的非主符号分别写入输出的压缩数据流中的主符号信息之后(步骤14),即,具体实现如下:
(14-1)顺序输入原始数据流,如果遇到主符号,则输入缓冲下移动一位,接收下一个输入;如果遇到非主符号,则在输出的压缩数据流中记录该非主符号在原始数据流中的位置与该非主符号;
(14-2)重复执行步骤(14-1),直至原始数据流输入结束;
(14-3)统计输入的非主符号个数,并将该个数信息插入到输出的压缩数据流中的主符号信息之后。
如图2所示,为本发明对所述压缩方法压缩数据的解压缩方法。
首先,输入压缩数据流,当遇到压缩标志时,准备解压缩(步骤201);然后,根据压缩标志后的主符号信息,确定主符号;并根据主符号信息后的非主符号出现的个数信息,确定需要还原的非主符号个数;根据主符号后的非主符号的位置信息,确定该非主符号的还原位置(步骤202);然后,根据主符号后的非主符号信息,在输出的解压缩数据流中,在所述确定的还原位置写入该非主符号(步骤203);最后,在还原的非主符号个数与所述确定的个数信息相符后,在输出的解压缩数据流中的其余位置写入所述确定的主符号(步骤204)。
在上述数据压缩及解压缩方法中,如果原始数据流中“0”的出现次数最多,则,在压缩的过程中,可以省略输出主符号“0”到压缩后的码流中,而在解压缩过程中,则在还原主符号时,直接以“0”来填充。
下面,我们来看一个数据压缩的实例。
我们先设定数据的分割基数为4bits,数据位置表示的长度也为4bits,设定非主符号出现次数的门限为L=3。
步骤1:将8Bytes数据以4Bits为单位分割,得到的原始码流为:00 0000 00 00 40 50 00,如图3a所示;
步骤2:统计分析数据流,发现0(4bit)出现次数最多,为14次,即主符号=0;
步骤3:分析非主符号出现次数,为2次,小于L=3,因此可以压缩;
步骤4:输出一个压缩标志其为1bit值1,为降低移位的负担,实际输出的是0001(占位为4bits);将4bit的主符号数值=0写到输出码流中;
步骤5:编码输入码流,如果碰到符号0,则输入缓冲下移动一位,接收下一个输入;如果碰到非主符号,则直接用位置(4Bit)+单个非主符号数据(4Bit)值来压缩数据,比如第十一位的数据4,4位置为11,如果以零来标记原始码流中的第一位,则第11位应该1010;所以输出码流为:1010(4的位置,4Bit)+4(实际数据4Bit),合并后就是:A4;同理,第十三位的5的输出码流为:C5;
步骤6:继续按照步骤5接收输入码流,直到输入流结束,统计编码后的非0数据流长度(以4bits+4bits为统计单位),这里是2。
步骤7:将编码后统计的非主符号数据出现次数数值2插入到编码后的码流开始处,具体位置为编码标志及主符号数值的后面,长度为K bits(这个长度与L,m,n,原始码流长度等有关系)这里采用的是4bits。压缩后的数据如图3b所示。
正如上述,在输入码流中出现大量“0”的情况下,本方法存在改进措施。例如,由于经常在压缩前做预处理如差分编码、BWT编码,导致输入码流中“0”的出现次数最多,这时,在输出编码时可以将主符号=0的输出也省略了,而解压缩时,对应位置直接以“0”还原即可。
本发明所述的一种数据压缩及解压缩方法,并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明之领域,对于熟悉本领域的人员而言可容易地实现另外的优点和进行修改,因此在不背离权利要求及等同范围所限定的一般概念的精神和范围的情况下,本发明并不限于特定的细节、代表性的设备和这里示出与描述的图示示例。
Claims (10)
1、一种数据压缩方法,用于对输入数据流中“0”的出现次数最多时的数据压缩,其特征在于,包括如下步骤:
步骤(1):将原始数据流分割成若干段符号,每段符号都是由N比特数据组成,再将所述若干段符号组成为连续的符号流;
步骤(2):将非“0”符号作为非主符号;
步骤(3):在输出的压缩数据流的首位写入一个表示压缩的标志;
步骤(4):顺序输入原始数据流,对其中出现的非主符号,将非主符号的出现的个数信息、出现非主符号的位置信息,与在各位置出现的对应的非主符号分别写入输出的压缩数据流中的压缩标志之后。
2、如权利要求1所述的方法,其特征在于,在所述步骤(2)之后,进一步包括如下步骤:
设定一个压缩门限数,并统计非主符号出现的次数;
当所述非主符号的出现次数大于该压缩门限数时,则输出一个非压缩标志,然后将输入的原始数据流依序输出,编码结束;
当所述非主符号的出现次数小于该压缩门限数时,则继续执行步骤(3)。
3、如权利要求1所述的方法,其特征在于,所述步骤(4),包括如下步骤:
(4-1)顺序输入原始数据流,如果遇到主符号,则输入缓冲下移动一位,接收下一个输入;如果遇到非主符号,则在输出的压缩数据流中记录该非主符号在原始数据流中的位置与该非主符号;
(4-2)重复执行步骤(4-1),直至原始数据流输入结束;
(4-3)统计输入的非主符号个数,并将该个数信息插入到输出的压缩数据流中的压缩标志之后。
4、如权利要求1所述的方法,其特征在于,进一步包括以下步骤:
(5)如果输出的压缩数据流的比特长度不是8的倍数,则以比特值“0”填充至输出数据流的尾部,以使其长度为8的倍数。
5、一种对利用如权利要求1所述的数据压缩方法压缩后的数据流进行解压缩的方法,其特征在于,包括如下步骤:
输入压缩数据流,当遇到压缩标志时,准备解压缩;
根据压缩标志后的非主符号出现的个数信息,确定需要还原的非主符号个数;
根据压缩标志后的非主符号的位置信息,确定该非主符号的还原位置;
根据压缩标志后的非主符号信息,在输出的解压缩数据流中,在所述确定的还原位置写入该非主符号;
在还原的非主符号个数与所述确定的个数信息相符后,在输出的解压缩数据流中的其余位置写入“0”。
6、一种数据压缩方法,其特征在于,包括如下步骤:
步骤(11):将原始数据流分割成若干段符号,每段符号都是由N比特数据组成,再将所述若干段符号组成为连续的符号流;
步骤(12):在所述分割后的若干段符号中确定出现次数最多的符号,并将其作为主符号,其余符号为非主符号;
步骤(13):在输出的压缩数据流的首位写入一个表示压缩的标志,然后再写入主符号;
步骤(14):顺序输入原始数据流,对其中出现的非主符号,将非主符号的出现的个数信息、出现非主符号的位置信息,与在各位置出现的对应的非主符号分别写入输出的压缩数据流中的主符号信息之后。
7、如权利要求6所述的方法,其特征在于,在所述步骤(12)之后,进一步包括如下步骤:
设定一个压缩门限数,并统计非主符号出现的次数;
当所述非主符号的出现次数大于该压缩门限数时,则输出一个非压缩标志,然后将输入的原始数据流依序输出,编码结束;
当所述非主符号的出现次数小于该压缩门限数时,则继续执行步骤(13)。
8、如权利要求6所述的方法,其特征在于,所述步骤(14),包括如下步骤:
(14-1)顺序输入原始数据流,如果遇到主符号,则输入缓冲下移动一位,接收下一个输入;如果遇到非主符号,则在输出的压缩数据流中记录该非主符号在原始数据流中的位置与该非主符号;
(14-2)重复执行步骤(14-1),直至原始数据流输入结束;
(14-3)统计输入的非主符号个数,并将该个数信息插入到输出的压缩数据流中的主符号信息之后。
9、如权利要求6所述的方法,其特征在于,进一步包括以下步骤:
(15)如果输出的压缩数据流的比特长度不是8的倍数,则以比特值“0”填充至输出数据流的尾部,以使其长度为8的倍数。
10、一种对利用如权利要求6所述的数据压缩方法压缩后的数据流进行解压缩的方法,其特征在于,包括如下步骤:
输入压缩数据流,当遇到压缩标志时,准备解压缩;
根据压缩标志后的主符号信息,确定主符号;
根据主符号信息后的非主符号出现的个数信息,确定需要还原的非主符号个数;
根据主符号后的非主符号的位置信息,确定该非主符号的还原位置;
根据主符号后的非主符号信息,在输出的解压缩数据流中,在所述确定的还原位置写入该非主符号;
在还原的非主符号个数与所述确定的个数信息相符后,在输出的解压缩数据流中的其余位置写入所述确定的主符号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101078998A CN100517979C (zh) | 2005-10-10 | 2005-10-10 | 一种数据压缩及解压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101078998A CN100517979C (zh) | 2005-10-10 | 2005-10-10 | 一种数据压缩及解压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1949670A CN1949670A (zh) | 2007-04-18 |
CN100517979C true CN100517979C (zh) | 2009-07-22 |
Family
ID=38019074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101078998A Active CN100517979C (zh) | 2005-10-10 | 2005-10-10 | 一种数据压缩及解压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100517979C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107924350A (zh) * | 2015-08-12 | 2018-04-17 | 三星电子株式会社 | 电子设备及其数据压缩方法 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102821275B (zh) * | 2011-06-08 | 2017-08-08 | 南京中兴软件有限责任公司 | 数据压缩方法及装置、数据解压缩方法及装置 |
CN103840835A (zh) * | 2012-11-26 | 2014-06-04 | 艺伦半导体技术股份有限公司 | 一种数据解压缩方法及装置 |
CN103067022B (zh) * | 2012-12-19 | 2015-10-21 | 中国石油天然气集团公司 | 一种整型数据无损压缩方法、解压缩方法及装置 |
US9564918B2 (en) | 2013-01-10 | 2017-02-07 | International Business Machines Corporation | Real-time reduction of CPU overhead for data compression |
US9792350B2 (en) | 2013-01-10 | 2017-10-17 | International Business Machines Corporation | Real-time classification of data into data compression domains |
US9053121B2 (en) | 2013-01-10 | 2015-06-09 | International Business Machines Corporation | Real-time identification of data candidates for classification based compression |
CN103368579B (zh) * | 2013-07-09 | 2016-08-17 | 杭州东方通信软件技术有限公司 | 一种wlan网管设备数据的压缩方法及系统 |
CN104734722B (zh) * | 2013-12-23 | 2018-05-01 | 深圳市国微电子有限公司 | 数据压缩方法及数据解压缩装置 |
CN103795421B (zh) * | 2014-02-26 | 2017-05-24 | 活点信息技术有限公司 | 一种数据压缩及解压缩的方法 |
GB2539239B (en) * | 2015-06-10 | 2017-10-04 | Gurulogic Microsystems Oy | Encoders, decoders and methods utilizing mode symbols |
CN104917591B (zh) * | 2015-06-11 | 2018-03-23 | 中国电子科技集团公司第五十四研究所 | 一种适用于单向有损链路的卫星网络数据包压缩方法 |
CN105337617B (zh) * | 2015-12-09 | 2018-10-26 | 浙江维融电子科技股份有限公司 | 一种fsn文件高效压缩方法 |
CN107026653B (zh) * | 2016-01-29 | 2021-03-23 | 松下知识产权经营株式会社 | 压缩数据结构和使用其的印刷数据压缩方法、印刷方法 |
JP6629165B2 (ja) * | 2016-10-07 | 2020-01-15 | 株式会社東芝 | データ圧縮装置、及び、データ伸張装置、並びに、データ圧縮伸張装置 |
CN108880559B (zh) * | 2017-05-12 | 2022-03-04 | 杭州海康威视数字技术股份有限公司 | 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备 |
CN111384969B (zh) * | 2018-12-28 | 2023-06-02 | 上海寒武纪信息科技有限公司 | 编码方法、处理器、编码装置及存储介质 |
CN111384968B (zh) * | 2018-12-28 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN110719105B (zh) * | 2019-09-16 | 2023-03-28 | 上海御渡半导体科技有限公司 | 一种测试向量的无损压缩和解压缩方法 |
CN112671413B (zh) * | 2020-12-25 | 2022-09-06 | 浪潮云信息技术股份公司 | 基于LZSS算法和Sunday算法的数据压缩方法及系统 |
-
2005
- 2005-10-10 CN CNB2005101078998A patent/CN100517979C/zh active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107924350A (zh) * | 2015-08-12 | 2018-04-17 | 三星电子株式会社 | 电子设备及其数据压缩方法 |
US11226738B2 (en) | 2015-08-12 | 2022-01-18 | Samsung Electronics Co., Ltd. | Electronic device and data compression method thereof |
CN107924350B (zh) * | 2015-08-12 | 2022-01-25 | 三星电子株式会社 | 电子设备及其数据压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1949670A (zh) | 2007-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100517979C (zh) | 一种数据压缩及解压缩方法 | |
CN112953550B (zh) | 数据压缩的方法、电子设备及存储介质 | |
CN108768403A (zh) | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 | |
EP2455853A2 (en) | Data compression method | |
CN102970043B (zh) | 一种基于gzip的压缩硬件系统及其加速方法 | |
CN110518917B (zh) | 基于Huffman编码的LZW数据压缩方法及系统 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
CN107565970B (zh) | 一种基于特征识别的混合无损压缩方法及装置 | |
CN103236847A (zh) | 基于多层哈希结构与游程编码的数据无损压缩方法 | |
CN103067022A (zh) | 一种整型数据无损压缩方法、解压缩方法及装置 | |
CN102298137B (zh) | 自适应数据率星载sar原始数据压缩方法 | |
CN104168085A (zh) | 一种基于冗余熵变换的数据压缩方法 | |
CN105191145A (zh) | 数据编码器、数据解码器及编解码方法 | |
CN101299611B (zh) | 一种基于集合游程的数据压缩方法 | |
CN111510152A (zh) | 一种声波测井数据的压缩及解压缩方法 | |
CN104125475B (zh) | 一种多维量子数据压缩、解压缩方法及装置 | |
CN1426629A (zh) | 使用多个编码器的优化无损压缩的方法和装置 | |
CN101667843A (zh) | 嵌入式系统的数据压缩、及解压缩方法与装置 | |
CN104156990A (zh) | 一种支持特大型数据窗口的无损压缩编码方法及系统 | |
CN104682966B (zh) | 列表数据的无损压缩方法 | |
KR100636370B1 (ko) | 결정 비트를 이용한 부호화 장치 및 그 방법과 그에 따른복호화 장치 및 그 방법 | |
CN102651795B (zh) | 游长缩减的二元序列压缩编码方法 | |
CN112506876B (zh) | 一种支持sql查询的无损压缩查询方法 | |
CN104113394B (zh) | 通信调制信号的压缩及解压方法 | |
CN111263155B (zh) | 一种等分辨率cr图像的压缩方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20070418 Assignee: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD. Assignor: ZTE Corporation Contract record no.: 2015440020319 Denomination of invention: Data compression and decompression method Granted publication date: 20090722 License type: Common License Record date: 20151123 |
|
LICC | Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model |