一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据压缩、编码解压缩方法、装置、电子设备及存储介质与流程

2021-11-09 21:09:00 来源:中国专利 TAG:


1.本发明实施例涉及计算机技术领域,尤其涉及一种数据压缩、编码解压缩方法、装置、电子设备及存储介质。


背景技术:

2.在某些测量系统中,尤其是在带宽和电源有限的情况下,为了在传输更多的数据的同时降低电源消耗,可以在传输前进行数据压缩以减少数据量。
3.在实现本发明的过程中,发明人发现现有技术中存在以下技术问题:现有的数据压缩方式的压缩率不高。


技术实现要素:

4.本发明实施例提供了一种数据压缩、编码解压缩方法、装置、电子设备及存储介质,以实现高压缩率的数据压缩的效果。
5.第一方面,本发明实施例提供了一种数据压缩方法,可以包括:
6.获取待压缩数据,对待压缩数据进行编码,得到待压缩编码,并且根据待压缩数据的数值大小确定待压缩数据的编码长度;
7.根据编码长度对待压缩编码进行压缩,得到中间压缩编码;
8.根据编码长度和中间压缩编码,生成结果压缩编码。
9.第二方面,本发明实施例提供了一种编码解压缩方法,可以包括:
10.获取待解压缩编码流,从待解压缩编码流中得到编码长度,其中编码长度是在对待解压缩编码流中的待解压缩编码对应的压缩前的待压缩数据进行压缩时,根据待压缩数据的数值大小确定的;
11.根据编码长度从待解压缩编码流中确定出待解压缩编码,并根据编码长度对待解压缩编码进行解压缩,得到结果解压缩编码;
12.对结果解压缩编码进行解编码,得到结果解压缩数据。
13.第三方面,本发明实施例还提供了一种数据压缩装置,可以包括:
14.数据编码模块,用于获取待压缩数据,并对待压缩数据进行编码,得到待压缩编码,根据待压缩数据的数值大小确定待压缩数据的编码长度;
15.编码压缩模块,用于根据编码长度对待压缩编码进行压缩,得到中间压缩编码;
16.数据压缩模块,用于根据编码长度以及中间压缩编码,生成结果压缩编码。
17.第四方面,本发明实施例还提供了一种编码解压缩装置,可以包括:
18.编码长度得到模块,用于获取待解压缩编码流,从待解压缩编码流中得到编码长度,编码长度是在对待解压缩编码流中的待解压缩编码对应的压缩前的待压缩数据进行压缩时,根据待压缩数据的数值大小确定的;
19.编码解压缩模块,用于根据编码长度从待解压缩编码流中确定出待解压缩编码,根据编码长度对待解压缩编码进行解压缩,得到结果解压缩编码;
20.编码解编码模块,用于对结果解压缩编码进行解编码,得到结果解压缩数据。
21.第五方面,本发明实施例还提供了一种电子设备,可以包括:
22.一个或多个处理器;
23.存储器,用于存储一个或多个程序;
24.当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例所提供的数据压缩方法或是编码解压缩方法。
25.第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例提供的数据压缩方法或是编码解压缩方法。
26.本发明实施例的技术方案,通过对获取到的待压缩数据进行编码,得到待压缩编码,并且根据待压缩数据的数值大小确定待压缩数据的编码长度,其中编码长度可以是在存储空间中能够同时准确存储待压缩编码和编码长度的最小的字节数;根据编码长度对待压缩编码进行压缩,得到能够在存储空间中基于该最小的字节数表示待压缩编码的中间压缩编码;进而,根据编码长度和中间压缩编码生成结果压缩编码,即将编码长度记录在结果压缩编码中,由此可以根据结果压缩编码中的编码长度确定基于多少(即最小的字节数)个字节存储结果压缩编码,其通过降低实际占用的字节数的方式提高了数据压缩过程中的压缩率。上述技术方案,达到了高压缩率的数据压缩的效果。
附图说明
27.图1是本发明实施例一中的一种数据压缩方法的流程图;
28.图2是本发明实施例一中的一种数据压缩方法中当前误差数据的示意图;
29.图3是本发明实施例二中的一种数据压缩方法的流程图;
30.图4是本发明实施例三中的一种数据压缩方法的流程图;
31.图5是本发明实施例三中的一种数据压缩方法中可选示例的流程图;
32.图6是本发明实施例四中的一种编码解压缩方法的流程图;
33.图7是本发明实施例五中的一种数据压缩装置的结构框图;
34.图8是本发明实施例六中的一种编码解压缩装置的结构框图;
35.图9是本发明实施例七中的一种电子设备的结构示意图。
具体实施方式
36.下面结合附图和实施例对本发明作进一步详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
37.实施例一
38.图1是本发明实施例一中提供的一种数据压缩方法的流程图。本实施例可适用于对待压缩数据进行压缩的情况,尤其适用于基于待压缩数据的编码长度对待压缩数据进行压缩的情况。该方法可以由本发明实施例所提供的数据压缩装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在电子设备上,该电子设备可以是各种用户终端或服务器。
39.参见图1,本发明实施例的方法具体包括如下步骤:
40.s110、获取待压缩数据,对待压缩数据进行编码,得到待压缩编码,并且根据待压缩数据的数值大小确定待压缩数据的编码长度。
41.其中,待压缩数据可以是待进行压缩的数据,如从待压缩数据流中截取出的数据或直接获取的独立的数据,实际应用中,可选的,可以先从待压缩数据流中划分出待压缩数据块,再从待压缩数据块中获取待压缩数据,其中待压缩数据块中的待压缩数据的数据量可以根据实时性需求和数据采样率确定,例如,假设对数据采样率是1000赫兹(hz)的待压缩数据流每0.1秒(s)划分一个待压缩数据块,那么每个待压缩数据块中可以包括100个点的采样值,即数据量是100。由此,后续的各个步骤可以以待压缩数据块为单位进行处理,即对待压缩数据块中的各待压缩数据进行依次处理。再可选的,由于各待压缩数据块相互独立,因此各待压缩数据块的大小可以相同或不同,在此未做具体限定。
42.对待压缩数据进行编码,得到待压缩编码,可选的编码方案可以是二进制编码、变长编码、不归零编码、曼彻斯特编码或是差分曼彻斯特编码等,在此未做具体限定。例如,由于计算机中默认是通过n(如n=1、2或是4等)个字节表示编码结果(即待压缩编码),以n=4为例,对72(待压缩数据)进行二进制编码后得到的待压缩编码可以是00000000 00000000 00000000 01001000。
43.数值大小可以是待压缩数据在数值上的大小,如72(待压缩数据)的数值大小是72。编码长度可以是能够存储待压缩编码的最小的字节数,其设置原因在于,正如上文所述,在计算机中默认是通过n个字节表示编码结果,换言之,即使是很小的待压缩数据如0的编码结果也是需要通过n个字节进行存储的,这可能导致在编码结果前面的多个比特位上的0均是无效数字,而只有后面的几个比特位上的数字才是有效数字,如72的编码结果中只有后面的8个比特位上的数字才是有效数字,而其余的无效数字占用了较多的存储空间,因此编码长度的提出可以在准确表示编码结果的同时,降低存储空间的占用。示例性的,72的编码长度是2(个字节),其中2个字节等于16个比特位,需要说明的是,在72的待压缩编码中只有最后8个比特位上的数字是有效数字,那么编码长度是2而不是1的原因在于,多个数据的传输过程中多是以数据流的形式进行,若是以默认的n个字节表示一个编码结果,那么在编码解压缩过程中可以根据n从待解压缩编码流中直接拆分出一个一个的待解压缩编码,但是若是以编码长度表示一个编码结果,各待解压缩编码的编码长度可能存在差异,此时需要根据各待解压缩编码的编码长度从待解压缩编码流中依次拆分出各个待解压缩编码,即先根据编码长度确定相应的待解压缩编码占用了几个字节,然后再从待解压缩编码流中数出这几个字节的编码作为该待解压缩编码,因此在最终的编码结果(即s130中的结果压缩编码)中需要存储有编码长度,由此准确来说,编码长度可以是能够同时存储待压缩编码和编码长度的最小的字节数。
44.需要说明的是,上述待压缩编码的得到过程和编码长度的确定过程可以是同时执行、先后执行或是后先执行等,在此未做具体限定。
45.s120、根据编码长度对待压缩编码进行压缩,得到中间压缩编码。
46.其中,根据编码长度对待压缩编码进行压缩,得到在存储空间中占用字节数是编码长度的中间压缩编码。例如,72的编码长度是2,那么72的中间压缩编码可以是00 000000 01001000。上述中间压缩编码的得到过程可以具有多种实现方式,如根据编码长度将待压
缩编码向左移动后得到中间压缩编码,即将待压缩编码向左移动编码长度个字节后得到中间压缩编码,再即将待压缩编码整体向高位移动编码长度个字节,然后在低位补零;再如根据编码长度确定待压缩编码中的无效字节,从待压缩编码中剔除无效字节,得到中间压缩编码,其中无效字节可以是在待压缩编码中未产生实质作用的字节,比如72的待压缩编码中的前2个字节就是无效字节;当然,还可以通过其余方案得到中间压缩编码,在此未做具体限定。上述中间压缩编码的得到过程(亦即编码压缩过程)多是二进制整数运算,其可以基于位运算实现,由此能通过降低计算量的方式提高了编码压缩过程中的计算效率,中央处理器(central processing unit,cpu)开销较小。
47.s130、根据编码长度和中间压缩编码,生成结果压缩编码。
48.其中,中间压缩编码可以是待压缩编码的有效表示,那么根据编码长度和中间压缩编码生成的结果压缩编码可以是编码长度和待压缩编码的有效表示,其能够在占用最少的存储空间(即字节数)的同时有效表示待压缩编码,而且其中的编码长度有助于在编码解压缩过程中从待解压缩编码流中准确拆分出待解压缩编码。在实际应用中,可选的,上述结果压缩编码的生成过程可以具有多种实现方案,如先对编码长度进行编码,得到长度编码,然后再将长度编码添加到中间压缩编码的预设比特位上,生成结果压缩编码,其中预设比特位是中间压缩编码中预先设置的比特位,如中间压缩编码中前m个比特位,m可以是大于等于1的整数,其的具体取值可以与编码长度的最大取值有关;再如先对编码长度进行编码,得到长度编码,然后再将长度编码和中间压缩编码进行拼接,生成结果压缩编码;当然,还可通过其余方案生成结果压缩编码,在此未做具体限定。上述结果压缩编码的生成过程多是二进制整数运算,如将长度编码添加到预设比特位上的过程,可以理解为将长度编码所在的比特位移动到预设比特位上的过程,这种二进制整数运算的过程可以基于位运算实现,具有较小的计算量的位运算提高了结果压缩编码的生成效率,cpu开销较小。
49.需要说明的是,上述各步骤相互配合,首先,基于编码长度对待压缩编码进行压缩,由此实现了待压缩编码的无损压缩的效果,进而保证了在进行编码解压缩时能够完全地还原数据。其次,可以基于位运算得到中间压缩编码并且生成结果压缩编码,cpu开销较小;而且,可以基于流式计算完成上述各步骤,内存开销较小。再次,编码长度的应用降低了最终生成的结果压缩编码所占用的存储空间,即其通过降低实际占用的字节数的方式提高了数据压缩过程中的压缩率。最后,经实验验证,在将上述数据压缩方法应用于待压缩的脑电(electroencephalography,eeg)数据时,可以压缩到24~26%,压缩率较高;而且,上述数据压缩方法不仅可以在窄带无线通信系统中有所使用,在带宽和耗电不敏感的通讯系统、数据库和存储系统中亦具有较好的数据压缩效果。
50.本发明实施例的技术方案,通过对获取到的待压缩数据进行编码,得到待压缩编码,并且根据待压缩数据的数值大小确定待压缩数据的编码长度,其中编码长度可以是在存储空间中能够同时准确存储待压缩编码和编码长度的最小的字节数;根据编码长度对待压缩编码进行压缩,得到能够在存储空间中基于该最小的字节数表示待压缩编码的中间压缩编码;进而,根据编码长度和中间压缩编码生成结果压缩编码,即将编码长度记录在结果压缩编码中,由此可以根据结果压缩编码中的编码长度确定基于多少(即最小的字节数)个字节存储结果压缩编码,其通过降低实际占用的字节数的方式提高了数据压缩过程中的压缩率。上述技术方案,达到了高压缩率的数据压缩的效果。
51.一种可选的技术方案,获取待压缩数据,可以包括:获取待压缩数据流,其中待压缩数据流包括多个待压缩数据;针对各待压缩数据中的当前压缩数据,从待压缩数据流中确定出当前压缩数据的上一压缩数据和上一压缩数据的前一压缩数据;根据上一压缩数据和前一压缩数据确定出当前压缩数据的当前预测数据,根据当前压缩数据和当前预测数据确定出当前压缩数据的当前误差数据;将当前误差数据作为待压缩数据。
52.其中,当前压缩数据可以是待压缩数据流中各待压缩数据中的第3个及其以后的待压缩数据中的某个待压缩数据,上一压缩数据可以是待压缩数据流中与当前压缩数据紧邻的且位于当前压缩数据前面的待压缩数据,前一压缩数据可以是待压缩数据流中与上一压缩数据紧邻且位于上一压缩数据前面的待压缩数据,根据上一压缩数据和前一压缩数据确定当前压缩数据的当前预测数据的方式可以是线性预测或非线性预测,其可以根据待压缩数据流的数据特性确定。进一步,根据当前压缩数据和当前预测数据确定当前压缩数据的当前误差数据,然后将当前误差数据作为待压缩数据,即以当前误差数据为主体执行后续步骤。当然,对于待压缩数据流中的前2个待压缩数据,它们仍然以自身为主体执行后续步骤。在实际应用中,可选的,可以以从待压缩数据流中划分出的待压缩数据块为单位执行上述数据预测过程,即对待压缩数据块内各待压缩数据进行数据预测,由此可以得到该待压缩数据块内的从第3个待压缩数据开始构成的误差序列,即误差序列可以是包括依次确定的各当前误差数据的序列。需要说明的是,由于待压缩数据流中的各待压缩数据是具有局部连续性,因此基于各当前误差数据得到的误差序列的动态范围相较于待压缩数据流会大幅度降低,如将动态范围在0

