数据压缩方法和装置与流程

文档序号:16369248发布日期:2018-12-22 08:36阅读:202来源:国知局
数据压缩方法和装置与流程

本申请涉及数据处理技术领域,尤其涉及一种数据压缩方法和装置。

背景技术

随着信息技术的快速发展,数据量不断的增加,对数据的存储效率的需求也不断提高;为了节约存储成本,尽可能在有限的存储空间内存放较多的数据,通常会将数据压缩后进行存储,以减小数据占用的空间。

目前,常见的压缩算法包括:游程编码(runlengthencoding,rle)、霍夫曼压缩(huffmancoding)、lzw压缩(lempelzivwelch,lzw)。游程编码适用于比特流中重复比特较多情形,对于含有大量短游程数据,只有在游程长度大于二进制表示数据所需长度时,才能节省空间。霍夫曼压缩算法使用二进制描述来替换每一个字符,其长度由字符出现的频率决定,频率出现越高的字符,编码长度越短。但是,霍夫曼压缩算法解码时,需要字符描述表和霍夫曼树,当数据量较小、数据重复率低时,该算法效果较差。lzw压缩算法能有效的利用字符出现频率冗余度进行压缩,且根据压缩数据内容,自适应地生成字典,但是通常不能有效地利用位置冗余度。

综上,现有上述压缩算法较为复杂,不适用于对数据量较小的数据进行无损压缩。



技术实现要素:

本发明提供一种数据压缩方法和装置,以实现对数据量较小的数据的无损压缩处理,压缩后数据长度明显减少,有效缩短压缩数据的传输时间。

第一方面,本发明提供一种数据压缩方法,包括:

接收传感器在预设周期内上传的数据帧,其中,所述数据帧包括至少1行数据;

对所述数据帧的每行数据进行同比特压缩处理或者分段压缩处理,得到压缩数据;

将所述压缩数据发送给外部终端。

可选地,对所述数据帧的每行数据进行同比特压缩处理或者分段压缩处理,包括:

将所述数据帧的第一行数据作为基准行,对所述基准行进行同比特压缩处理或者分段压缩处理;

当数据帧包括2行及以上数据时;

从第二行数据开始,以前一行数据作为相邻的后一数据行的基准行进行差值运算,得到差值数据行,对所述差值数据行进行同比特压缩处理或者分段压缩处理。

可选地,对所述基准行进行同比特压缩处理,包括:

假设基准行包括n个数据,分别记为a0、a1、a2、…、an,将a0作为基础数据,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,其中i=1,2,3…,n;

确定差值运算后的基准行中除基础数据以外的数据中的最大值,按照所述最大值设置压缩比特位数;

按照所述压缩比特位数,对基准行中除基础数据以外的数据进行同比特压缩处理,得到基准行对应的压缩数据。

可选地,对所述基准行进行分段压缩处理,包括:

假设基准行包括n个数据,分别记为a0、a1、a2、…、an,将a0作为基础数据,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,其中i=1,2,3…,n;

根据差值运算后的基准行中除基础数据以外的数据的大小,按照预设规则将差值运算后的基准行划分为2个或者2个以上的区段;

分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,得到基准行对应的压缩数据;其中,相邻两个区段的压缩比特位数不同。

可选地,从第二行数据开始,以前一行数据作为相邻的后一数据行的基准行进行差值运算,得到差值数据行,包括:

假设当前行数据为第j+1行数据,所述第j+1行数据包括n个数据,分别记为:aj+1,0、aj+1,1、aj+1,2、…、aj+1,n;当前行数据的前一行数据为第j行数据,所述第j行数据包括n个数据,分别记为:aj,0、aj,1、aj,2、…、aj,n;其中j=1,2,3…,n-1;n为所述数据帧的总行数;

将第j+1行数据中的值减去第j行数据中对应的值,得到差值数据行,所述差值数据行记为:aj+1,0-aj,0、aj+1,1-aj,1、aj+1,2-aj,2、…、aj+1,n-aj,n。

可选地,对所述差值数据行进行同比特压缩处理,包括:

确定所述差值数据行的数据中的最大值,根据所述最大值设置压缩比特位数;

按照所述压缩比特位数,对所述差值数据行进行同比特压缩处理,得到所述差值数据行对应的压缩数据。

可选地,对所述差值数据行进行分段压缩处理,包括:

按照预设规则将所述差值数据行划分为2个或者2个以上的区段;

分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,得到所述差值数据行对应的压缩数据;其中,相邻两个区段的压缩比特位数不同。

第二方面,本发明提供一种数据压缩装置,包括:

接收模块,用于接收传感器在预设周期内上传的数据帧,其中,所述数据帧包括至少1行数据;

压缩模块,用于对所述数据帧的每行数据进行同比特压缩处理或者分段压缩处理,得到压缩数据;

发送模块,用于将所述压缩数据发送给外部终端。

可选地,所述压缩模块,具体用于:

将所述数据帧的第一行数据作为基准行,对所述基准行进行同比特压缩处理或者分段压缩处理;

当数据帧包括2行及以上数据时;

从第二行数据开始,以前一行数据作为相邻的后一数据行的基准行进行差值运算,得到差值数据行,对所述差值数据行进行同比特压缩处理或者分段压缩处理。

可选地,对所述基准行进行同比特压缩处理,包括:

假设基准行包括n个数据,分别记为a0、a1、a2、…、an,将a0作为基础数据,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,其中i=1,2,3…,n;

确定差值运算后的基准行中除基础数据以外的数据中的最大值,按照所述最大值设置压缩比特位数;

按照所述压缩比特位数,对基准行中除基础数据以外的数据进行同比特压缩处理,得到基准行对应的压缩数据。

可选地,对所述基准行进行分段压缩处理,包括:

假设基准行包括n个数据,分别记为a0、a1、a2、…、an,将a0作为基础数据,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,其中i=1,2,3…,n;

根据差值运算后的基准行中除基础数据以外的数据的大小,按照预设规则将差值运算后的基准行划分为2个或者2个以上的区段;

分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,得到基准行对应的压缩数据;其中,相邻两个区段的压缩比特位数不同。

可选地,从第二行数据开始,以前一行数据作为相邻的后一数据行的基准行进行差值运算,得到差值数据行,包括:

假设当前行数据为第j+1行数据,所述第j+1行数据包括n个数据,分别记为:aj+1,0、aj+1,1、aj+1,2、…、aj+1,n;当前行数据的前一行数据为第j行数据,所述第j行数据包括n个数据,分别记为:aj,0、aj,1、aj,2、…、aj,n;其中j=1,2,3…,n-1;n为所述数据帧的总行数;

将第j+1行数据中的值减去第j行数据中对应的值,得到差值数据行,所述差值数据行记为:aj+1,0-aj,0、aj+1,1-aj,1、aj+1,2-aj,2、…、aj+1,n-aj,n。

可选地,对所述差值数据行进行同比特压缩处理,包括:

确定所述差值数据行的数据中的最大值,根据所述最大值设置压缩比特位数;

按照所述压缩比特位数,对所述差值数据行进行同比特压缩处理,得到所述差值数据行对应的压缩数据。

可选地,对所述差值数据行进行分段压缩处理,包括:

按照预设规则将所述差值数据行划分为2个或者2个以上的区段;

分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,得到所述差值数据行对应的压缩数据;其中,相邻两个区段的压缩比特位数不同。

第三方面,本发明提供一种数据压缩设备,包括:

存储器,用于存储程序;

处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行第一方面中任一所述的方法。

第四方面,本发明提供一种计算机可读存储介质,存储有指令,当其在计算机上运行时,使得计算机执行第一方面中任一所述的方法。

本发明提供的数据压缩方法和装置,通过接收传感器在预设周期内上传的数据帧,其中,所述数据帧包括至少1行数据;对所述数据帧的每行数据进行同比特压缩处理或者分段压缩处理,得到压缩数据;将所述压缩数据发送给外部终端。从而实现对数据量较小的数据的无损压缩处理,压缩后数据长度明显减少,有效缩短压缩数据的传输时间。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一电子设备的结构示意图;

图2为本发明实施例一提供的数据压缩方法的方法流程图;

图3为本发明实施例一中步骤s102的方法流程图;

图4为采用同比特压缩处理方式压缩基准行的结构示意图;

图5为采用分段压缩处理方式压缩基准行的结构示意图;

图6为采用分段压缩处理方式压缩差值数据行的结构示意图;

图7为本发明实施例二提供的数据压缩装置的结构示意图;

图8为本发明实施例三提供的数据压缩设备的结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。

1)传感器(sensor),是指感受规定的被测量的各种量并按一定规律将其转换为有用信号的器件或装置。常见的传感器有:光电式传感器、压电传感器、压阻式传感器、电磁式传感器、热电式传感器、光导纤维传感器等。

2)指纹传感器(又称指纹sensor),是一种传感装置,属于光学指纹传感器半导体指纹传感器一种,是实现指纹自动采集的关键器件。

3)微控制单元(microcontrollerunit,mcu),又称单片微型计算机(singlechipmicrocomputer)或者单片机,是把中央处理器(centralprocessunit,cpu)的频率与规格做适当缩减,并将内存(memory)、计数器(timer)、通用串行总线(universalserialbus,usb)、模拟数字转换(analogtodigitalconverte,a/d)、通用异步收发传输器(universalasynchronousreceiver/transmitter)、可编程逻辑控制器(programmablelogiccontroller,plc)等周边接口,甚至液晶显示器(liquidcrystaldisplay,lcd)的驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。

当传感器采集的数据量增加时,需要传输给处理器(主机host)的数据量也会相应增加,此时若不对传感器采集的数据进行压缩处理,则会造成数据传输延时,影响整个系统的工作效率。由于传感器侧配备的微控制单元mcu的处理能力有限,而现有的压缩算法较为复杂,因此不适合在mcu中对数据量较小的数据进行无损压缩处理。

本发明提供的数据压缩方法,旨在解决现有技术中存在的问题。

下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。

本申请实施例提供的数据压缩方法和系统可以适用在具有传感器的电子设备,例如智能手机、平板电脑、笔记本电脑以及其他移动终端或者电子设备,具体地,上述传感器可以包括指纹传感器,所述指纹传感器可以是传统设置在电子设备正面或者背面的电容式指纹传感器,也可以设置在电子设备的显示屏下方的屏下指纹传感器,比如光学指纹传感器或者超声波指纹传感器,本申请对此并不作特殊限定。当然,本申请提供的数据压缩方法和系统也可以适用于其他数据的压缩,指纹传感器采集数据的压缩仅是一种具体实施例,不应当认为是本申请应用场景的限制。

图1为本发明实施例提供的一电子设备的结构示意图,如图1所示,所述电子设备可以采用光学指纹传感器进行用户指纹采集和验证,所述光学指纹传感器可以设置在显示屏下方的局部区域或者全部区域,从而形成屏下(under-display)光学指纹识别系统。该电子设备可以应用本发明实施例提供的数据压缩方法,具体地,所述电子设备100包括显示屏120和光学指纹传感器130,其中所述光学指纹传感器130设置在所述显示屏120下方的局部区域。所述光学指纹传感器130包括具有多个光学感应单元的感应阵列,所述感应阵列所在区域为所述光学指纹传感器130的指纹检测区域103。

其中,所述光学指纹传感器130可以贴附到所述显示屏120的下表面或者通过其他方式固定在所述显示屏120的下方。作为一种优选的实施方案,所述光学指纹传感器130可以通过安装架在所述显示屏120下方进行安装固定,比如安装到所述电子设备100的中框,并通过中框固定到所述显示屏120的下方,从而与所述显示屏120之间具有一定间隙,即不与所述显示屏120的下表面接触,因此有利于在所述显示屏120或者光学指纹传感器130损坏时可以进行单独对损坏部件进行更换或者维修。

不过应当理解,在其他替代实现方案中,所述指纹检测区域也可以通过光学设计扩展到所述显示区域102的其他位置甚至整个显示屏120,而并不局限在所述光学指纹传感器130所在的位置。或者,所述光学指纹传感器130可以设置在所述电子设备100的边缘区域,即所述光学指纹传感器130并不位于或者只是部分位于所述显示区域102之内,但通过光路设计使得所述光学指纹传感器130的指纹检测区域103仍至少覆盖所述显示屏120的部分显示区域102。

