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

一种数据压缩方法、电子设备及存储介质与流程

2021-12-03 23:11:00 来源:中国专利 TAG:


1.本技术实施例涉及数据传输技术领域,尤其涉及一种数据压缩方法、电子设备及存储介质。


背景技术:

2.多导睡眠监测(polysomnography,psg)是最常用的睡眠监测设备,通过监测睡眠时连续的呼吸、动脉血氧饱和度、脑电图、心电图、心率等指标,以监测睡眠状态和健康状态。具体地,psg设备一般包括主控装置和多个数据采集装置,多个数据采集装置用于采集人体睡眠状态下的生理信号,具体的生理信号包括心率、温度、脑电和音频等多个实时信号。当多个数据采集装置采集到生理信号后,分别将各生理信号传输给主控装置,使得主控装置获取各生理信号,以供后续分析,以确定睡眠状态和健康状态。
3.多个数据采集装置和主控装置之间数据传输具有通道多、采样率高和数据量大的特点,导致数据传输量大、传输效率低。


技术实现要素:

4.本技术实施例主要解决的技术问题是提供一种数据压缩方法,能够精准控制压缩后的数据量相对于压缩前的数据量有效减少,从而,能够减少传输的数据量,提高传输效率。
5.为解决上述技术问题,第一方面,本技术实施例中提供给了一种数据压缩方法,包括:
6.获取待压缩的初始数据序列,所述初始数据序列为预设时间段内采集到的时变数据;
7.采用预设的第一编码算法,对所述初始数据序列进行编码,获得第一数据序列,其中,所述第一数据序列的长度小于所述初始数据序列的长度;
8.采用预设的第二编码算法,对所述第一数据序列进行编码,获得第二数据序列;
9.若所述第二数据序列的长度小于所述第一数据序列的长度,则确定目标数据序列包括所述第二数据序列和第二标识符,其中,所述目标数据序列用于经解码后获得所述初始数据序列,所述第二标识符用于表示所述第二编码算法的身份。
10.在一些实施例中,还包括:
11.若所述第二数据序列的长度大于或等于所述第一数据序列的长度,则采用预设的第三编码算法,对所述第一数据序列进行编码,获得第三数据序列;
12.若所述第三数据序列的长度小于所述第一数据序列的长度,则确定所述目标数据序列包括所述第三数据序列和第三标识符,其中,所述第三标识符用于表示所述第三编码算法的身份。
13.在一些实施例中,还包括:
14.若所述第三数据序列的长度大于或等于所述第一数据序列的长度,则确定所述目
标数据序列包括所述第一数据序列和第一标识符,所述第一标识符用于表示所述第一编码算法的身份。
15.在一些实施例中,所述采用预设的第一编码算法,对所述初始数据序列进行编码,获得第一数据序列,包括:
16.根据所述初始数据序列中的第i个数据的前两个数据,确定所述第i个数据对应的预测数据,其中,2<i≤n,所述n为所述初始数据序列中数据的个数;
17.确定所述第i个数据对应的预测误差为所述第i个数据和所述第i个数据对应的预测数据之间的差;
18.确定第一数据序列包括所述初始数据序列中的前两个数据和(n

2)个预测误差。
19.在一些实施例中,所述根据所述初始数据序列中的第i个数据的前两个数据,确定所述第i个数据对应的预测数据,包括:
20.确定所述第i个数据对应的预测数据为第(i

1)个数据的2倍减去第(i

2)个数据。
21.在一些实施例中,所述采用预设的第二编码算法,对所述第一数据序列进行编码,获得第二数据序列,包括:
22.对所述第i个数据对应的预测误差进行编码,获得所述第i数据对应的第一编码数据;
23.确定所述第二数据序列包括所述初始数据序列中的前两个数据和(n

2)个第一编码数据。
24.在一些实施例中,所述对所述第i个数据对应的预测误差进行编码,获得所述第i数据对应的第一编码数据,包括:
25.根据所述(n

2)个预测误差,确定所述初始数据序列对应的参数值;
26.将所述第i个数据对应的预测误差与所述参数值进行取商运算,获得商值,并对所述商值进行一进制编码,获得一进制编码结果;
27.将所述第i个数据对应的预测误差与所述参数值进行取余运算,获得余值,并对所述余值进行二进制编码,获得二进制编码结果;
28.根据所述第i个数据对应的预测误差的正负数属性,确定第一符号位;
29.确定所述i数据对应的第一编码数据包括所述第一符号位、所述二进制编码结果和所述一进制编码结果。
30.在一些实施例中,所述采用预设的第三编码算法,对所述第一数据序列进行编码,获得第三数据序列,包括:
31.去除所述第i个数据对应的预测误差中的符号字节,以获取无符号字节,所述符号字节用于表示所述预测误差的正负属性;
32.所述第i个数据对应的第二编码数据由所述第二编码数据的字节长度、第二符号位和所述无符号字节拼接而成,所述第二符号位用于表示所述第i个数据对应的预测误差的正负属性;
33.所述第三数据序列包括所述初始数据序列中的前两个数据和(n

2)个第二编码数据。
34.为解决上述技术问题,第二方面,本技术实施例中提供给了一种电子设备,包括存储器以及一个或多个处理器,所述一个或多个处理器用于执行存储在所述存储器中的一个
或多个计算机程序,所述一个或多个处理器在执行所述一个或多个计算机程序时,使得所述电子设备实现如第一方面所述的方法。
35.为解决上述技术问题,第三方面,本技术实施例中提供给了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如第一方面所述的方法。
36.本技术实施例的有益效果:区别于现有技术的情况,本技术实施例提供的数据压缩方法,首先,采用预设的第一编码算法对待压缩的初始数据序列进行编码,获得第一数据序列,使得第一数据序列的长度相对与初始数据序列的长度得以减小,然后,采用预设的第二编码算法对该第一数据序列进行编码获得第二数据序列,即进一步进行二次压缩,最后,将第二数据序列的长度与第一数据序列的长度进行比较,若第二数据序列的长度小于第一数据序列的长度,则确定目标数据序列(即最终压缩后的数据)包括第二数据序列和第二标识符,从而,以目标数据序列进行传输,能够有效减少传输量,其中,第二标识符用于表示第二编码算法的身份,便于对目标数据序列进行解压。也即,该方法首先采用第一编码算法对初始数据序列进行一次压缩,然后采用第二编码算法进行二次压缩,使得初始数据序列能够得到充分压缩,尽可能减少数据量,并且,还通过将二次压缩后的第二数据序列的长度与一次压缩后的第一数据序列的长度进行比较,确保二次压缩有效,因此,能够精准控制压缩后的数据量相对于压缩前的数据量有效减少,能够减少传输的数据量,提高传输效率。
附图说明
37.一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
38.图1为本技术一实施例提供的多导睡眠监测仪的结构示意图;
39.图2为本技术一实施例提供的电子设备的结构框图;
40.图3为本技术一实施例提供的数据压缩方法的流程示意图;
41.图4为本技术另一实施例提供的数据压缩方法的流程示意图;
42.图5为图3所示方法中步骤s22的一子流程示意图;
43.图6为本技术一实施例提供的预测误差的示意图;
44.图7为本技术一实施例提供的初始数据序列和第一数据序列的结构示意图;
45.图8为图3所示方法中步骤s23的一子流程示意图;
46.图9为图8所示方法中步骤s231的一子流程示意图;
47.图10为图3所示方法中步骤s25的一子流程示意图。
具体实施方式
48.下面结合具体实施例对本技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本技术,但不以任何形式限制本技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进。这些都属于本技术的保护范围。
49.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
50.需要说明的是,如果不冲突,本技术实施例中的各个特征可以相互结合,均在本技术的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。此外,本文所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
51.除非另有定义,本说明书所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本说明书中在本技术的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本技术。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
52.此外,下面所描述的本技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
53.在一些实施例中,请参见图1,为本技术实施例提供的一种多导睡眠监测仪的结构示意图,该多导睡眠监测仪100包括主控装置10和多个数据采集装置20,多个数据采集装置20分别和主控装置10通信连接。多个数据采集装置20用于采集用户睡眠状态下的生理信号(数据),然后,分别将采集到的数据传输给主控装置10,主控装置10根据各数据确定用户的睡眠状态和健康状态。
54.其中,通信连接可以为有线连接(网线连接)或无线连接,无线连接包括蓝牙、wifi或4g、5g等。
55.其中,一数据采集装置20包一控制器和一传感器(图未示)。传感器可以根据需要采集的数据而设定,使得每个数据采集装置负责采集不同时变信号,例如,数据采集装置1#包括心率传感器,用于采集心率信号,数据采集装置2#包括温度传感器,用于采集温度信号。每个数据采集装置将预设时间内(例如0.5s或1s)采集到的数据发送给主控装置,使得主控装置获取各传感器的时变信号,以供后续分析或显示。在一些实施例中,数据采集装置20还包括存储器,该存储器用于缓存待传输的数据或存储一些程序性指令。在一些实施例中,程序性指令包括用于对采集到的数据进行处理的指令,或,用于控制传感器的指令,例如采集频率等。
56.其中,主控装置10包括控制器、存储器或显示屏(图未示),以提高运行速度以及通讯过程的流畅度。可以理解的是,主控装置10可以和多个数据采集装置20配对并进行通讯,从而,接收多个数据采集装置20采集到的数据,下发相关指令给多个数据采集装置20。显示屏用于显示采集到的时变数据或根据采集到的时变数据获取的分析结果。
57.在数据的传输过程中,数据采集装置20对传感器的各时变信号进行实时采集和存储,并将各时变信号传递给主控制装置10。
58.基于上述多导睡眠监测仪100的结构,为了减少传输的数据量,提高传输效率,在一些实施例中,在传输数据前,数据采集装置20对采集到的数据进行压缩处理,以减少传输的数据量。
59.本技术的其中一实施例提供了一种电子设备,电子设备可以为上述数据采集装置,也可以为其他需要传输数据的设备,例如雷达或智能摄像头等。请参阅图2,为本技术实
施例提供的一种电子设备的硬件结构示意图,具体的,所述电子设备200包括通信连接的至少一个处理器210和存储器220(图2中以总线连接、一个处理器为例)。
60.其中,处理器210用于提供计算和控制能力,以控制电子设备200执行相应任务,例如,控制所述电子设备200执行下述至少一个实施例提供的任意一种数据压缩方法。
61.可以理解的是,处理器210可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
62.存储器220作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态性计算机可执行程序以及模块,如本技术实施例中的数据压缩方法对应的程序指令/模块。处理器210通过运行存储在存储器220中的非暂态软件程序、指令以及模块,可以实现下述任一方法实施例中的数据压缩方法。具体地,存储器220可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。
63.以下,对本技术一些实施例提供的数据压缩方法进行详细说明,请参阅图3,该数据压缩方法s20包括但不限制于以下步骤:
64.s21:获取待压缩的初始数据序列,所述初始数据序列为预设时间段内采集到的时变数据。
65.s22:采用预设的第一编码算法,对所述初始数据序列进行编码,获得第一数据序列,其中,所述第一数据序列的长度小于所述初始数据序列的长度。
66.s23:采用预设的第二编码算法,对所述第一数据序列进行编码,获得第二数据序列。
67.s24:若所述第二数据序列的长度小于所述第一数据序列的长度,则确定目标数据序列包括所述第二数据序列和第二标识符,其中,所述目标数据序列用于经解码后获得所述初始数据序列,所述第二标识符用于表示所述第二编码算法的身份。
68.其中,初始数据序列可以为上述实施例中数据采集装置在预设时间内采集到的时变数据,时变数据为随着时间变化的数据,以时间轴排列的数据,例如可以为睡眠时间2小时内采集到的心率或温度等。在传输数据前,对该初始数据序列进行压缩,即在不丢失有用信息的前提下,缩减数据量,相当于减少初始数据所占用的字节数量,以减少存储空间,提高其传输、存储和处理效率。在一些实施例中,也可将需要传输的数据进行分组压缩,例如按1s或0.5s数据为一组进行压缩,不影响数据的实时传输。
69.首先,采用预设的第一编码算法,对初始数据序列进行编码,获得第一数据序列,使得第一数据序列的长度小于所述初始数据序列的长度。其中,长度是指数据序列所占用的字节数。在此步骤中,相当于对初始数据序列进行了一次压缩。其中,第一编码算法为一种数据压缩算法,在一些实施例中,第一编码算法可以为现有的霍夫曼压缩算法或lz77算法等。
70.然后,采用预设的第二编码算法对该第一数据序列进行编码获得第二数据序列,即进一步进行二次压缩。其中,第二编码算法为另一种数据压缩算法,在一些实施例中,第
二编码算法可以为现有的lempel