100的待压缩数据流压缩到动态范围在10以下的误差序列,由此后续在对误差序列进行压缩(即对误差序列中各当前误差数据进行压缩)时,动态范围更小的误差序列的结果编码结果在存储空间中占用更少的字节数,由此进一步提高了数据压缩过程中的压缩率。
53.为了更好地理解上述误差序列的得到过程,参见图2,其中的曲线是待压缩数据流,d
n
是当前压缩数据(即待压缩数据流中的第n个待压缩数据),d
n
‑1是上一压缩数据(即待压缩数据流中的第n

1个待压缩数据),d
n
‑2是前一压缩数据(即待压缩数据流中的第n

2个待压缩数据),如果当前预测数据的预测过程是线性预测,那么此时线性延伸出的当前预测数据p
n
=2
×
d
n
‑1‑
d
n
‑2,这相当于画一条穿过d
n
‑2和d
n
‑1直线,然后该条直线在d
n
位置上的数值为p
n
。在实际应用中,可选的,p
n
可以通过位运算计算得到,即将d
n
‑1左移1位后再减去d
n
‑2,其是通过避免乘法运算的方式加速了p
n
的计算过程。相较于非线性预测,线性预测的优势是泛用性较好和cpu开销较小。进一步,当前误差数据r
n
=d
n