在如图1所示电子设备100中,所述指纹检测区域103位于所述显示屏120的显示区域102之中,因此,用户在需要对所述电子设备进行解锁或者其他指纹验证的时候,只需要将手指按压在位于所述显示屏120的指纹检测区域103,便可以实现指纹输入。由于指纹检测和指纹识别可以在屏内实现,因此采用上述结构的终端设备100无需其正面专门预留空间来设置指纹按键(比如home键),从而可以采用全面屏方案,即所述显示屏120的显示区域102可以基本扩展到整个电子设备100的正面。

作为一种优选的实施例中,所述显示屏120可以采用具有自发光显示单元的显示屏,比如有机发光二极管(oled)显示屏或者微型发光二极管(micro-led)显示屏。以采用oled显示屏为例,所述光学指纹传感器130可以利用所述显示屏120位于所述指纹检测区域103的显示单元(即oled光源)来作为光学指纹检测的激励光源;不过应当理解,所述光学指纹传感器130也可以设置额外的激励光源(比如红外光源)来进行指纹检测和识别。并且,所述光学指纹传感器130的感应阵列具体为光探测器(photodetector,pd)阵列,其包括多个呈阵列式分布的光探测器,所述光探测器可以作为如上所述的光学感应单元。当手指按压在所述指纹检测区域103时,所述指纹检测区域103的显示单元发出的光线在手指表面的指纹发生反射并形成反射光,其中所述手指指纹的脊和谷的反射光是不同的,反射光从所述显示屏120并被所述光探测器阵列所接收并转换为相应的电信号,即指纹检测信号。基于所述指纹检测信号便可以得到用户手指的指纹图像,以进行指纹匹配验证,从而在所述电子设备100实现光学指纹识别功能。

应当理解的是,在具体实现上,所述电子设备100还包括透明保护盖板110,所述盖板110可以为玻璃盖板或者蓝宝石盖板,其位于所述显示屏120的上方并覆盖所述终端设备100的正面。由于所述盖板110覆盖在所述显示屏120的表面,因此本申请实施例中,所谓的手指按压在所述显示屏120实际上可以是指按压在所述显示屏120上方的盖板110,或者当用户在所述盖板110表面贴附有保护层时,所谓的手指按压在所述显示屏120实际上可以是指按压所述盖板110表面的保护层。

作为一种可选的实现方式,如图1所示,所述光学指纹传感器130包括光检测部分134和光学组件132,其中,所述光检测部分134可以包括所述感应阵列以及与所述感应阵列电性连接的读取电路及其他辅助电路,其可以在通过半导体工艺制作在一个芯片(die)。所述光学组件132可以设置在所述光检测部分134的感应阵列的上方,其可以具体包括导光部件、滤光层(filter)以及其他光学元件。所述导光部件主要用于从手指表面反射回来的反射光导引至所述感应阵列进行光学检测,比如,其可以采用透镜(lens)来将反射光汇聚在所述光检测部分134的感应阵列或者采用准直器(collimator)来限制所述感应阵列的各个光学感应单元只接收到来自其上方的手指部分的反射光。所述滤光层可以用于滤除穿透手指的环境光以避免所述光检测部分134受到外部强光干扰,比如,所述滤光层可以为红外滤光层,用来滤除太阳光或者其他环境光中穿透手指的进入所述光检测部分134的波段。另外,所述光学指纹传感器130下方还可以设置有电路板150,比如软性电路板,所述光学指纹传感器130可以通过所述电路板150与所述电子设备100的其他功能模块进行电性连接和信号传输。

在其他替代实现方式中,所述显示屏120也可以采用非自发光的显示屏,比如采用背光的液晶显示屏;在这种情况下,所述光学指纹传感器130便无法采用所述显示屏120的显示单元作为激励光源,因此可以在所述光学指纹传感器130内部集成激励光源或者在其外部设置激励光源来实现光学指纹检测,其检测原理与上面描述内容是一致的。

所述光学指纹传感器130获取到指纹图像之后,需要把所述指纹图像传输给所述电子设备100的处理单元,比如中央处理器(cpu)或者应用处理器(ap)进行指纹匹配验证。因此,通常需要在指纹模组通过微处理器(mcu)将所述光学指纹传感器130获取的指纹图像进行数据压缩,然后再提供给电子设备100的处理单元进行指纹匹配识别并根据匹配识别结果进行相应的应用操作,比如设备解锁、移动支付、系统设置或者应用安装/删除等。

图2为本发明实施例一提供的数据压缩方法的方法流程图,如图2所示,本实施例中的方法可以包括:

s101、接收传感器在预设周期内上传的数据帧,其中,所述数据帧包括至少1行数据。

实际应用中,本实施例的执行主体可以为微控制单元mcu、单片机、微型处理器等具备数据处理能力的器件。本实施例中以mcu为例进行详细说明,但不限定执行本实施例中方法的具体器件类型。

本实施例中,mcu可以与传感器集成为一个模块,也可以是与传感器电连接的独立模块。首先mcu接收传感器在预设周期(一般是一个采集周期)内上传的数据帧(可以是一帧也可以是多帧,多帧的数据处理方式与一帧的数据处理方式类似);数据帧中包括至少1行数据。需要说明的是,本实施例中默认数据帧的数据形式为按行存储,并且对每行数据中所包含的数据数量不予限定。

s102、对所述数据帧的每行数据进行同比特压缩处理或者分段压缩处理,得到压缩数据。

本实施例中,同比特压缩处理是指设置每行数据中每个数据的压缩比特数相同,并按照该压缩比特数对每行数据进行压缩处理。分段压缩处理是指将行数据划分为2个或者2个以上的区段;分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,且相邻两个区段的压缩比特位数不同。

图3为本发明实施例一中步骤s102的方法流程图,如图3所示,在一种可选的实施方式中,步骤s102可以包括:

s1021、将所述数据帧的第一行数据作为基准行,对所述基准行进行同比特压缩处理或者分段压缩处理。

本实施例中,假设基准行包括n个数据,分别记为a0、a1、a2、…、an,将a0作为基础数据,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,其中i=1,2,3…,n。然后确定差值运算后的基准行中除基础数据以外的数据中的最大值,按照所述最大值设置压缩比特位数;按照所述压缩比特位数,对基准行中除基础数据以外的数据进行同比特压缩处理,得到基准行对应的压缩数据。

具体地,图4为采用同比特压缩处理方式压缩基准行的结构示意图,如图4所示,基准行包括n个数据,分别记为a0、a1、a2、…、an,保留基础数据a0不变,用ai减去ai-1的值替换基准行中的数据ai,其中i=1,2,3…,n;得到差值运算后的基准行,分别记为a0、a2-a1、a3-a2、…、an-an-1。设置压缩比特位数为m,即用m个比特来压缩差值运算后的基准行中除基础数据以外的数据。如图4所示,(a2-a1)m_bit表示对数据a2-a1采用m个比特压缩后的值,其他数值依次类推,不再重复解释。本实施例中,不对基础数据a0进行压缩,假设基础数据a0的实际比特位数为12,则用2byte存储。采用同比特压缩处理方式压缩后的数据压缩信息存储在head(数据头)中,headm表示用m个比特来压缩数据,headm中包含有数据最小值、压缩比特数,以及数据总体长度信息。m的值根据差值运算后的基准行中最大的数据来确定。

本实施例中,假设基准行包括n个数据,分别记为a0、a1、a2、…、an,将a0作为基础数据,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,其中i=1,2,3…,n。然后根据差值运算后的基准行中除基础数据以外的数据的大小,按照预设规则将差值运算后的基准行划分为2个或者2个以上的区段;分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,得到基准行对应的压缩数据;其中,相邻两个区段的压缩比特位数不同。

具体地,图5为采用分段压缩处理方式压缩基准行的结构示意图,如图5所示,基准行包括n个数据,分别记为a0、a1、a2、…、an,保留基础数据a0不变,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,分别记为a0、a2-a1、a3-a2、…、an-an-1。根据差值运算后的基准行中除基础数据以外的数据的大小,按照预设规则将差值运算后的基准行划分为2个或者2个以上的区段。参见图5,第一个区段采用m个比特来压缩数据,第二个区段采用p个比特来压缩数据,p和m的值不相等。如图5所示,(ax+1-ax)p_bit表示对数据ax+1-ax采用p个比特压缩后的值,其他数值依次类推,不再重复解释。