ziv markov chain algorithm算法(lzma)或多层感知机(multi

layer perceptron,mlp)等。
71.最后,将第二数据序列的长度与第一数据序列的长度进行比较,若第二数据序列的长度小于第一数据序列的长度,即第二数据序列所占的字节数少于第一数据序列所占的字节数,则确定目标数据序列(即最终压缩后的数据)包括第二数据序列和第二标识符,从而,以目标数据序列进行传输,能够有效减少传输量,其中,第二标识符用于表示第二编码算法的身份,便于对目标数据序列进行解压。在一些实施例中,第二标识符可以为特定的符号、数字或字母。
72.在此实施例中,首先采用第一编码算法对初始数据序列进行一次压缩,然后采用第二编码算法进行二次压缩,使得初始数据序列能够得到充分压缩,尽可能减少数据量,并且,还通过将二次压缩后的第二数据序列的长度与一次压缩后的第一数据序列的长度进行比较,确保二次压缩有效,因此,能够精准控制压缩后的数据量相对于压缩前的数据量有效减少,能够减少传输的数据量,提高传输效率。
73.在一些实施例中,请参阅图4,方法s20还包括:
74.s25:若所述第二数据序列的长度大于或等于所述第一数据序列的长度,则采用预设的第三编码算法,对所述第一数据序列进行编码,获得第三数据序列。
75.s26:若所述第三数据序列的长度小于所述第一数据序列的长度,则确定所述目标数据序列包括所述第三数据序列和第三标识符,其中,所述第三标识符用于表示所述第三编码算法的身份。
76.若经二次压缩后的第二数据序列的长度大于或等于第一数据序列的长度,说明二次压缩失效,在此实施例中,采用预设的第三编码算法,对第一数据序列进行编码,获得第三数据序列。即,使用另外一种编码算法进行二次压缩。其中,第三编码算法为另一种数据压缩算法,在一些实施例中,第三编码算法可以为现有的lzr算法或deflate算法。
77.然后,将第三数据序列的长度与第一数据序列的长度进行比较,若第三数据序列的长度小于第一数据序列的长度,即第三数据序列所占的字节数少于第一数据序列所占的字节数,则确定目标数据序列包括第三数据序列和第三标识符。其中,第三标识符用于表示第三编码算法的身份,便于对目标数据序列进行解压。在一些实施例中,第三标识符可以为特定的符号、数字或字母。
78.在此实施例中,当采用第二编码算法的二次压缩失效后,采用另外的第三编码算法对第一数据序列进行二次压缩,使得压缩充分,尽可能减少数据量,并且,还通过将采用第三编码算法进行二次压缩后的第三数据序列的长度与一次压缩后的第一数据序列的长度进行比较,确保二次压缩有效,因此,有效避免二次压缩无效,能够精准控制压缩后的数据量相对于压缩前的数据量有效减少,能够减少传输的数据量,提高传输效率。
79.在一些实施例中,请参阅图4,方法s20还包括:
80.s27:若所述第三数据序列的长度大于或等于所述第一数据序列的长度,则确定所述目标数据序列包括所述第一数据序列和第一标识符,所述第一标识符用于表示所述第一编码算法的身份。
81.若经采用第三编码算法压缩后的第三数据序列的长度大于或等于第一数据序列的长度,则说明采用第三编码算法进行的二次压缩失效,在此实施例中,将第一编码算法压
缩后得到的第一数据序列和第一标识符直接作为目标数据序列,即不再进行二次压缩。其中,第一标识符用于表示第一编码算法的身份,便于后续对目标数据序列进行解压。在一些实施例后则能够,第一标识符可以为特定的符号、数字或字母。
82.在此实施例中,当采用第三编码算法进行的二次压缩失效时,采用一次压缩后的结果作为最终的压缩结果,能够避免最终的压缩结果因二次压缩而导致数据量增大。
83.在一些实施例中,请参阅图5,步骤s22具体包括:
84.s221:根据所述初始数据序列中的第i个数据的前两个数据,确定所述第i个数据对应的预测数据,其中,2<i≤n,所述n为所述初始数据序列中数据的个数。
85.s222:确定所述第i个数据对应的预测误差为所述第i个数据和所述第i个数据对应的预测数据之间的差。
86.s223:确定第一数据序列包括所述初始数据序列中的前两个数据和(n

2)个预测误差。
87.基于2<i≤n,n为初始数据序列中数据的个数,且在该初始数据序列中n个数据按时域顺序排列,该初始数据序列中的第i个数据为该初始数据序列中除头两个数据(即第1个数据和第2个数据)外的任一一数据。
88.也即,对于该初始数据序列中除头两个数据外的任一一数据,均采用步骤s221