p
n

54.实施例二
55.图3是本发明实施例二中提供的一种数据压缩方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,根据待压缩数据的数值大小确定待压缩数据的编码长度,可以包括:获取各候选长度和各候选数值范围间的对应关系,候选数值范围包括根据与对应的候选长度对应的有效比特位数确定;根据待压缩数据的数值大小从各候选数值范围中确定出目标数值范围,并根据对应关系从各候选长度中确定与目标数值范围对应的编码长度;或者,从各候选数值范围中确定包括待压缩数据的数值大小的中间数值范围,根据对应关系从各候选长度中确定与中间数值范围对应的中间长度,并将各中间长度中长度最小的中间长度作为编码长度。其中,与上述各实施例相同或相应的术语的解
释在此不再赘述。
56.参见图3,本实施例的方法具体可以包括如下步骤:
57.s210、获取待压缩数据,对待压缩数据进行编码,得到待压缩编码。
58.s220、获取各候选长度和各候选数值范围间的对应关系,该候选数值范围包括根据与对应的候选长度对应的有效比特位数确定。
59.其中,候选长度可以是候选的编码长度;候选数值范围可以是候选的数值范围,其可以是根据与自身对应的候选长度的有效比特位数确定的,其中有效比特位数可以是能够用于存储待压缩数据的编码结果的比特位的比特位数,如字节数是候选长度的字节中包括的比特位的比特位数减去候选长度在该字节中占用的比特位的比特位数。示例性的,假设某候选长度在某个字节中占用2个比特位,那么候选长度是1(个字节)的有效比特位数是6(即8

2),其对应的候选数值范围可以是[

32,31],候选长度是2(个字节)的有效比特位数是14(即16

2),其对应的候选数值范围可以是[

8192,8919],如表1所示,其中,最小值是候选数值范围内的最小值,最大值是候选数值范围内的最大值。
[0060]
表1各候选长度和各候选数值范围间的对应关系
[0061]
候选长度(字节)有效比特位数(比特)最小值最大值16