可选地,按照预设规则将差值运算后的基准行划分为2个或者2个以上的区段,需要尽可能减少压缩后的byte数。假设同比特压缩处理方式设置的压缩比特位数为7,而分段压缩处理方式中,第一区段的压缩比特位数为7,第二区段的压缩比特位数为3,其中,第二区段中有4个数据(对应区段长度为4),那么采用分段压缩处理方式可以节约的比特数为4*(7-3)=16,对应的节约的byte数为2(节约的比特数除以8后取整)。

具体地,在设置分段按照预设规则将差值运算后的基准行进行区段划分的时,可以参考如下的参考公式:节约的byte数>数据头的长度+区段压缩后的长度,来设置区段数以及每个区段的压缩比特位数。

本实施例中,不对基础数据a0进行压缩,假设基础数据a0的实际比特位数为12,则用2byte存储。采用同比特压缩处理方式压缩后的数据压缩信息存储在head(数据头)中,headm表示用m个比特来压缩数据,headm中包含有数据最小值、压缩比特数,以及数据总体长度信息。headp表示用p个比特来压缩数据,headp中包含有数据最小值、压缩比特数,以及数据总体长度信息。

s1022当数据帧包括2行及以上数据时;从第二行数据开始,以前一行数据作为相邻的后一数据行的基准行进行差值运算,得到差值数据行,对所述差值数据行进行同比特压缩处理或者分段压缩处理。

本实施例中,假设当前行数据为第j+1行数据,所述第j+1行数据包括n个数据,分别记为:aj+1,0、aj+1,1、aj+1,2、…、aj+1,n;当前行数据的前一行数据为第j行数据,所述第j行数据包括n个数据,分别记为:aj,0、aj,1、aj,2、…、aj,n;其中j=1,2,3…,n-1;n为所述数据帧的总行数。然后将第j+1行数据中的值减去第j行数据中对应的值,得到差值数据行,所述差值数据行记为:aj+1,0-aj,0、aj+1,1-aj,1、aj+1,2-aj,2、…、aj+1,n-aj,n。

在一种实施方式中,首先确定所述差值数据行的数据中的最大值,根据所述最大值设置压缩比特位数;然后按照所述压缩比特位数,对所述差值数据行进行同比特压缩处理,得到所述差值数据行对应的压缩数据。

在另一种实施方式中,按照预设规则将所述差值数据行划分为2个或者2个以上的区段;分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,得到所述差值数据行对应的压缩数据;其中,相邻两个区段的压缩比特位数不同。

具体地,图6为采用分段压缩处理方式压缩差值数据行的结构示意图,如图6所示,headu_bit表示压缩比特位数为u的区段的数据头,headv_bit表示压缩比特位数为v的区段的数据头,d1_u_bit表示当前采集行数据中第1个差值数据采用u个比特压缩后的值,依次类推,dx_u_bit表示当前采集行数据中第x个差值数据采用u个比特压缩后的值。dx+1_v_bit表示当前采集行数据中第x+1个差值数据采用v个比特压缩后的值,依次类推,dy_v_bit表示前采集行数据中第y个差值数据采用v个比特压缩后的值。headu_bit与headv_bit所对应的区段相邻,因此u与v的值不同。依次压缩每一个区段的数据,将当前行数据的所有差值数据的压缩值组成byte/int/word等形式的数据。

s103、将所述压缩数据发送给外部终端。

本实施例中,mcu可以实时将压缩数据发送给外部终端(即每压缩一行数据就直接发送给外部终端),也可以在将数据帧全部压缩好之后一次性发送给外部终端。外部终端可以是具有数据处理功能的计算机设备、便携式设备(例如手机、平板电脑、智能手表等等)。

本实施例,通过接收传感器在预设周期内上传的数据帧,其中,所述数据帧包括至少1行数据;对所述数据帧的每行数据进行同比特压缩处理或者分段压缩处理,得到压缩数据;将所述压缩数据发送给外部终端。从而实现对数据量较小的数据的无损压缩处理,压缩后数据长度明显减少,有效缩短压缩数据的传输时间。

图7为本发明实施例二提供的数据压缩装置的结构示意图,如图7所示,本实施例中的装置可以包括:

接收模块10,用于接收传感器在预设周期内上传的数据帧,其中,所述数据帧包括至少1行数据;

压缩模块20,用于对所述数据帧的每行数据进行同比特压缩处理或者分段压缩处理,得到压缩数据;

发送模块30,用于将所述压缩数据发送给外部终端。

可选地,所述压缩模块30,具体用于:

将所述数据帧的第一行数据作为基准行,对所述基准行进行同比特压缩处理或者分段压缩处理;

当数据帧包括2行及以上数据时;

从第二行数据开始,以前一行数据作为相邻的后一数据行的基准行进行差值运算,得到差值数据行,对所述差值数据行进行同比特压缩处理或者分段压缩处理。

可选地,对所述基准行进行同比特压缩处理,包括:

假设基准行包括n个数据,分别记为a0、a1、a2、…、an,将a0作为基础数据,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,其中i=1,2,3…,n;

确定差值运算后的基准行中除基础数据以外的数据中的最大值,按照所述最大值设置压缩比特位数;

按照所述压缩比特位数,对基准行中除基础数据以外的数据进行同比特压缩处理,得到基准行对应的压缩数据。

可选地,对所述基准行进行分段压缩处理,包括:

假设基准行包括n个数据,分别记为a0、a1、a2、…、an,将a0作为基础数据,用ai减去ai-1的值替换基准行中的数据ai,得到差值运算后的基准行,其中i=1,2,3…,n;

根据差值运算后的基准行中除基础数据以外的数据的大小,按照预设规则将差值运算后的基准行划分为2个或者2个以上的区段;

分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,得到基准行对应的压缩数据;其中,相邻两个区段的压缩比特位数不同。

可选地,从第二行数据开始,以前一行数据作为相邻的后一数据行的基准行进行差值运算,得到差值数据行,包括:

假设当前行数据为第j+1行数据,所述第j+1行数据包括n个数据,分别记为:aj+1,0、aj+1,1、aj+1,2、…、aj+1,n;当前行数据的前一行数据为第j行数据,所述第j行数据包括n个数据,分别记为:aj,0、aj,1、aj,2、…、aj,n;其中j=1,2,3…,n-1;n为所述数据帧的总行数;

将第j+1行数据中的值减去第j行数据中对应的值,得到差值数据行,所述差值数据行记为:aj+1,0-aj,0、aj+1,1-aj,1、aj+1,2-aj,2、…、aj+1,n-aj,n。

可选地,对所述差值数据行进行同比特压缩处理,包括:

确定所述差值数据行的数据中的最大值,根据所述最大值设置压缩比特位数;

按照所述压缩比特位数,对所述差值数据行进行同比特压缩处理,得到所述差值数据行对应的压缩数据。

可选地,对所述差值数据行进行分段压缩处理,包括:

按照预设规则将所述差值数据行划分为2个或者2个以上的区段;

分别设置每个区段内数据的压缩比特位数;按照对应的压缩比特位数对区段内的数据进行压缩,得到所述差值数据行对应的压缩数据;其中,相邻两个区段的压缩比特位数不同。

本实施例中的数据压缩装置可以执行图2所示的方法,其具体实现过程和技术原理参见图2所示方法中的相关描述,此处不再赘述。

图8为本发明实施例三提供的数据压缩设备的结构示意图,如图8所示,本实施例中的数据压缩设备40包括:

处理器41以及存储器42;其中:

存储器42,用于存储可执行指令,该存储器还可以是flash(闪存)。

处理器41,用于执行存储器存储的可执行指令,以实现上述实施例涉及的方法中的各个步骤。具体可以参见前面方法实施例中的相关描述。

可选地,存储器42既可以是独立的,也可以跟处理器41集成在一起。

当所述存储器42是独立于处理器41之外的器件时,所述数据压缩设备40还可以包括:

总线43,用于连接所述存储器42和处理器41。

此外,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当用户设备的至少一个处理器执行该计算机执行指令时,用户设备执行上述各种可能的方法。

其中,计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于应用专用集成电路(asic)中。另外,该应用专用集成电路可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于通信设备中。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:只读存储器(rom)、随机存取存储器(ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1