步骤s223中的方法确定对应的预测误差。在此,以第i个数据为例对步骤s221

步骤s223的具体过程进行示例性说明。
89.首先,根据第i个数据的前两个数据确定第i个数据对应的预测数据,即根据第(i

1)个数据和第(i

2)个数据确定第i个数据对应的预测数据。
90.可以理解的是,初始数据序列在时域上是连续的,从而,相邻的数据波动较小,即第(i

2)个数据、第(i

1)个数据和第i个数据两两之间的差值较小,因此,可以根据前两个数据预测下一个数据,即根据第(i

2)个数据和第(i

1)个数据预测第i个数据,使得,第i个数据与第(i

2)个数据和第(i

1)个数据建立联系。
91.在一些实施例中,步骤s221具体包括:确定所述第i个数据对应的预测数据为第(i

1)个数据的2倍减去第(i

2)个数据。
92.具体的,采用以下公式,计算第i个数据yi对应的预测数据yi’;
93.y
i
'

y
(i

1)
=y
(i

1)

y
(i

2)

94.yi'=2*y
(i

1)

y
(i

2)

95.在此实施中,如图6所示,通过第(i

2)个数据和第(i

1)个数据建立一个与时间相关的一阶函数,然后,根据该一阶函数能够准确预测出第i个数据对应的预测数据yi’。
96.然后,将第i个数据yi和第i个数据对应的预测数据yi’之间的差作为对应的预测误差。即预测误差xi=yi
’‑
yi。
97.可以理解的是,初始数据序列中,当2<i≤n时的每一数据均对应有一预测误差,得到(n

2)个预测误差。
98.最后,如图7所示,将初始数据序列中的前两个数据(即第1个数据和第2个数据)和(n

2)个预测误差按初始数据序列中的时序进行排列,得到该第一数据序列。在进行解码时,由预测误差xi即可反推出实际的yi,从而,不会丢失原有数据信息。
99.可以理解的是,由于第一数据序列中的任一预测误差xi相对于原始的第i个数据
yi较小,因此,xi所占的字节数也会相应较少,从而,使得第一数据序列的长度小于初始数据序列的长度,即,使得初始数据序列得以有效的压缩。
100.可以理解的是,预测数据yi’越靠近初始数据yi,越准确,则对应的预测误差xi也越小,所占字节数也越小。为了使得预测数据yi’更加准确,预测误差xi越小,在一些实施例中,也可以根据第(i

2)个数据和第(i

1)个数据建立更加准确的高阶函数,采用高阶函数预测yi’,能够得到更加准确的yi’和更小的预测误差xi。
101.在此实施例中,通过上述方式,使得第一数据序列的长度小于初始数据序列的长度,即得以有效压缩,不会丢失原有数据信息,并且算法简单,运行速度快、效率高,进一步有助于提高数据的传输效率。
102.为了进一步二次压缩,在一些实施例中,请参阅图8,步骤s23具体包括:
103.s231:对所述第i个数据对应的预测误差进行编码,获得所述第i数据对应的第一编码数据。
104.s232:确定所述第二数据序列包括所述初始数据序列中的前两个数据和(n

2)个第一编码数据。
105.在此实施例中,对第一数据序列中的(n

2)个预测误差进行编码,以进一步减少各预测误差所占的字节数,获得相应的第一编码数据。即第i数据对应的第一编码数据所占的字节数小于其对应的预测数据所占的字节数。
106.然后,将初始数据序列中的前两个数据和(n

2)个第一编码数据按初始数据序列中的时序进行排列,得到第二数据序列。可以理解的是,此实施例中的编码用于进一步减小预测误差,在一些实施中,可将预测误差减去设定的数值,或除以设定的数值,得到对应的第一编码数据。
107.在此实施例中,通过对第一数据序列中的(n

2)个预测误差进行编码,以进一步减少各预测误差所占的字节数,获得相应的第一编码数据,使得包括初始数据序列中的前两个数据和(n

2)个第一编码数据的第二数据序列长度进一步减小,实现二次压缩。
108.在一些实施例中,请参阅图9,步骤s231具体包括:
109.s2311:根据所述(n

2)个预测误差,确定所述初始数据序列对应的参数值。
110.s2312:将所述第i个数据对应的预测误差与所述参数值进行取商运算,获得商值,并对所述商值进行一进制编码,获得一进制编码结果。
111.s2313:将所述第i个数据对应的预测误差与所述参数值进行取余运算,获得余值,并对所述余值进行二进制编码,获得二进制编码结果。
112.s2314:根据所述第i个数据对应的预测误差的正负数属性,确定第一符号位。
113.s2315:确定所述i数据对应的第一编码数据包括所述第一符号位、所述二进制编码结果和所述一进制编码结果。
114.在此实施例中,首先,根据(n

2)个预测误差xi,3≤i≤n,确定该初始数据序列对应的参数值m,参数值m用于对各预测误差xi进行编码处理,以进一步减小各预测误差xi。
115.在一些实施例中,参数值m按如下公式确定:
116.m=2
k
117.118.其中,α为权重系数,在一些实施例中,α为0.7。
119.然后,将第i个数据对应的预测误差xi与该参数值进行商运算,获得商值qi(qi=xi/m),并对该商值qi进行一进制编码,获得一进制编码结果ui。
120.可以理解的是,一进制编码可以用0表示,也可以用1表示,让后通过分隔符区分即可。以用0编码为例,qi对应的一进制编码结果ui为qi个0和一个用于区分的1。一进制编码结果如下表1所示:
121.表1
122.qi一进制编码结果(输出bit)01101200130001......n00......001(n个0)
123.然后,将第i个数据对应的预测误差xi与该参数值进行取余运算,获得余值ri,余值ri=abs(xi)%m。并且对余值ri进行二进制编码,得到二进制编码结果bi。二进制编码结果如下表2所示:
124.表2
125.ri二进制编码结果(输出bit)0000100120103011......7111
126.根据第i个数据对应的预测误差xi的正负数属性,确定第一符号位,可以理解的是,该第一符号位表示第i个数据的正负数属性。例如当xi为负数时,第一符号位fi为1,当xi为正数时,第一符号位fi为0。
127.最后,将第一符号位fi、二进制编码结果bi和一进制编码结果ui组合成第一编码数据ci。可以理解的是,第一符号位fi、二进制编码结果bi和一进制编码结果ui的顺序可以任意设置,只需要压缩和解压时顺序保持一致即可。例如,第一编码数据ci=(fi,bi,ui)。
128.以下以预测误差xi=10,k=3为例进行示例性说明。
129.由k=3可得:
130.参数值m=23=8;
131.商qi=xi/m=10/8=1;对qi进行一进制编码,得到一进制编码结果ui=01。
132.余ri=abs(xi)%m=abs(10)%8=2;对ri进行二进制编码,得到二进制编码结果bi=010。
133.第一符号位fi=0,其中,0代表正数。
134.合并后得到的第一编码数据ci=(fi,bi,ui)=001001。
135.由此可见,预测误差xi=10原来占用1个字节(1byte),经压缩后,成一个6比特的数据ci。
136.可以理解的是,该参数值k也需要和第二数据序列一起存储,即相当于,在此实施例中,目标数据序列包括该参数值k、第二数据序列和第二标识符,其中,参数值k供解码时使用。
137.在此实施例中,通过上述方式能够有效对第一数据序列中的(n

2)个预测误差进行编码,以进一步减少各预测误差所占的字节数,获得相应的第一编码数据,使得包括初始数据序列中的前两个数据和(n

2)个第一编码数据的第二数据序列长度进一步减小,实现二次压缩。
138.在一些实施例中,用于表示第二编码算法的身份的第二标识符可以为该参数值k。基于用于表示第一编码算法的身份的第一标识符可以为特定的符号、数字或字母,用于表示第三编码算法的身份的第三标识符可以为特定的符号、数字或字母,例如,第一标识符为0,第三标识符为1,而由上述公式计算得到的参数值k>1。因此,将第二标识符设置为该参数值k,一方面,能够区别于第一标识符和第三标识符,即能够表征第二编码算法的身份,另一方面,参数值k也需要和第二数据序列一起存储,即相当于目标数据序列包括该参数值k,以供解码时使用,将参数值和第二标识符采用同一数据,能够减少目标数据序列的长度。
139.在一些实施例中,请参阅图10,步骤s25具体包括:
140.s251:去除所述第i个数据对应的预测误差中的符号字节,以获取无符号字节,所述符号字节用于表示所述预测误差的正负属性。
141.s252:所述第i个数据对应的第二编码数据由所述第二编码数据的字节长度、第二符号位和所述无符号字节拼接而成,所述第二符号位用于表示所述第i个数据对应的预测误差的正负属性。
142.s253:所述第三数据序列包括所述初始数据序列中的前两个数据和(n

2)个第二编码数据。
143.可以理解的是,预测误差xi是一个较小的值,因此,预测误差xi的头部有一些用于表示其正负属性的符号字节。例如,若预测误差xi为一个32位的整数,例如100,其经第三编码算法压缩前的预测误差xi为:00000000 00000000 00000000 01100100,即一个4字节的数据,其中,前3个字节均表示正负属性,占用过多字节,造成字节浪费,最后一个为无符号字节“01100100”。可以理解的是,该无符号字节“01100100”表征预测误差xi的数值“100”。
144.为了减少预测误差xi的长度,去除预测误差xi中的符号字节,获取无符号字节,然后,将预测误差的正负属性采用第二符号位表示,第二符号位相对于原来的多个符号字节,能够有效缩短数据长度。因此,将第二编码数据的字节长度、第二符号位和无符号字节拼接,形成该预测误差xi对应的第二编码数据,能够有效缩短数据长度。
145.具体的,对于上述经第三编码算法压缩前的预测误差xi为:00000000 00000000 00000000 01100100,压缩后得到的第二编码数据为:01000000 01100100,其中,第一个字节的前两位“01”代表该第二编码数据总共占用2个字节,第一个字节的剩余位表示符号(正负属性),第二个字节仍为原来的无符号字节。相对于,压缩前的预测误差xi,可以节省2个字节。
146.可以理解的是,当预测误差xi的数值所占的比特数小于或等于5时,例如,预测误
差xi(十进制数值3)对应的无符号字节为“00000011”,将无符号字节和第二编码数据的长度(1,对应1个字节)、第二符号位(0,正数)拼接后得到的第二编码数据为“10000011”。这里,为了描述方便,将无符号字节中除数值所占的比特外的比特称为填充比特,例如“00000011”中前6个比特为填充比特。
147.可以理解的是,在此实施例中,尽可能去除符号字节,在拼接无符号字节和第二编码数据的长度、第二符号位时,若无符号字节中的填充比特能够容纳第二编码数据的长度和至少一个用于表示符号的比特,则压缩后的第二编码数据为一个字节,若无符号字节中的填充比特不能够容纳第二编码数据的长度和至少一个用于表示符号的比特,则在无符号字节前增加一个字节,增加的这个字节包括第二编码数据的长度和第二符号位。
148.按上述方式对(n

2)个预测误差进行编码,得到(n

2)个第二编码数据。将初始数据序列中的前两个数据和(n

2)个第二编码数据按初始数据序列中的时序进行排列,得到第三数据序列。
149.综上所述,本技术实施例提供的数据压缩方法,首先,采用预设的第一编码算法对待压缩的初始数据序列进行编码,获得第一数据序列,使得第一数据序列的长度相对与初始数据序列的长度得以减小,然后,采用预设的第二编码算法对该第一数据序列进行编码获得第二数据序列,即进一步进行二次压缩,最后,将第二数据序列的长度与第一数据序列的长度进行比较,若第二数据序列的长度小于第一数据序列的长度,则确定目标数据序列(即最终压缩后的数据)包括第二数据序列和第二标识符,从而,以目标数据序列进行传输,能够有效减少传输量,其中,第二标识符用于表示第二编码算法的身份,便于对目标数据序列进行解压。也即,该方法首先采用第一编码算法对初始数据序列进行一次压缩,然后采用第二编码算法进行二次压缩,使得初始数据序列能够得到充分压缩,尽可能减少数据量,并且,还通过将二次压缩后的第二数据序列的长度与一次压缩后的第一数据序列的长度进行比较,确保二次压缩有效,因此,能够精准控制压缩后的数据量相对于压缩前的数据量有效减少,能够减少传输的数据量,提高传输效率。例如,对于整晚的psg数据,压缩后的数据量只有原来的30%左右。
150.本技术另一实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,该程序指令当被处理器执行时使处理器执行如上述任一实施例中的数据压缩方法。
151.需要说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
152.通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read

only memory,rom)或随机存储记忆体(random access memory,ram)等。
153.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;在本
申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本技术的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

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

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

相关文献