3231214

81928191322

20971522097151430

536870912536870911
[0062]
s230、根据待压缩数据的数值大小从各候选数值范围中确定目标数值范围,并根据对应关系从各候选长度中确定与目标数值范围对应的编码长度。
[0063]
其中,目标数值范围可以通过多种方式确定,如从各候选数值范围中确定包括待压缩数据的数值大小的中间数值范围,并将各中间数值范围的最小值中最大的最小值(或各中间数值范围的最大值中最小的最大值)所在的中间数值范围作为目标数值范围,示例性的,以表1为例,包括72(数值大小)的候选数值范围包括[

8192,8191]、[

2097152,2097151]和[

536870912,536870911],其中这3个中间数值范围的最小值分别为

8192、

2097152和

536870912,那么最大的最小值为

8192,因此目标数值范围是[

8192,8191],相对于其余的中间数值范围,与目标数值范围对应的候选长度最小,由此可以在保证准确地表示待压缩编码的同时,最大限度的降低存储空间的占用。进一步,对应关系从各候选长度中确定与目标数值范围对应的编码长度。
[0064]
s240、从各候选数值范围中确定出包括待压缩数据的数值大小的中间数值范围,并根据对应关系从各候选长度中确定与中间数值范围对应的中间长度,将各中间长度中长度最小的中间长度作为编码长度。
[0065]
其中,中间长度可以是与包括数值大小的中间数值范围对应的候选长度,中间长度的长度数量可以是一个、两个或是多个,这与具体的实际情况有关。为了在保证准确表示待压缩编码的同时,可以最大限度的降低存储空间的占用,将各中间长度中长度最小的中间长度作为编码长度。示例性的,假设中间数值范围是[

8192,8191]、[

2097152,2097151]和[

536870912,536870911],它们对应的中间长度分别是2(个字节)、3(个字节)和4(个字节),由此可以将2作为编码长度。
[0066]
需要说明的是,s230和s240是在编码长度确定过程中的两种可选方案,在实际应用中可以任选其一执行。
[0067]
s250、根据编码长度对待压缩编码进行压缩,得到中间压缩编码。
[0068]
s260、根据编码长度和中间压缩编码,生成结果压缩编码。
[0069]
示例性的,假设将编码长度的二进制编码结果(如长度编码,其中1对应于00,2对应于01,3对应于10,4对应于11)添加到中间压缩编码的第1个字节的最高的2个比特位上,那么结果压缩编码的示例如表2所示:
[0070]
表2结果压缩编码
[0071]
待压缩数据编码长度(字节)结果压缩编码(二进制)

17100 10111172201 000000 010010001765937310 011010 11110010 00110001

478767369411 100011 01110110 10010110 11110111
[0072]
本发明实施例的技术方案,通过获取各候选长度和各候选数值范围之间的对应关系,其中与候选长度对应的候选数值范围可以包括根据与候选长度对应的有效比特位数确定,并根据待压缩数据的数值大小从各候选数值范围中确定出目标数值范围,并根据对应关系从各候选长度中确定与目标数值范围对应的编码长度;或者,从各候选数值范围中确定包括待压缩数据的数值大小的中间数值范围,根据对应关系从各候选长度中确定与中间数值范围对应的中间长度,并将各中间长度中长度最小的中间长度作为编码长度,由此得到了在保证准确表示待压缩编码的同时,能够最大限度的降低存储空间的占用的编码长度,其是降低压缩率的重要手段。
[0073]
实施例三
[0074]
图4是本发明实施例三中提供的一种数据压缩方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,对待压缩数据进行编码,得到待压缩编码,可以包括:确定与待压缩数据对应的最短编码参数,并根据最短编码参数对待压缩数据进行编码,得到已压缩编码;若已压缩编码的数据量大于或是等于待压缩数据的数据量,则对待压缩数据进行二进制编码,得到待压缩编码。其中,与上述各实施例相同或时相应的术语的解释在此不再赘述。
[0075]
参见图4,本实施例的方法具体可以包括如下步骤:
[0076]
s310、获取待压缩数据,确定与待压缩数据对应的最短编码参数,并根据最短编码参数对待压缩数据进行编码,得到已压缩编码。
[0077]
其中,最短编码参数可以表示出最少用多少个比特位即可存储待压缩数据,实际应用中,可选的,最短编码参数可以是预先设置的数值,如不同的待压缩数据块或待压缩数据流中的各待压缩数据均对应于同一最短编码参数,这适合于数据波动比较小的情况,此时最短编码参数比较小,由此较好保证了压缩率,而且因为无需计算最短编码参数而降低了编码过程中的计算量;还可以是实时计算出的数值,如同一待压缩数据块或待压缩数据流中的各待压缩数据均对应于同一最短编码参数,以应用误差序列为例,每个待压缩数据块中的最短编码参数其中r是误差序列,|r[..]|是误差
序列的绝对值的均值,log
e 2是常数,且log
2 x等价于将x经过多次算术右移后最终变成0的次数,即x在存储空间中占用了多少个比特位(右移1次就是占用1个比特位),因此可以用误差序列的绝对值的均值所占用的比特位数乘以log
e 2后再向下取整数得到,这适合于数据波动比较大、或预先无法确定数据波动是否大的情况,无法预先设置一个能够适合于全部的待压缩数据块的。需要说明的是,一方面,上述是以误差序列r举例说明,在实际应用中也可以直接是待压缩数据,即此时|r[..]|可以表示待压缩数据的绝对值的均值;另一方面,上述的计算过程可以通过位运算实现,由此降低了cpu的开销。
[0078]
进一步,可以根据最短编码参数对待压缩数据进行编码,一种可选的编码方式可以是,继续以误差序列为例,针对误差序列中的每个当前误差数据,将当前误差数据分解为3个部分:符号、以及将当前误差数据的绝对值除以2
m
的余数和商,其中余数和商均可以基于位运算快速计算得到,假设r表示当前误差数据的绝对值,那么余数可以用r和2
m

1按位与得到,其中2
m
可以基于1左移m位得到;商可以用r右移m位得到。由此得到的已压缩编码可以由如表3所示的4个部分组成,已压缩编码的具体举例如表4所示(假设m=4):
[0079]
表3已压缩编码的组成部分
[0080]
组成部分长度(比特位)说明符号10:正数,1:负数余数m余数的大端/小端二进制编码商≥0由一系列的0组成,0的数量与商的数值相同结束标志1固定为1,用于识别一个已压缩编码的结束
[0081]
表4已压缩编码
[0082]
当前误差数据符号余数商已压缩编码(二进制)00000 0000 170700 0111 1

171111 0001 0 111001460 1110 000000 1
[0083]
s320、若已压缩编码的数据量大于或是等于待压缩数据的数据量,则对待压缩数据进行二进制编码,得到待压缩编码。
[0084]
其中,当已压缩编码的数据量大于或等于待压缩数据的数据量时,这说明压缩后的已压缩编码不小于原始的待压缩数据,这可能是因为在基于最短编码参数进行编码的编码方案(即压缩方式)的压缩率依赖数据的连续性,当数据发生特别剧烈的变化的情况下,尤其在将误差序列作为编码基础上的情况下,误差序列中的每个当前误差数据很大,进而由此得到的已压缩编码的数据量也会很大,甚至可能达到数千字节,据此,为了保证较好的压缩率,此时可以换一种压缩方式,如对待压缩数据进行二进制编码后得到待压缩编码,然后再与后续步骤相互配合,基于编码长度对待压缩编码进行压缩。
[0085]
当然,当已压缩编码的数据量小于待压缩数据的数据量时,这说明压缩后的已压缩编码比原始的待压缩数据小,即基于最短编码参数进行编码时可得到较好的压缩率,此时可以直接将已压缩编码作为结果压缩编码,并退出。
[0086]
s330、根据待压缩数据的数值大小确定待压缩数据的编码长度。
[0087]
s340、根据编码长度对待压缩编码进行压缩,得到中间压缩编码。
[0088]
s350、根据编码长度和中间压缩编码,生成结果压缩编码。
[0089]
本发明实施例的技术方案,考虑到待压缩数据流中的各待压缩数据可能是平稳变化的数据,也可能是会发生突变的数据,据此为了保证最终生成的结果压缩编码的压缩率,可以先根据待压缩数据对应的最短编码参数对待压缩数据进行编码,得到已压缩编码,然后再判断已压缩编码的数据量是否大于或等于待压缩数据的数据量;若是则说明上述待压缩数据不适合于根据最短编码参数进行编码来完成数据压缩,那么可以通过对待压缩数据进行二进制编码得到待压缩编码,然后再基于编码长度对待压缩编码进行压缩的方式完成数据压缩,由此达到了根据待压缩数据的实际情况选择合适的压缩方式以保证较高的压缩率的效果。
[0090]
在此基础上,可选的,在根据编码长度和中间压缩编码生成结果压缩编码后,上述编码压缩方法,还可以包括:如果结果压缩编码的数据量小于待压缩数据的数据量,则将与结果压缩编码对应的压缩方式和结果压缩编码的拼接结果作为待压缩数据的压缩结果,否则将与待压缩数据对应的压缩方式和待压缩数据的拼接结果作为待压缩数据的压缩结果。其中,为了保证待压缩数据具有较好的压缩率,可能会采用合适的压缩方式对其进行压缩。在此基础上,由于不同的压缩方式在编码解压缩过程中可能对应于不同的解压缩方式,据此可以将压缩方式也存储到存储空间中,以便在编码解压缩过程中可以确定采用哪种解压缩方式进行编码解压缩。因此,当结果压缩编码的数据量小于待压缩数据的数据量时,这说明基于编码长度完成的数据压缩过程是有效压缩,则可以将与结果压缩编码对应的压缩方式和结果压缩编码的拼接结果作为待压缩数据的压缩结果;类似的,当结果压缩编码的数据量大于等于待压缩数据的数据量时,这说明基于编码长度完成的数据压缩过程是无效压缩,则可以将与待压缩数据对应的压缩方式(即未压缩)和待压缩数据的拼接结果作为待压缩数据的压缩结果。上述压缩方式可以理解为压缩结果中的元数据(metadata),其中元数据又可以称为中介数据、中继数据等,为描述数据(即压缩结果)的数据(data about data),主要是描述数据的属性(property)信息,用来支持如指示存储位置、历史数据、资源查找或是文件记录等功能,以便压缩结果的接收方才能根据接收到的压缩结果中的元数据解码还原出待压缩数据,示例性的,如表5所示:
[0091]
表5压缩结果中的4个字段组成
[0092][0093][0094]
为了更好地理解上述各技术方案的相互配合过程,下面结合具体示例对其进行示例性的说明。示例性的,参见图5:
[0095]
s301.从待压缩数据流中划分出待压缩数据块;
[0096]
s302.对待压缩数据块中的从第3个待压缩数据开始的各待压缩数据进行线性预测,得到误差序列,其中误差序列中包括多个当前误差数据;
[0097]
s303.基于最短编码参数对当前误差数据进行编码,得到已压缩编码;
[0098]
s304.若已压缩编码的数据量(即长度)<待压缩数据的数据量,则跳转至s306,否则丢弃s303生成的已压缩编码并继续执行s305;
[0099]
s305.基于编码长度对当前误差数据进行二进制编码,得到结果压缩编码,并跳转至s307;
[0100]
s306.将元数据与已压缩编码组合到一起形成一个数据帧,跳转至s308;
[0101]
s307.将元数据与结果压缩编码组合到一起形成一个数据帧;
[0102]
s308.结束。
[0103]
实施例四
[0104]
图6是本发明实施例四中提供的一种编码解压缩方法的流程图。本实施例可适用于从待解压缩编码流解压缩出结果解压缩数据的情况,尤其适用于根据结果解压缩数据的编码长度从待解压缩编码流解压缩出结果解压缩数据的情况。该方法可以由本发明实施例提供的编码解压缩装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在电子设备上,该电子设备可以是各种用户终端或服务器。
[0105]
参见图6,本发明实施例的方法具体包括如下步骤:
[0106]
s410、获取待解压缩编码流,从待解压缩编码流中得到编码长度,其中,编码长度是在对待解压缩编码流中的待解压缩编码对应的压缩前的待压缩数据进行压缩时,根据待压缩数据的数值大小确定的。
[0107]
其中,待解压缩编码流可以是包括至少一个待解压缩编码的编码流,其中待解压缩编码可以是对与该待解压缩编码对应的待压缩数据进行压缩后得到的编码,由于在对待压缩数据进行压缩时,已经将待压缩数据的编码长度添加在待解压缩编码(即结果压缩编码)中,因此可以从待解压缩编码流中得到编码长度,该编码长度是在数据压缩过程中根据待压缩数据的数值大小确定的。
[0108]
s420、根据编码长度从待解压缩编码流中确定待解压缩编码,并根据编码长度对待解压缩编码进行解压缩,得到结果解压缩编码。
[0109]
其中,由于待解压缩编码流中的各待解压缩编码是依次连接的,因此在对待解压缩编码进行解压缩时,首要前提是从待解压缩编码流中截取出完整的待解压缩编码。在此基础上,由于编码长度可以表示出待解压缩编码在存储空间中占用了多少个字节,因此可以根据编码长度确定在用于存储编码长度的比特位后面还有多少个比特位是用于存储该待解压缩编码,然后从待解压缩编码流中取出这些比特位上的编码作为待解压缩编码,即根据编码长度可以从待解压缩编码流中确定出待解压缩编码。进而,根据编码长度对待解压缩编码进行解压缩,得到结果解压缩编码,其中编码解压缩过程与在上述各实施例中阐述的编码压缩过程相逆,在此不再赘述。
[0110]
s430、对结果解压缩编码进行解编码,得到结果解压缩数据。
[0111]
其中,编码解编码过程与上述各实施例中阐述的数据编码过程相逆,在此不再赘述。结果解压缩数据相当于待压缩数据。
[0112]
需要说明的是,在编码解压缩过程中,也可以涉及到上文中阐述的待压缩数据流分块(即待解压缩编码流分块)、数据预测(即编码预测)等过程,在此未做具体限定。
[0113]
本发明实施例的技术方案,通过从获取的待解压缩编码流中得到编码长度,该编码长度可以是在对与待解压缩编码流中的待解压缩编码对应的压缩前的待压缩数据进行压缩时,根据待压缩数据的数值大小确定的;由于根据编码长度可以确定待解压缩编码流中哪些比特位上的编码属于同一待解压缩编码,因此可以根据编码长度从待解压缩编码流中确定出待解压缩编码,并根据编码长度对待解压缩编码进行解压缩,得到结果解压缩编码;进而,对结果解压缩编码进行解编码,得到结果解压缩数据。上述技术方案,通过从待解压缩编码流中得到的编码长度有效完成了编码解压缩过程。
[0114]
实施例五
[0115]
图7为本发明实施例五提供的数据压缩装置的结构框图,该装置用于执行上述任意实施例所提供的数据压缩方法。该装置与上述各实施例中的数据压缩方法属于同一个发明构思,在数据压缩装置的实施例中未详尽描述的细节内容,可以参考上述数据压缩方法的实施例。参见图7,该装置具体可以包括:数据编码模块510、编码压缩模块520和数据压缩模块530。
[0116]
其中,数据编码模块510,用于获取待压缩数据,对待压缩数据进行编码,得到待压缩编码,且根据待压缩数据的数值大小确定待压缩数据的编码长度;
[0117]
编码压缩模块520,用于根据编码长度对待压缩编码进行压缩,得到中间压缩编码;
[0118]
数据压缩模块530,用于根据编码长度和中间压缩编码生成结果压缩编码。
[0119]
可选的,编码压缩模块520,具体可以用于:
[0120]
根据编码长度将待压缩编码向左移动,得到中间压缩编码;或者,
[0121]
根据编码长度确定待压缩编码中的无效字节,并从待压缩编码中剔除无效字节,得到中间压缩编码。
[0122]
可选的,数据压缩模块530,具体可以用于:
[0123]
对编码长度进行编码,得到长度编码;
[0124]
将长度编码添加到中间压缩编码的预设比特位上,生成结果压缩编码;或者,将长度编码和中间压缩编码进行拼接,生成结果压缩编码。
[0125]
可选的,数据编码模块510,可以包括:
[0126]
对应关系获取单元,用于获取各候选长度和各候选数值范围间的对应关系,候选数值范围包括根据与对应的候选长度对应的有效比特位数确定;
[0127]
编码长度确定单元,用于根据待压缩数据的数值大小从各候选数值范围中确定出目标数值范围,并根据对应关系从各候选长度中确定与目标数值范围对应的编码长度;或者,从各候选数值范围中确定包括待压缩数据的数值大小的中间数值范围,并根据对应关系从各候选长度中确定出与中间数值范围对应的中间长度,将各中间长度中长度最小的中间长度作为编码长度。
[0128]
可选的,数据编码模块510,可以包括:
[0129]
待压缩数据流获取单元,用于获取待压缩数据流,其中待压缩数据流包括多个待压缩数据;
[0130]
前一压缩数据确定单元,用于针对各待压缩数据中的当前压缩数据,从待压缩数据流中确定出当前压缩数据的上一压缩数据和上一压缩数据的前一压缩数据;
[0131]
待压缩数据确定单元,用于根据上一压缩数据和前一压缩数据确定当前压缩数据的当前预测数据,并根据当前压缩数据和当前预测数据确定出当前压缩数据的当前误差数据,将当前误差数据作为待压缩数据。
[0132]
可选的,数据编码模块510,可以包括:
[0133]
第一数据编码单元,用于确定与待压缩数据对应的最短编码参数,并根据最短编码参数对待压缩数据进行编码,得到已压缩编码;
[0134]
第二数据编码单元,用于若已压缩编码的数据量大于或待压缩数据的数据量,则对待压缩数据进行二进制编码,得到待压缩编码。
[0135]
在此基础上,可选的,上述数据压缩装置,还可以包括:
[0136]
压缩方式拼接模块,用于若结果压缩编码的数据量小于待压缩数据的数据量,则将与结果压缩编码对应的压缩方式以及结果压缩编码的拼接结果作为待压缩数据的压缩结果,否则将与待压缩数据对应的压缩方式和该待压缩数据的拼接结果作为待压缩数据的压缩结果。
[0137]
本发明实施例五提供的数据压缩装置,通过数据编码模块对获取得到的待压缩数据进行编码,得到待压缩编码,并且根据待压缩数据的数值大小确定待压缩数据的编码长度,其中编码长度可以是在存储空间中能够同时准确存储待压缩编码和编码长度的最小的字节数;编码压缩模块根据编码长度对该待压缩编码进行压缩,得到能够在存储空间中基于该最小的字节数表示待压缩编码的中间压缩编码;进一步,数据压缩模块根据编码长度和中间压缩编码生成结果压缩编码,即将编码长度记录在结果压缩编码中,由此可以根据结果压缩编码中的编码长度确定基于多少(即最小的字节数)个字节存储结果压缩编码,其通过降低实际占用的字节数的方式提高了数据压缩过程中的压缩率。上述装置,达到了高压缩率的数据压缩的效果。
[0138]
本发明实施例所提供的数据压缩装置可执行本发明任意实施例提供的数据压缩方法,具备执行方法相应的功能模块和有益效果。
[0139]
值得注意的是,上述数据压缩装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0140]
实施例六
[0141]
图8为本发明实施例六提供的编码解压缩装置的结构框图,该装置可用于执行上述任意实施例所提供的编码解压缩方法。该装置与上述各实施例的编码解压缩方法属于同一个发明构思,在编码解压缩装置的实施例中未详尽描述的细节内容,可以参考上述编码解压缩方法的实施例。参见图8,该装置具体可包括:编码长度得到模块610、编码解压缩模块620、以及编码解编码模块630。
[0142]
其中,编码长度得到模块610,用于获取待解压缩编码流,从待解压缩编码流中得到编码长度,编码长度是在对待解压缩编码流中的待解压缩编码对应的压缩前的待压缩数据进行压缩时,根据待压缩数据的数值大小确定的;
[0143]
编码解压缩模块620,用于根据编码长度从待解压缩编码流中确定待解压缩编码,并根据编码长度对待解压缩编码进行解压缩,得到结果解压缩编码;
[0144]
编码解编码模块630,用于对结果解压缩编码进行解编码,得到结果解压缩数据。
[0145]
本发明实施例六提供的编码解压缩装置,通过编码长度得到模块从获取的待解压缩编码流中得到编码长度,编码长度可以是在对与待解压缩编码流中的待解压缩编码对应的压缩前的待压缩数据进行压缩时,根据待压缩数据的数值大小确定的;由于根据编码长度可以确定出待解压缩编码流中哪些比特位上的编码属于同一待解压缩编码,因此通过编码解压缩模块根据编码长度从待解压缩编码流中确定出待解压缩编码,并根据编码长度对待解压缩编码进行解压缩,得到结果解压缩编码;进而,编码解编码模块对结果解压缩编码进行解编码,得到结果解压缩数据。上述装置,可通过从待解压缩编码流中得到的编码长度有效完成了编码解压缩过程。
[0146]
本发明实施例所提供的编码解压缩装置可执行本发明任意实施例所提供的编码解压缩方法,具备执行方法相应的功能模块和有益效果。
[0147]
值得注意的是,上述编码解压缩装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0148]
实施例七
[0149]
图9为本发明实施例七提供的一种电子设备的结构示意图,如图9所示,该电子设备包括存储器710、处理器720、输入装置730和输出装置740。电子设备中的处理器720的数量可以是一个或多个,图9中以一个处理器720为例;电子设备中的存储器710、处理器720、输入装置730和输出装置740可以通过总线或其它方式连接,图9中以通过总线750连接为例。
[0150]
存储器710作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据压缩方法对应的程序指令/模块(例如,数据压缩装置中的数据编码模块510、编码压缩模块520和数据压缩模块530),或是,如本发明实施例中的编码解压缩方法对应的程序指令/模块(例如,编码解压缩装置中的编码长度得到模块610、编码解压缩模块620和编码解编码模块630)。处理器720通过运行存储在存储器710中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的数据压缩方法或是编码解压缩方法。
[0151]
存储器710可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器710可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器710可进一步包括相对于处理器720远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0152]
输入装置730可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输出装置740可包括显示屏等显示设备。
[0153]
实施例八
[0154]
本发明实施例八提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据压缩方法,该方法包括:
[0155]
获取待压缩数据,对待压缩数据进行编码,得到待压缩编码,并且根据待压缩数据的数值大小确定待压缩数据的编码长度;
[0156]
根据编码长度对待压缩编码进行压缩,得到中间压缩编码;
[0157]
根据编码长度和中间压缩编码,生成结果压缩编码。
[0158]
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据压缩方法中的相关操作。
[0159]
实施例九
[0160]
本发明实施例九提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种编码解压缩方法,该方法可包括:
[0161]
获取待解压缩编码流,从待解压缩编码流中得到编码长度,其中编码长度是在对待解压缩编码流中的待解压缩编码对应的压缩前的待压缩数据进行压缩时,根据待压缩数据的数值大小确定的;
[0162]
根据编码长度从待解压缩编码流中确定出待解压缩编码,并根据编码长度对待解压缩编码进行解压缩,得到结果解压缩编码;
[0163]
对结果解压缩编码进行解编码,得到结果解压缩数据。
[0164]
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的编码解压缩方法中的相关操作。
[0165]
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。依据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0166]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献