CN106899307A - 一种数据压缩方法、数据解压缩方法及装置 - Google Patents
一种数据压缩方法、数据解压缩方法及装置 Download PDFInfo
- Publication number
- CN106899307A CN106899307A CN201710123527.7A CN201710123527A CN106899307A CN 106899307 A CN106899307 A CN 106899307A CN 201710123527 A CN201710123527 A CN 201710123527A CN 106899307 A CN106899307 A CN 106899307A
- Authority
- CN
- China
- Prior art keywords
- data
- sequence
- compressed
- data sequence
- amount
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供了一种数据压缩方法、数据解压缩方法及装置,数据压缩方法包括:基于预先设置的可压缩量与数据范围的对应关系,将待压缩数据序列中的各个数据转换为与各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列;获得第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值,在连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列;获得第二数据序列的总数据量,基于第一预设位置将第二数据序列的总数据量插入第二数据序列的第二预设位置,获得压缩数据序列。本申请通过将待传输数据进行压缩,节省了传输带宽。
Description
技术领域
本发明涉及数据传输技术领域,尤其涉及一种数据压缩方法及装置。
背景技术
磁共振系统主要由磁体系统、梯度输出模块、射频输出模块、信号采集模块、数据传输模块、图像重建系统和计算机控制系统等组成。信号采集模块的数据为模数转换芯片并经过数字下变频处理后的数据。现有技术中,通常对数字下变频的数据不做任何处理,只是增加数据包长度、数据格式、通道号等指示性包头信息。然而,不对数据进行处理会导致在对该数据进行传输时比较浪费传输带宽。
发明内容
有鉴于此,本发明提供了一种数据压缩方法、解压缩方法及装置,用以解决现有技术中不对数据进行任何处理会导致在传输该数据时比较浪费传输带宽的问题,其技术方案如下:
一种数据压缩方法,包括:
获取待压缩数据序列,并基于预先设置的可压缩量与数据范围的对应关系,将所述待压缩数据序列中的各个数据转换为与所述各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列,其中,所述可压缩量用于指示将待转换数据转换为多少比特或者多少字节的数据;
获得所述第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值,并在所述连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列;
获得所述第二数据序列的总数据量,并基于所述第一预设位置将所述第二数据序列的总数据量插入所述第二数据序列的第二预设位置,获得压缩数据序列,所述第二数据序列的总数据量为所述第二数据序列的总比特数或总字节数。
其中,所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面或者首个数据的前面;
所述基于所述第一预设位置将所述第二数据序列的总数据量插入所述第二数据序列的第二预设位置,包括:
当所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面时,将所述第二数据序列的总数据量插入所述第二数据序列的尾部;当所述第一预设位置为所述连续出现同一可压缩量的数据中首个数据的前面时,将所述第二数据序列的总数据量插入所述第二数据序列的头部。
所述的数据压缩方法,还包括:
当所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面,所述第二预设位置为所述第二数据序列的尾部时,倒序输出所述压缩数据序列;
当所述第一预设位置为所述连续出现同一可压缩量的数据中首个数据的前面,所述第二预设位置为所述第二数据序列的头部时,正序输出所述压缩数据序列。
一种数据解压缩方法,用于对所述的数据压缩方法进行压缩后得到的压缩数据序列进行解压缩,所述数据解压缩方法包括:
接收所述压缩数据序列;
从所述压缩数据序列中读取总数据量;
从所述压缩数据序列中读取计数值,基于所述计数值中用于指示连续出现同一可压缩量的数据的个数的数据读取待转换数据,并基于所述计数值中用于指示可压缩量的数据将所述待转换数据转换为原始数据。
所述数据解压缩方法还包括:
当接收的所述压缩数据序列为数据压缩端倒序输出的数据序列时,将依次获得的原始数据组成的数据序列进行倒序排序,将倒序排序后的数据序列确定为原始数据序列;当接收的所述压缩数据序列为数据压缩端正序输出的数据序列时,将依次获得的原始数据组成的数据序列确定为原始数据序列。
一种数据压缩装置,包括:数据获取单元、数据转换单元、第一获得单元、第一插入单元、第二获得单元和第二插入单元;
所述数据获取单元,用于获取待压缩数据序列;
所述数据转换单元,用于基于预先设置的可压缩量与数据范围的对应关系,将所述待压缩数据序列中的各个数据转换为与所述各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列,其中,所述可压缩量用于指示将待转换数据转换为多少比特或者多少字节的数据;
所述第一获得单元,用于获得所述第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值;
所述第一插入单元,用于在所述连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列;
所述第二获得单元,用于获得所述第二数据序列的总数据量;
所述第二插入单元,用于基于所述第一预设位置将所述第二数据序列的总数据量插入所述第二数据序列的第二预设位置,获得压缩数据序列,所述第二数据序列的总数据量为所述第二数据序列的总比特数或总字节数。
其中,所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面或者首个数据的前面;
所述第二插入单元,具体用于当所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面时,将所述第二数据序列的总数据量插入所述第二数据序列的尾部;当所述第一预设位置为所述连续出现同一可压缩量的数据中首个数据的前面时,将所述第二数据序列的总数据量插入所述第二数据序列的头部。
所述数据压缩装置还包括:数据输出单元;
所述数据输出单元,用于当所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面,所述第二预设位置为所述第二数据序列的尾部时,倒序输出所述压缩数据序列;当所述第一预设位置为所述连续出现同一可压缩量的数据中首个数据的前面,所述第二预设位置为所述第二数据序列的头部时,正序输出所述压缩数据序列。
一种数据解压缩装置,用于对所述的数据压缩装置进行压缩后得到的压缩数据序列进行解压缩,所述数据解压缩装置包括:数据接收单元、数据读取单元和数据转换单元;
所述数据接收单元,用于接收所述压缩数据序列;
所述数据读取单元,用于从所述数据接收单元接收的所述压缩数据序列中读取总数据量、计数值,基于所述计数值中用于指示连续出现同一可压缩量的数据的个数的数据读取待转换数据;
所述数据转换单元,用于基于所述数据读取单元读取的所述计数值中用于指示可压缩量的数据将所述数据读取单元读取的所述待转换数据转换为原始数据。
所述数据解压缩装置还包括:确定单元;
所述确定单元,用于当所述接收单元接收的所述压缩数据序列为数据压缩端倒序输出的数据序列时,将依次获得的原始数据组成的数据序列进行倒序排序,将倒序排序后的数据序列确定为原始数据序列;当所述接收单元接收的所述压缩数据序列为数据压缩端正序输出的数据序列时,将依次获得的原始数据组成的数据序列确定为原始数据序列。
上述技术方案具有如下有益效果:
本发明提供的数据压缩方法、解压缩方法及装置中的压缩方法及装置,在获取待压缩数据序列之后,可基于预先设置的可压缩量与数据范围的对应关系,将待压缩数据序列中的各个数据转换为与各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列,获得第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值,并在连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列,最后获得第二数据序列的总数据量,并基于第一预设位置将第二数据序列的总数据量插入第二数据序列的第二预设位置,获得压缩数据序列。本发明可基于待压缩数据序列所对应信号的分布特点确定数据的可压缩量,进而基于数据的大小和可压缩量进行数据压缩,对数据进行压缩后再传输,能够节省大量的传输带宽。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的数据压缩方法的流程示意图;
图2为本发明实施例提供的数据解压缩方法的流程示意图;
图3示出了磁共振信号的数据分布示意图;
图4示出了磁共振图像中间行及边缘行的数据分布示意图;
图5为本发明实施例提供的数据压缩装置的结构示意图;
图6为本发明实施例提供的数据解压缩装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种数据压缩方法,应用于数据压缩端,请参阅图1,示出了该数据压缩方法的流程示意图,该方法可以包括:
步骤S101:获取待压缩数据序列,并基于预先设置的可压缩量与数据范围的对应关系,将待压缩数据序列中的各个数据转换为与各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列。
在一具体实例中,由数据压缩装置从磁共振系统的数据采集装置获得待压缩数据序列,对获得的待压缩数据序列进行后续的数据压缩处理。所述数据压缩装置可由信号采集模块或数据传输模块实现。
其中,可压缩量用于指示将待转换数据转换为多少比特或者多少字节的数据。可压缩量可基于待压缩数据序列所对应信号的分布特点确定。
待压缩数据序列包括多个数据,在一种可能的实现方式中,数据压缩装置可依次对待压缩数据序列中的每个数据执行数据转换操作:
基于可压缩量与数据范围的对应关系中的数据范围确定待转换数据所属的数据范围,示例性的,可压缩量与数据范围的对应关系可以为:
可压缩量 | 数据范围 |
8比特 | |
16比特 | |
24比特 | |
32比特 |
假设待转换数据所属的数据范围为-(27-1)~+(27-1),与数据范围-(27-1)~+(27-1)对应的可压缩量为8比特,则将待转换数据转换为8比特的数据。对待压缩数据序列中的各个数据依次执行上述转换操作,获得第一数据序列。
步骤S102:获得第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值,并在连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列。
在一种可能的实现方式中,可将计数值用N字节表示,其中,将连续出现同一可压缩量的数据的个数作为N字节的低m位,将对应的可压缩量作为N字节的高n位(m+n=8N),即低m位的个数与高n位的可压缩量组成N字节的计数值。示例性的,计数值可用2字节表示,其中,计数器值的低12位表示连续出现同一可压缩量的数据的个数,计数器值的高4位表示可压缩量,即可压缩字节数。
步骤S103:获得第二数据序列的总数据量,并基于第一预设位置将第二数据序列的总数据量插入第二数据序列的第二预设位置,获得压缩数据序列,第二数据序列的总数据量为第二数据序列的总比特数或总字节数。
在一种可能的实现方式中,第一预设位置可以为连续出现同一可压缩量的数据中最后一个数据的后面,则基于第一预设位置将第二数据序列的总数据量插入第二数据序列的第二预设位置,包括:将第二数据序列的总数据量插入第二数据序列的尾部。
在另一种可能的实现方式中,第一预设位置可以为连续出现同一可压缩量的数据中第一个数据的前面,则基于第一预设位置将第二数据序列的总数据量插入第二数据序列的第二预设位置,包括:将第二数据序列的总数据量插入第二数据序列的头部。
本发明实施例提供的数据压缩方法,数据压缩端的数据压缩装置在获取待压缩数据序列之后,可基于预先设置的可压缩量与数据范围的对应关系,将待压缩数据序列中的各个数据转换为与各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列,获得第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值,并在连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列,最后获得第二数据序列的总数据量,并基于第一预设位置将第二数据序列的总数据量插入第二数据序列的第二预设位置,获得压缩数据序列。本发明实施例提供的数据压缩方法可实现对数据的压缩,从而使得,在对压缩后的数据进行传输时能够节省大量带宽,且能够提高数据的传输效率。
可以理解的是,数据压缩端的数据压缩装置在对数据采集装置采集的待压缩数据进行压缩后需要输出给数据传输模块,在向数据传输模块输出压缩数据序列时,为了便于后续数据解压缩端的数据解压缩装置进行数据解压缩,可基于第一预设位置和第二预设位置确定压缩数据的输出方式,具体的,当第一预设位置为连续出现同一可压缩量的数据中最后一个数据的后面,第二预设位置为第二数据序列的尾部时,倒序输出压缩数据序列;当第一预设位置为连续出现同一可压缩量的数据中首个数据的前面,第二预设位置为第二数据序列的头部时,正序输出压缩数据序列。
与上述数据压缩方法相对应,本发明实施例还提供了一种数据解压缩方法,应用于数据解压缩端,请参阅图2,示出了该数据解压缩方法的流程示意图,该方法可以包括:
步骤S201:接收压缩数据序列。
在一具体实例中,数据解压缩端的数据解压缩装置接收由磁共振系统的数据传输模块传输来的、经数据压缩装置压缩得到的压缩数据序列之后,进行数据解压缩。所述数据解压缩装置可由图像重建系统或计算机控制系统实现。
步骤S202:从压缩数据序列中读取总数据量。
步骤S203:从压缩数据序列中读取计数值,基于计数值中用于指示连续出现同一可压缩量的数据的个数的数据读取待转换数据,并基于计数值中用于指示可压缩量的数据将待转换数据转换为原始数据。
本发明实施例提供的数据解压缩方法还可以包括:当数据解压缩装置接收的压缩数据序列为数据压缩端倒序输出的数据序列时,将依次获得的原始数据组成的数据序列进行倒序排序,将倒序排序后的数据序列确定为原始数据序列;当接收的压缩数据序列为数据压缩端正序输出的数据序列时,将依次获得的原始数据组成的数据序列确定为原始数据序列。
本发明实施例提供的数据解压缩方法,可对利用上述数据压缩方法得到的压缩数据序列进行解压缩,从而复原出原始数据序列。
在上述本发明实施例提供的数据压缩方法的基础上,现列举一具体示例进行说明:
以磁共振信号为例,磁共振信号的特点是信号的动态范围大,如果用长度为n的行向量表示,通常在n/2附近的点常有很大的幅度,而靠近1和n的边缘有很小的幅度,如图3所示,这样可以发现数据的特征是中间高,两边低,而磁共振一副图像由多行数据构成,行与行之间也有类似规律,如图4的(a)表示中间行,(b)和(c)为边缘行,(c)比(b)更加靠近图像边缘。本发明实施例利用该特征对数据进行压缩。
采集的模拟信号经过模数转换芯片和数字下变频芯片处理后通常用32比特补码表示。
在本实施例中,需要将补码转换为原码,表示为d31,d30,d29,d28…d0,其中,最高位d31表示符号位,d30,d29,d28…d0,这31比特表示数据的绝对值,取出原码的最高位,即符号位d31保留。
将低31位分为d6,d5…d0;d14,d13…d0;d22,d21…d0;d30,d29…d0这4个范围,并用符号位d31附加在每个范围的最高位,得到:[d31,d6,d5…d0],[d31,d14,d13…d0],[d31,d22,d21…d0]和[d31,d30,d29…d0]。上述得到4个数据区间,其对应的数据范围分别为-(27-1)至+(27-1);-(215-1)至+(215-1);-(223-1)至+(223-1)和-(231-1)至+(231-1),上述过程相当于建立了可压缩量与数据范围的对应关系,可表示为:
表2
可压缩量 | 数据范围 |
8比特 | |
16比特 | |
24比特 | |
32比特 |
表2中的可压缩量8比特和数据范围-(27-1)~+(27-1)标识,在-(27-1)~+(27-1)这一范围内的数据可转换为8比特的数据,也就是说,如果待压缩数据序列中的各个数据均为32比特数据,而其中某个数据在-(27-1)~+(27-1)这一范围内,则进行数据转换后,该数据在存储和传输时可节省24比特。同样的,如果某一数据在-(215-1)~+(215-1)这一范围内,则进行数据转换后,该数据在存储和传输时可节省16比特,如果某一数据在-(224-1)~+(224-1)这一范围内,则进行数据转换后,该数据在存储和传输时可节省8比特,如果某一数据在-(231-1)~+(231-1)这一范围内,则进行数据转换后,该数据在存储和传输时可节省0比特。
假设待压缩的数据序列为1,2,3,257,258,4,5,6,7,65537,2147483647,则:
(1)基于表2示出的对应关系依次对待压缩数据序列中的各个数据进行转换:
判断第一个数据“1”所属的数据范围,由于数据“1”所属的数据范围为-(27-1)~+(27-1),该数据范围为-(27-1)~+(27-1)对应的可压缩量为8,表示第一个数据“1”可转换为8比特的数据,即可转换为单字节数据0x01;接着判断第二个数据“2”所属的数据范围,由于数据2所属的数据范围同样为-(27-1)~+(27-1),因此,将第二个数据“2”也转换为8比特的数据,即可转换为单字节数据0x02;第三个数据“3”也转换为8比特的数据,即将第三个数据“3”转换为单字节数据0x03;第四个数据为257,其所属的数据范围为-(215-1)~+(215-1),数据范围-(215-1)~+(215-1)对应的可压缩量为16,表示第四个数据“257”可转换为16比特的数据,即可将第四个数据“257”转换为双字节数据0x0101;第五个数据为“258”,其所属的数据范围同样为-(215-1)~+(215-1),因此,将其可转换为双字节数据0x0102;第六个数“4”、第七个数“5”、第八个数“6”和第九个数“7”所属的数据范围均为-(27-1)~+(27-1),因此,依次将第六个数“4”、第七个数“5”、第八个数“6”和第九个数“7”转换为单字节数0x04、0x05、0x06和0x07;第十个数“65537”所属的数据范围为-(224-1)~+(224-1),该数据范围-(224-1)~+(224-1)对应的可压缩量为24,表示第十个数据“65537”可转换为24比特的数据,即可转换为三字节数据0x010001;第11个数据“2147483647”所属的数据范围为-(231-1)~+(231-1),该数据范围-(231-1)~+(231-1)对应的可压缩量为32,表示第11个数据65537可转换为32比特的数据,即可转换为四字节数据0x7fffffff。经过上述数据转换可得到第一数据序列:
0x01,0x02,0x03,0x0101,0x0102,0x04,0x05,0x06,0x07,0x010001,0x7fffffff。
(2)依次获得经数据转换后得到的第一数据序列中,连续出现同一可压缩量的数据的个数:
序列0x01,0x02,0x03,0x0101,0x0102,0x04,0x05,0x06,0x07,0x010001,0x7fffffff中,连续出现了3个单字节数据(0x01,0x02,0x03)、连续出现了2个双字节数据(0x0101,0x0102)、连续出现了4个单字节数据(0x04,0x05,0x06,0x07)、出现了1个三字节数据(0x010001),出现了1个四字节数据(0x7fffffff)。
(3)将获得的个数与对应的可压缩量按预设规则组合作为计数值:
在本实施例中,计数值可用2字节表示,其中,计数器值的高4位表示可压缩量,即可压缩字节数,计数器值的低12位表示连续出现同一可压缩量的数据的个数,可将计数值表示为k.cnt,其中,k即为可压缩量,为了便于后续处理,这里可表示成可压缩字节数,其取值可以为1、2、3、4,cnt表示连续出现同一可压缩量的数据的个数。对序列0x01,0x02,0x03,0x0101,0x0102,0x04,0x05,0x06,0x07,0x010001,0x7fffffff依次确定计数值分别为0x1003(k=1,cnt=3)、0x2002(k=2,cnt=2)、0x1004(k=1,cnt=4)、0x3001(k=3,cnt=1)、0x4001(k=4,cnt=1)。
(4)对于第一数据序列,依次在连续出现同一可压缩量的数据的最后一个数据后面插入对应的计数值,获得第二数据序列:
在0x01,0x02,0x03后插入计数值0x1003,在0x0101,0x0102后插入计数值0x2002,在0x04,0x05,0x06,0x07之后插入计数值0x1004,在0x010001之后插入计数值0x3001,在0x7fffffff之后插入计数值0x4001,得到如下的第二数据序列:0x01,0x02,0x03,0x1003,0x0101,0x0102,0x2002,0x04,0x05,0x06,0x07,0x1004,0x010001,0x3001,0x7fffffff,0x4001。
(5)获得第二数据序列的总字节数total,并在第二数据序列的尾部添加获得的总字节数total:
第二数据序列的总字节数total
=3*1+1*2+2*2+1*2+4*1+1*2+1*3+1*2+1*4+1*2
=28(0x001c);
在第二数据序列0x01,0x02,0x03,0x1003,0x0101,0x0102,0x2002,0x04,0x05,0x06,0x07,0x1004,0x010001,0x3001,0x7fffffff,0x4001的尾部插入总字节数0x001c,得到如下压缩数据序列:
0x01,0x02,0x03,0x1003,0x0101,0x0102,0x2002,0x04,0x05,0x06,0x07,0x1004,0x010001,0x3001,0x7fffffff,0x4001,0x001c。
(6)压缩数据序列的输出:
为了简化解压缩端对数据序列的解压缩过程,压缩数据序列0x01,0x02,0x03,0x1003,0x0101,0x0102,0x2002,0x04,0x05,0x06,0x07,0x1004,0x010001,0x3001,0x7fffffff,0x4001,0x001c倒序输出,即,先输出总字节数0x001c,再输出计数值0x4001,接着依次是0x7fffffff,0x3001,0x010001,0x1004,0x07,0x06,0x05,0x04,0x2002,0x0102,0x0101,0x1003,0x03,0x02,0x01。
需要说明的是,压缩数据序列需要通过用于传输数据的逻辑模块向外界传输。示例性的,如果用于传输数据的逻辑模块使用8位接口,可以直接用8比特传输。如果用于传输数据的逻辑模块使用32位接口,则将4个通道的数据组合成:[通道1(8bit),通道2(8bit),通道3(8bit),通道4(8bit)](32bit)的格式进行一次传输4个通道的数据。可以理解的是,如果只使用一个通道传输数据,则使用字节传输模式,不进行字节和字的转换操作。
下面给出对通过上述压缩过程得到的压缩数据序列进行解压缩的过程:
由于压缩端对压缩数据序列0x01,0x02,0x03,0x1003,0x0101,0x0102,0x2002,0x04,0x05,0x06,0x07,0x1004,0x010001,0x3001,0x7fffffff,0x4001,0x001c倒序输出,因此,对于解压缩端而言:
首先,读取的是总字节数0x001c,通过总字节数0x001c可得知需要为后续的操作分配多大的存储空间。
然后,读取计数值0x4001(k.cnt,k=4,cnt=1),由0x4001可得知接下来接收到1个(cnt=1)四字节数据(k=4),即 0x7fffffff,将0x7fffffff复原为原始数据2147483647;接着读取计数值0x3001(k.cnt,k=3,cnt=1),由0x3001可得知接下来接收到1个(cnt=1)三单字节数据(k=3),即0x010001,将0x010001复原为原始数据65537;接着读取计数值0x1004,(k.cnt,k=1,cnt=4),由0x1004可得知接下来接收到4(cnt=4)个单字节数据(k=1),即依次接收到0x07,0x06,0x05,0x04,并依次复原成原始数据7,6,5,4;接着读取计数值0x2002(k.cnt,k=2,cnt=2),由0x2002可得知接下来接收到2(cnt=2)个双字节数据(k=2),即依次接收到0x0102,0x0101,并依次复原成原始数据258,257;接着读取计数值0x1003(k.cnt,k=1,cnt=3),由0x1003可得知接下来接收到3(cnt=3)个单字节数据(k=1),即依次接收到0x03,0x02,0x01,并依次复原成原始数据3,2,1。经过上述过程得到如下数据序列:
2147483647,65537,7,6,5,4,258,257,3,2,1。
最后,将数据序列2147483647,65537,7,6,5,4,258,257,3,2,1倒序排序,得到原始序列1,2,3,257,258,4,5,6,7,65537,2147483647。
对于磁共振信号而言,由于对于采集的模拟信号经过模数转换芯片和数字下变频芯片处理后通常用32比特补码表示,而前面提到的待压缩序列是将经过模数转换芯片和数字下变频芯片处理后得到的32比特补码转换为原码后的数据,因此,为了复原经过模数转换芯片和数字下变频芯片处理后的数据,还需要对解压缩得到的数据进行原码到补码的转换。
需要说明的是,在上述压缩过程的步骤(4)中,对于第一数据序列,依次在连续出现同一可压缩量的数据的最后一个数据后面插入对应的计数值,除了这种方式外,还可依次在连续出现同一可压缩量的数据的首个数据前面插入对应的计数值,通过这种方式得到的第二数据序列为:
0x1003,0x01,0x02,0x03,0x2002,0x0101,0x0102,0x1004,0x04,0x05,0x06,0x07,0x3001,0x010001,0x4001,0x7fffffff。
此时,获得的第二数据序列的总字节数total不再添加至第二数据序列的尾部,而是添加至第二数据序列的头部,通过这种方式获得压缩数据序列为:
0x001c,0x1003,0x01,0x02,0x03,0x2002,0x0101,0x0102,0x1004,0x04,0x05,0x06,0x07,0x3001,0x010001,0x4001,0x7fffffff。
在对压缩数据序列的输出时,直接正序输出即可。
在对压缩数据序列进行解压缩时,不再需要对解压出的数据序列进行倒序排序。
与上述数据压缩方法相对应,本发明实施例还提供了一种数据压缩装置,请参阅图5,示出了该数据压缩装置50的结构示意图,可以包括:数据获取单元501、数据转换单元502、第一获得单元503、第一插入单元504、第二获得单元505和第二插入单元506。
数据获取单元501,用于获取待压缩数据序列。
数据转换单元502,用于基于预先设置的可压缩量与数据范围的对应关系,依次将待压缩数据序列中的各个数据转换为与各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列。
其中,可压缩量用于指示将待转换数据转换为多少比特或者多少字节的数据。
第一获得单元503,用于获得第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值。
第一插入单元504,用于在连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列。
第二获得单元505,用于获得第二数据序列的总数据量。
第二插入单元506,用于基于第一预设位置将第二数据序列的总数据量插入第二数据序列的第二预设位置,获得压缩数据序列,第二数据序列的总数据量为第二数据序列的总比特数或总字节数。
本发明实施例提供的数据压缩装置,在获取待压缩数据序列,可基于预先设置的可压缩量与数据范围的对应关系,将待压缩数据序列中的各个数据转换为与各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列,获得第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值,并在连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列,最后获得第二数据序列的总数据量,并基于第一预设位置将第二数据序列的总数据量插入第二数据序列的第二预设位置,获得压缩数据序列。本发明实施例提供的数据压缩装置可实现对数据的压缩,从而使得,在对压缩后的数据进行传输时能够节省大量带宽,且能够提高数据的传输效率。
在一种可能的实现方式中,上述实施例中的第一预设位置可以为连续出现同一可压缩量的数据中最后一个数据的后面,则第二插入单元,具体用于将第二数据序列的总数据量插入第二数据序列的尾部。
在另一种可能的实现方式中,上述实施例中的第一预设位置可以为连续出现同一可压缩量的数据中首个数据的前面,则第二插入单元,具体用于将第二数据序列的总数据量插入第二数据序列的头部。
上述实施例提供的数据压缩装置还可以包括数据输出单元。
数据输出单元,用于当第一预设位置为连续出现同一可压缩量的数据中最后一个数据的后面,第二预设位置为第二数据序列的尾部时,倒序输出压缩数据序列;当第一预设位置为连续出现同一可压缩量的数据中首个数据的前面,第二预设位置为第二数据序列的头部时,正序输出压缩数据序列。
与上述数据压缩装置相对应,本发明实施例还提供了一种数据解压缩装置,用于对上述数据压缩装置进行压缩后得到的压缩数据序列进行解压缩,请参阅图6,示出了该数据解压缩装置60的结构示意图,可以包括:数据接收单元601、数据读取单元602和数据转换单元603。
数据接收单元601,用于接收压缩数据序列。
数据读取单元602,用于从数据接收单元601接收的压缩数据序列中读取总数据量、计数值,基于计数值中用于指示连续出现同一可压缩量的数据的个数的数据读取待转换数据。
数据转换单元603,用于基于数据读取单元602读取的计数值中用于指示可压缩量的数据将数据读取单元602读取的待转换数据转换为原始数据。
本发明实施例提供的数据解压缩装置,还可以包括:确定单元。
确定单元,用于当接收单元接收的压缩数据序列为数据压缩端倒序输出的数据序列时,将依次获得的原始数据组成的数据序列进行倒序排序,将倒序排序后的数据序列确定为原始数据序列;当接收单元接收的压缩数据序列为数据压缩端正序输出的数据序列时,将依次获得的原始数据组成的数据序列确定为原始数据序列。
本发明实施例提供的数据解压缩装置可对上述数据压缩装置输出的压缩数据序列进行解压缩,从而复原出原始数据序列。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据压缩方法,其特征在于,所述方法包括:
获取待压缩数据序列,并基于预先设置的可压缩量与数据范围的对应关系,将所述待压缩数据序列中的各个数据转换为与所述各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列,其中,所述可压缩量用于指示将待转换数据转换为多少比特或者多少字节的数据;
获得所述第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值,并在所述连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列;
获得所述第二数据序列的总数据量,并基于所述第一预设位置将所述第二数据序列的总数据量插入所述第二数据序列的第二预设位置,获得压缩数据序列,所述第二数据序列的总数据量为所述第二数据序列的总比特数或总字节数。
2.根据权利要求1所述的数据压缩方法,其特征在于,所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面或者首个数据的前面;
所述基于所述第一预设位置将所述第二数据序列的总数据量插入所述第二数据序列的第二预设位置,包括:
当所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面时,将所述第二数据序列的总数据量插入所述第二数据序列的尾部;当所述第一预设位置为所述连续出现同一可压缩量的数据中首个数据的前面时,将所述第二数据序列的总数据量插入所述第二数据序列的头部。
3.根据权利要求1或2所述的数据压缩方法,其特征在于,所述方法还包括:
当所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面,所述第二预设位置为所述第二数据序列的尾部时,倒序输出所述压缩数据序列;
当所述第一预设位置为所述连续出现同一可压缩量的数据中首个数据的前面,所述第二预设位置为所述第二数据序列的头部时,正序输出所述压缩数据序列。
4.一种数据解压缩方法,其特征在于,用于对如权利要求1-3中任意一项所述的数据压缩方法进行压缩后得到的压缩数据序列进行解压缩,所述数据解压缩方法包括:
接收所述压缩数据序列;
从所述压缩数据序列中读取总数据量;
从所述压缩数据序列中读取计数值,基于所述计数值中用于指示连续出现同一可压缩量的数据的个数的数据读取待转换数据,并基于所述计数值中用于指示可压缩量的数据将所述待转换数据转换为原始数据。
5.根据权利要求4所述的解压缩方法,其特征在于,所述方法还包括:
当接收的所述压缩数据序列为数据压缩端倒序输出的数据序列时,将依次获得的原始数据组成的数据序列进行倒序排序,将倒序排序后的数据序列确定为原始数据序列;当接收的所述压缩数据序列为数据压缩端正序输出的数据序列时,将依次获得的原始数据组成的数据序列确定为原始数据序列。
6.一种数据压缩装置,其特征在于,包括:数据获取单元、数据转换单元、第一获得单元、第一插入单元、第二获得单元和第二插入单元;
所述数据获取单元,用于获取待压缩数据序列;
所述数据转换单元,用于基于预先设置的可压缩量与数据范围的对应关系,将所述待压缩数据序列中的各个数据转换为与所述各个数据所属的数据范围所对应的可压缩量的数据,获得第一数据序列,其中,所述可压缩量用于指示将待转换数据转换为多少比特或者多少字节的数据;
所述第一获得单元,用于获得所述第一数据序列中连续出现同一可压缩量的数据的个数,将获得的个数与对应的可压缩量按预设规则组合作为计数值;
所述第一插入单元,用于在所述连续出现同一可压缩量的数据的第一预设位置插入对应的计数值,获得第二数据序列;
所述第二获得单元,用于获得所述第二数据序列的总数据量;
所述第二插入单元,用于基于所述第一预设位置将所述第二数据序列的总数据量插入所述第二数据序列的第二预设位置,获得压缩数据序列,所述第二数据序列的总数据量为所述第二数据序列的总比特数或总字节数。
7.根据权利要求6所述的数据压缩装置,其特征在于,所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面或者首个数据的前面;
所述第二插入单元,具体用于当所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面时,将所述第二数据序列的总数据量插入所述第二数据序列的尾部;当所述第一预设位置为所述连续出现同一可压缩量的数据中首个数据的前面时,将所述第二数据序列的总数据量插入所述第二数据序列的头部。
8.根据权利要求6或7所述的数据压缩装置,其特征在于,所述装置还包括:数据输出单元;
所述数据输出单元,用于当所述第一预设位置为所述连续出现同一可压缩量的数据中最后一个数据的后面,所述第二预设位置为所述第二数据序列的尾部时,倒序输出所述压缩数据序列;当所述第一预设位置为所述连续出现同一可压缩量的数据中首个数据的前面,所述第二预设位置为所述第二数据序列的头部时,正序输出所述压缩数据序列。
9.一种数据解压缩装置,其特征在于,用于对如权利要求6-8中任意一项所述的数据压缩装置进行压缩后得到的压缩数据序列进行解压缩,所述数据解压缩装置包括:数据接收单元、数据读取单元和数据转换单元;
所述数据接收单元,用于接收所述压缩数据序列;
所述数据读取单元,用于从所述数据接收单元接收的所述压缩数据序列中读取总数据量、计数值,基于所述计数值中用于指示连续出现同一可压缩量的数据的个数的数据读取待转换数据;
所述数据转换单元,用于基于所述数据读取单元读取的所述计数值中用于指示可压缩量的数据将所述数据读取单元读取的所述待转换数据转换为原始数据。
10.根据权利要求9所述的数据解压缩装置,其特征在于,所述装置还包括:确定单元;
所述确定单元,用于当所述接收单元接收的所述压缩数据序列为数据压缩端倒序输出的数据序列时,将依次获得的原始数据组成的数据序列进行倒序排序,将倒序排序后的数据序列确定为原始数据序列;当所述接收单元接收的所述压缩数据序列为数据压缩端正序输出的数据序列时,将依次获得的原始数据组成的数据序列确定为原始数据序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710123527.7A CN106899307B (zh) | 2017-03-03 | 2017-03-03 | 一种数据压缩方法、数据解压缩方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710123527.7A CN106899307B (zh) | 2017-03-03 | 2017-03-03 | 一种数据压缩方法、数据解压缩方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106899307A true CN106899307A (zh) | 2017-06-27 |
CN106899307B CN106899307B (zh) | 2020-10-16 |
Family
ID=59184680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710123527.7A Active CN106899307B (zh) | 2017-03-03 | 2017-03-03 | 一种数据压缩方法、数据解压缩方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106899307B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110446124A (zh) * | 2019-08-19 | 2019-11-12 | 深圳市双翼科技股份有限公司 | 基于光网络终端的单元远程管理方法、存储介质以及装置 |
CN113408829A (zh) * | 2021-08-19 | 2021-09-17 | 南通倍佳机械科技有限公司 | 基于大数据分析的危险区域设备数据压缩方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040233924A1 (en) * | 2002-03-12 | 2004-11-25 | International Business Machines Corporation | Dynamic memory allocation between inbound and outbound buffers in a protocol handler |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN104077335A (zh) * | 2013-05-07 | 2014-10-01 | 腾讯科技(深圳)有限公司 | 一种结构化数据的序列化、反序列化方法、装置和系统 |
CN104199927A (zh) * | 2014-09-03 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 数据处理方法及数据处理装置 |
-
2017
- 2017-03-03 CN CN201710123527.7A patent/CN106899307B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040233924A1 (en) * | 2002-03-12 | 2004-11-25 | International Business Machines Corporation | Dynamic memory allocation between inbound and outbound buffers in a protocol handler |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN104077335A (zh) * | 2013-05-07 | 2014-10-01 | 腾讯科技(深圳)有限公司 | 一种结构化数据的序列化、反序列化方法、装置和系统 |
CN104199927A (zh) * | 2014-09-03 | 2014-12-10 | 腾讯科技(深圳)有限公司 | 数据处理方法及数据处理装置 |
Non-Patent Citations (2)
Title |
---|
刘明: "Google Protocol Buffer 的使用和原理", 《HTTPS://WWW.IBM.COM/DEVELOPERWORKS/CN/LINUX/L-CN-GPB/》 * |
石头儿-博客园: "Google Protocol Buffers 编码(Encoding)", 《HTTPS://WWW.CNBLOGS.COM/SHITOUER/ARCHIVE/2013/04/12/GOOGLE-PROTOCOL-BUFFERS-ENCODING.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110446124A (zh) * | 2019-08-19 | 2019-11-12 | 深圳市双翼科技股份有限公司 | 基于光网络终端的单元远程管理方法、存储介质以及装置 |
CN113408829A (zh) * | 2021-08-19 | 2021-09-17 | 南通倍佳机械科技有限公司 | 基于大数据分析的危险区域设备数据压缩方法及系统 |
CN113408829B (zh) * | 2021-08-19 | 2021-11-26 | 南通倍佳机械科技有限公司 | 基于大数据分析的危险区域设备数据压缩方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106899307B (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080256332A1 (en) | Processes and devices for compression and decompression of executable code by a microprocessor with a RISC architecture | |
CN105426413B (zh) | 一种编码方法及装置 | |
CN104038450B (zh) | 基于pcie总线的报文传输方法与装置 | |
CN110445860B (zh) | 一种报文发送方法、装置、终端设备及存储介质 | |
CN102750268A (zh) | 一种对象序列化方法、对象反序列化方法、装置及系统 | |
CN106899307A (zh) | 一种数据压缩方法、数据解压缩方法及装置 | |
CN103312336A (zh) | 一种数据压缩的方法及装置 | |
CN108521430A (zh) | 双协议复用芯片和双协议复用方法 | |
CN107436851A (zh) | 串行外设接口四线隔离系统及其控制方法 | |
CN113868182A (zh) | 一种数据压缩方法、装置、设备和介质 | |
CN108900196A (zh) | 一种基于lzw算法的数据解码方法、装置、设备及介质 | |
CN102055549B (zh) | 一种长期演进系统中的速率匹配装置及方法 | |
CN109104198A (zh) | 一种数据压缩方法、解压方法、装置及电子设备 | |
CN111985636A (zh) | 适用于人工神经网络的数据结构压缩技术 | |
CN110222286A (zh) | 信息获取方法、装置、终端和计算机可读存储介质 | |
CN105630999A (zh) | 服务器压缩数据的方法和装置 | |
CN106992786A (zh) | 一种基带数据压缩方法、装置和系统 | |
CN111147083B (zh) | 一种时间信息压缩传输的方法 | |
CN107147398A (zh) | 利用样条函数进行有损压缩的方法和系统 | |
CN114362880A (zh) | 可重构遥测采编通用协议设计方法 | |
CN106549672B (zh) | 一种加速度传感器的三轴数据压缩方法 | |
CN104202124A (zh) | 一种erp数据包通讯方法 | |
CN105049055A (zh) | 一种数据压缩方法和数据解压方法 | |
CN203930407U (zh) | 一种模拟数据隔离采集电路 | |
CN105243807A (zh) | 一种数据传输系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |