CN109831211B - 使用控制符的半动态数据压缩算法 - Google Patents
使用控制符的半动态数据压缩算法 Download PDFInfo
- Publication number
- CN109831211B CN109831211B CN201910109403.2A CN201910109403A CN109831211B CN 109831211 B CN109831211 B CN 109831211B CN 201910109403 A CN201910109403 A CN 201910109403A CN 109831211 B CN109831211 B CN 109831211B
- Authority
- CN
- China
- Prior art keywords
- compression
- code
- symbol
- data
- compressed
- 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
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明应用于数据的无损压缩领域。本发明通过在压缩编码过程中使用控制符并可附加信息的方式对压缩过程进行指导,控制编码方式,从而实现数据压缩。控制符所附加信息需要预先对待压缩数据进行分析、评估而获得。编解码过程中使用码表/树,码表/树的生成和更新基本是在控制符的指导下半动态地实现的,更新较为及时,算力消耗也相对不高,并且拥有无需另外附加码表/树信息的优点。
Description
技术领域
数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。一些机制是可逆的,这样就可以恢复原始的数据,这种机制称为无损数据压缩;另外一些机制为了实现更高的压缩率允许一定程度的数据损失,这种机制称为有损数据压缩。本发明被应用于数据的无损压缩领域。
背景技术
常见的实用无损压缩编码算法有RLE、Huffman、LZ系列等等。人们一直在寻找适应于不同场合下具有更高效率的算法。在数据压缩的不同阶段、场合,有着对时间消耗、空间消耗、压缩比率、算法的复杂程度等等的不同需求,本算法在这之间相对于其他算法取得了一定程度的平衡。
发明内容
本发明目的在于,提供一种数据压缩算法方案,在时间消耗、空间消耗、压缩比率、算法的复杂程度等等之间相对于其他算法取得一定程度的平衡。本发明主要是通过下述技术方案得以实现的。
正式开始压缩编码前,既可以通过对待压缩数据进行扫描,也可以采用其他评估方法,预先获取待压缩数据的(可以是近似的)统计特征。典型的统计特征包括但不限于每个基本码的出现频次、首次出现位置、最后一次出现位置、基本码的个数:这里基本码是指待压缩数据在压缩编码过程中使用的一个基本编码符号,常常是1个字节,但也可能是连续的若干bit信息的组合,譬如一个词组;待压缩数据可完全划分为若干基本码;其中各基本码的出现频次是必须预先获得的。
在压缩编码中使用控制符并可附加信息的方式对压缩过程进行指导,控制编码方式:所谓控制符类似计算机汇编语言的伪代码概念,它并不直接对应待压缩数据中的基本码,仅用来控制编码方式、指导编码过程;典型的控制符包括但不限于:引导符、行程符、退出符;引导符类似与动态哈夫曼编码中的NYT码,它表示与之相关的编码(基本码或控制符)尚未在之前的压缩编码过程中出现,是首次出现;与之对应,退出符表示相关的编码在其后的(一段或全部)编码中将不再出现;行程符表示相关的基本码会连续重复出现;典型的附加信息有与引导符配合的基本码及该基本码的频次信息(既可以是精确的频次数形式也可以是近似的出现概率的形式或其他形式);与行程符配合的游程长度信息;退出符可不附加信息;其中引导符在本压缩算法中是必需的。
并不需要预先构造类似Huffman编码或Fano编码所必须的较大规模的码表/树,待压缩数据中的基本码对应的压缩数据中的压缩码表并不以附加码表/树的形式给出,这些信息直接在压缩编码过程中生成并更新。所有编码(基本码或控制符)与压缩码的对应关系组成了码表/树,本压缩算法符合一般规律,码表/树中原则上使出现频次高的编码(基本码或控制符)尽可能对应相对较短的压缩码。引导符、退出符等控制符可累次改变码表/树,行程符可改变编码方式。引导符通常会在码表/树中增加一条对应信息,除非附加信息表明没有必要增加;而退出符则相反,会删除一条对应信息。
半动态的“半”这里意思是码表/树并不在一直试图被改变。本压缩算法通常并不像动态Huffman编码那样一直试图改变码表/树,而是在遇到特定的控制符时才尝试改变,因此也相对降低了算力的耗费;一种例外情形是解码时可以得到编码的精确出现频次,譬如压缩编码时引导符所附加信息说明了精确的出现频次,此时也就具备了随时修正压缩码长度的条件。
半动态编码也是具有一定动态特性的,表现为,同一个编码(基本码或控制符),可能在压缩编码过程中的不同时期对应不同的压缩码;同一压缩码也可能在压缩编码过程中的不同时期对应同一个编码(基本码或控制符)。这样的特性可及时调整压缩码长度,为取得更好的压缩率创造了必要的条件。
本算法常常可以通过迭代分析统计特征、前几次压缩编码过程,进而修正统计量的实际使用值等方式在下一轮压缩编码得到更好的压缩率。譬如,当出现引导符及附加编码信息,就意味着对应时刻这个编码出现了一次,因此每个基本码对应的压缩码出现频次都会比在待压缩数据中统计得到的该基本码的出现频次少;而行程码会使得该情况更严重;退出码本身会使压缩后的数据变得更长,但是它可能会改变码表/树,使压缩率更好,往往需要迭代分析才知道在特定情况下是否值得使用退出符。还有一些此类情况不再一一详述,因此本压缩算法方案常常可以通过多轮压缩取得更好的压缩率。
除了上述重要步骤特征外,还需要针对具体使用场景,进行一些必要的编码约定,这些约定是可以随场景改变的,但是在进行具体的压缩编码中是必要的。这里简述一种简单的编码约定:压缩数据的头部,首先给出引导符的实际出现频次;在必然出现引导符时,可省略引导符的压缩码输出; 引导符之后,紧跟附加信息,首先是基本码,然后是该基本码的出现频次;需要有两条或以上压缩码时才开始生成码表/树。
下面进行一个简单实例的分析,对以下ASCII码待压缩数据进行压缩:“122333444545555”。约定只使用引导符一种控制符;约定每个基本码为一个字符,统计易得共出现5个基本码,其中“1”出现1次,“2”出现2次,“3”出现3次,“4”出现4次,“5”出现5次。则引导符出现频次应为4次,各基本码对应的压缩码应依次各出现0、1、2、3、4次。所以码表中应出现5个对应关系,使较短的压缩码对应频次较高的编码。约定第一个信息为引导符的出现次数,出现次数固定使用3bit,则压缩码中二进制bit信息第一个为“100”;正文第一个基本码必定之前没有出现过,此时约定可以省略引导符,所以直接为附加信息,故而压缩码中第二个信息为第一个基本码“0”的bit信息“00110001”,及第三个信息为频次“000”,该基本码不再出现,因此不需要在码表中保存相应信息;此时仍只有一个编码的频次信息(引导符),不需要生成码表/树,那么下一个必然还是一个新的基本码,再次省略输出引导符,附加信息为第四个信息基本码“2”的bit信息“00110010”和第五个信息频次 “001”;此时生成码表/树引导符对应bit信息“0”,“2”对应bit信息“1”;接下来的基本码有了对应码表信息,输出第六个压缩码bit信息“1”;接下来一个新的基本码,输出引导符压缩码“0”,基本码“3”的bit信息“00110011”,频次信息2次bit信息“010”;此时需要在码表/树中增加一条,引导符、“3”、“2”对应压缩码“0”、“10”、“11”,则之后连续两个基本码“3”,输出两个压缩码“10”;此时又需要输出引导符“0”,基本码“4”对应的bit信息“00110100”、频次信息3次“011”;这时又需要在码表/树中加一条,引导符、“4” 、“3”、“2”对应压缩码“1”、“01”、“000”、“001”,之后2次基本码“4”对应输出2次压缩呀“01”;同理有,输出引导符及附加信息“1”、“00110101”、“100”;增加码表/树一条信息,引导符、“5” 、“4” 、“3”、“2”对应压缩码“00”、“01”、“11”、“100”、“101”;同理输出5个压缩码“11”、“01”、 “01”、“01”、“01”,完成压缩,对应压缩过程总结下表。
可以看出上例给出的是精确出现频次,可以进行迭代分析,进一步压缩。当基本码“2”对应的压缩码“1”输出后,该基本码已经全部输出完毕(因为频次信息已经说明它的压缩码实际只出现一次),因此可以从码表/树中删除对应信息;进而可以推断,下个必然是新的基本码,则引导符又可以省略;同理可得到进一步的压缩的总结表格。
解压过程与压缩过程完全类同,互为逆过程不再赘述。具体的码表/树生成规则只要压缩编码过程和解压缩解码过程规则一致,能够完全对应即可,Fano编码表、Huffman编码树都是可行的。
Claims (1)
1.使用控制符的半动态数据压缩方法,其特征在于,预先获取待压缩数据的统计特征,统计特征包括但不限于每个基本码的出现频次、首次出现位置、最后一次出现位置、基本码的个数,统计特征可以通过预先对待压缩数据进行一遍扫描获得;基本码是指待压缩数据在压缩编码时的一个基本编码符号;待压缩数据可完全划分为若干基本码;各基本码的出现频次须预先获得;
压缩编码中使用控制符并选择附加信息或不附加信息的方式对压缩过程进行指导,控制编码方式,所述控制符并不直接对应待压缩数据中的基本码,仅用来控制编码方式、指导编码过程;所述的控制符包括但不限于:引导符、行程符、退出符;引导符类表示相关的编码尚未在之前的压缩编码过程中出现;退出符表示相关的编码在其后的压缩编码过程中将不再出现;行程符表示相关的基本码会连续重复出现;附加信息包括与引导符配合的基本码及该基本码的频次信息,与行程符配合的游程长度信息;退出符选择不附加信息或附加信息;所述控制符至少包括引导符;
待压缩数据中的基本码对应的压缩数据中的编码表直接在压缩编码过程中生成并更新,所述引导符、退出符控制符可累次改变码表/树,行程符可改变编码方式;码表/树中使出现频次高的编码对应相对较短的压缩码;
同一个编码可在压缩编码过程中的不同时期对应不同的压缩码;同一压缩码可在压缩编码过程中的不同时期对应同一个编码;
通过迭代分析前几次的压缩编码过程的统计特征修正统计量的实际使用值以在下一轮压缩编码得到更好的压缩率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910109403.2A CN109831211B (zh) | 2019-02-10 | 2019-02-10 | 使用控制符的半动态数据压缩算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910109403.2A CN109831211B (zh) | 2019-02-10 | 2019-02-10 | 使用控制符的半动态数据压缩算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109831211A CN109831211A (zh) | 2019-05-31 |
CN109831211B true CN109831211B (zh) | 2023-04-11 |
Family
ID=66863496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910109403.2A Active CN109831211B (zh) | 2019-02-10 | 2019-02-10 | 使用控制符的半动态数据压缩算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109831211B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09162748A (ja) * | 1995-12-01 | 1997-06-20 | Fujitsu Ltd | データ符号化方法、データ復号方法、データ圧縮装置、データ復元装置、及びデータ圧縮・復元システム |
CN103227644A (zh) * | 2013-05-17 | 2013-07-31 | 重庆大学 | 一种针对汽车车身小格式数据的压缩方法 |
CN107565970B (zh) * | 2017-08-17 | 2021-01-15 | 苏州浪潮智能科技有限公司 | 一种基于特征识别的混合无损压缩方法及装置 |
-
2019
- 2019-02-10 CN CN201910109403.2A patent/CN109831211B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109831211A (zh) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11044495B1 (en) | Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation | |
US10979071B2 (en) | Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation | |
CN108768403B (zh) | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 | |
US7688233B2 (en) | Compression for deflate algorithm | |
EP2455853A2 (en) | Data compression method | |
US7764202B2 (en) | Lossless data compression with separated index values and literal values in output stream | |
CN105359418B (zh) | 编码器、解码器和编码解码方法 | |
CN108737976A (zh) | 一种基于北斗短报文的压缩传输方法 | |
CN112968706B (zh) | 数据压缩方法、fpga芯片及fpga在线升级方法 | |
US6301394B1 (en) | Method and apparatus for compressing data | |
US20230045121A1 (en) | Double-pass lempel-ziv data compression with automatic selection of static encoding trees and prefix dictionaries | |
Mahmood et al. | An Efficient 6 bit Encoding Scheme for Printable Characters by table look up | |
US5010344A (en) | Method of decoding compressed data | |
CN109831211B (zh) | 使用控制符的半动态数据压缩算法 | |
US5184126A (en) | Method of decompressing compressed data | |
US11870467B2 (en) | Data compression method and apparatus, and computer readable storage medium | |
CN116471337A (zh) | 一种基于bwt和lzw的报文压缩与解压缩方法及设备 | |
KR20160106229A (ko) | 문맥기반 분포데이터의 블럭화를 이용한 허프만 부호화의 효율화 방법 및 그 장치 | |
KR101791877B1 (ko) | 유티에프-8 코드 문자의 압축 방법 및 장치 | |
US7750826B2 (en) | Data structure management for lossless data compression | |
CN117950598B (zh) | 一种电子产品设计数据智能存储方法 | |
CN102891730A (zh) | 基于bcd码卫星短报文的编码方法和装置 | |
CN109639285B (zh) | 一种基于有限块排序压缩提高bzip2压缩算法速度的方法 | |
JP2005510937A (ja) | 信号処理方法、及び対応する符合化方法及び装置 | |
Waghulde et al. | New data compression algorithm and its comparative study with existing techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |