基于数据类型的数值型数据压缩及解压缩方法转让专利

申请号 : CN201110202682.0

文献号 : CN102314697B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张行清

申请人 : 张行清

摘要 :

本发明公开了一种基于数据类型的数值型数据压缩及解压缩方法,其数据压缩方法包括以下步骤:(1)确定数据类型正变换形式;(2)确定数据正变换公式;(3)数据正变换;(4)生成二进制格式数据文件;(5)登记压缩标志。其数据解压缩方法为根据压缩标志确定数据类型反变换形式和数据反变换公式,进行数据反变换,把恢复的数据存放在二进制格式文件。在满足适用条件下,该方法变更使用长度小的存储单元,使数据存储量相应减少到原来的二分之一或者四分之一,甚至八分之一,数据压缩率高,数据存储量小,提高任务运算及传输速度,数据开放,兼容性好,易实现。

权利要求 :

1.一种基于数据类型的数值型数据压缩及解压缩方法,其特征在于:所述数据压缩方法包括以下步骤:(1)确定数据类型正变换形式;

(2)确定数据正变换公式;

(3)数据正变换;

(4)生成二进制格式数据文件;

(5)登记压缩标志;

所述的数据解压缩方法为根据压缩标志确定数据类型反变换形式和数据反变换公式,进行数据反变换,把恢复的数据存放在二进制格式文件;

所述的数据类型正变换形式为以下几种的一种:①双精度复数型转变为单精度复数型;

②双精度浮点型转变为单精度浮点型;

③双精度浮点型转变为较短单元长度的整型,即双精度浮点型转变为4或2或1字节整型;

④单精度浮点型转变为较短单元长度的整型,即单精度浮点型转变为2或1字节整型;

⑤较长单元长度的整型转变为较短单元长度的整型;

⑥双精度复数型拆分为两个单元存放,转变为较短单元长度的整型实部和整型虚部;

⑦单精度复数型拆分为两个单元存放,转变为较短单元长度的整型实部和整型虚部;

所述⑤较长单元长度的整型转变为较短单元长度的整型选自以下几种的一种:i)8字节整型转变为4或2或1字节整型;

ii)4字节整型转变为2或1字节整型;

iii)2字节整型转变为1字节整型;

所述⑥双精度复数型拆分为两个单元存放,转变为较短单元长度的整型实部和整型虚部选自以下几种的一种:i)双精度复数型转变为实部4字节整型+虚部4字节整型;

ii)双精度复数型转变为实部2字节整型+虚部2字节整型;

iii)双精度复数型转变为实部1字节整型+虚部1字节整型;

所述⑦单精度复数型拆分为两个单元存放,转变为较短单元长度的整型实部和整型虚部选自以下几种的一种:i)单精度复数型转变为实部2字节整型+虚部2字节整型;

ii)单精度复数型转变为实部1字节整型+虚部1字节整型。

2.根据权利要求1所述的基于数据类型的数值型数据压缩及解压缩方法,其特征在于:所述的确定数据正变换公式是依据不同的数据正变换需要选择不同的正变换公式,具体如下:a.数据类型正变换形式①~⑤项采用正变换函数为Da=f(Db),Da是变换后的数据,Db是变换前的数据,f(Db)是Db的函数;

采用线性关系的数据变换,正变换公式为

Da=k*Db+k0

式中,Da、Db同上,k、k0为常数;

b.数据类型正变换形式⑥、⑦项采用正变换函数为Da=Das+iDax=f(Dbs)+if(Dbx),式中Das、Dax是变换后的数据实部和虚部,Dbs、Dbx是变换前的数据实部和虚部,f(Dbs)、f(Dbx)分别是Dbs、Dbx的函数;

采用线性关系的数据变换,正变换公式为

Da=Das+iDax

=ks*Dbs+k0s+i(kx*Dbx+k0x)式中,Das、Dax、Dbs、Dbx同上,ks、k0s、kx、k0x为常数。

3.根据权利要求1所述的基于数据类型的数值型数据压缩及解压缩方法,其特征在于:所述的数据正变换是依据确定的数据类型正变换形式和数据正变换公式,对待压缩数据进行数据变换。

4.根据权利要求1所述的基于数据类型的数值型数据压缩及解压缩方法,其特征在于:所述的生成二进制格式数据文件是选择二进制格式表达和存放数据,并按具体二进制格式文件的要求,设置数据类型和单元长度参数,把数据生成为二进制格式文件。

5.根据权利要求1所述的基于数据类型的数值型数据压缩及解压缩方法,其特征在于:所述的登记压缩标志为将变换前后的数据类型、单元长度、变换函数及其参数的信息,登记于头文件或者文件头里,或者标记在文件名里,或者记忆在软件中,利于解压缩过程恢复数据。

说明书 :

基于数据类型的数值型数据压缩及解压缩方法

技术领域

[0001] 本发明涉及一种数据压缩及解压缩方法,尤其涉及了一种基于数据类型的数值型数据压缩及解压缩方法。

背景技术

[0002] 目前,在模拟信息数字化和数字数据方面都有较多成熟的数据压缩方法供选择使用。如申请号为200510000589.6公开了一种对图像进行快速压缩和解压缩的方法,其主要针对某些具有特殊特征的图像部分做简化处理来达到提高处理速度的目的。申请号为200510115119.4公开了一种实时数据压缩方法,用于过程控制系统中对数据包数据进行压缩,该方法包括:初始化字典,将压缩过程中可能出现的字符初始化到字典中;读入数值;
将实时数据的相邻数据相减获取差值,在压缩文件中保存读入的第一个数值;采用LWZ算法对所述差值进行压缩。申请号为201019026096.8公开了一种基于数值排序线性拟合的历史数据压缩方法,包括:对获取的历史数据按值的大小排序;值域线性拟合;按域存储;
数据处理完成判断。
[0003] 从压缩后的数据状态分类,数字数据压缩方法主要有标准文件方式和独立工具方式,标准文件方式有声音、图像和视频等内容文件,如GIF、JPEG、TIFF等格式文件,在系统支持下,在压缩状态下,数据仍可使用;独立工具方式,如ZIP、WINRAR等压缩工具,已压缩文件需要解压缩后,数据方可使用。同类型的数据压缩方式,比如GIF与JEPG,ZIP与WINRAR等在使用上只能选择其一,或者同时使用,压缩效率提高很有限,具有排他性。
[0004] 面对不同的数据应用,特别是数值型数据量日益增大,在数据运算速度、数据传输速度和数据储存方面,各种数据压缩方法仍然难于满足越来越高的要求。比如卫星遥感监测、大气地面观测等数据及其衍生数据,其特点是数据量大、数据范围窄、数据位数少,若能减少数据储存量,又能提高任务运算速度和传输速度,是非常迫切的需求。

发明内容

[0005] 本发明的目的在于针对现有技术增添一种新的数值型数据压缩及解压缩方式,提供了一种压缩率高、数据开放、兼容性好、易实现的基于数据类型的数值型数据压缩及解压缩方法。
[0006] 为了实现上述目的,本发明采取了以下技术方案:基于数据类型的数值型数据压缩及解压缩方法,所述数据压缩方法包括以下步骤:
[0007] (1)确定数据类型正变换形式
[0008] 1)根据计算机语言对数据的分类方法,判定待压缩数据的数值型数据类型。为便于参照,将数值型数据类型及其单元长度罗列如下:
[0009] 数值型的数据类型分为整型、浮点型和复数型,整型分为无符整型和有符整型,单元长度有1、2、4、8字节形式;浮点型分为单精度浮点型和双精度浮点型,单元长度分别是4、8字节;复数型分为单精度复数型和双精度复数型,单元长度分别是8、16字节。
[0010] 2)根据待压缩数据的数据类型和数据精度,分析数据类型单元长度调整,是否符合如下方式之一,可达到压缩效果。
[0011] ①双精度复数型转变为单精度复数型;
[0012] ②双精度浮点型转变为单精度浮点型;
[0013] ③双精度浮点型转变为较短单元长度的整型,即双精度浮点型转变为4或2或1字节整型;
[0014] ④单精度浮点型转变为较短单元长度的整型,即单精度浮点型转变为2或1字节整型;
[0015] ⑤较长单元长度的整型转变为较短单元长度的整型;
[0016] ⑥双精度复数型拆分为两个单元存放,转变为较短单元长度的整型实部和整型虚部;
[0017] ⑦单精度复数型拆分为两个单元存放,转变为较短单元长度的整型实部和整型虚部;
[0018] 上述⑤较长单元长度的整型转变为较短单元长度的整型选自以下几种的一种:
[0019] i)8字节整型转变为4或2或1字节整型;
[0020] ii)4字节整型转变为2或1字节整型;
[0021] iii)2字节整型转变为1字节整型;
[0022] 上述⑥双精度复数型拆分为两个单元存放,转变为较短单元长度的整型实部和整型虚部选自以下几种的一种:
[0023] i)双精度复数型转变为实部4字节整型+虚部4字节整型;
[0024] ii)双精度复数型转变为实部2字节整型+虚部2字节整型;
[0025] iii)双精度复数型转变为实部1字节整型+虚部1字节整型;
[0026] 上述⑦单精度复数型拆分为两个单元存放,转变为较短单元长度的整型实部和整型虚部选自以下几种的一种:
[0027] i)单精度复数型转变为实部2字节整型+虚部2字节整型;
[0028] ii)单精度复数型转变为实部1字节整型+虚部1字节整型。
[0029] 3)若能确定上述一项或多项数据类型正变换形式,可继续进行,否则中止,不适用本压缩方法。
[0030] (2)确定数据正变换公式
[0031] 1)首先考虑上一步确定的具有最优压缩效果的数据类型正变换形式,根据需要确定具体的正变换函数,配合数据类型正变换而变换数据,变换函数必须具有数据可恢复性,具体如下:
[0032] a.数据类型正变换形式①~⑤项采用正变换函数为Da=f(Db),Da是变换后的数据,Db是变换前的数据,f(Db)是Db的函数;
[0033] 采用线性关系的数据变换,正变换公式为
[0034] Da=k*Db+k0
[0035] 式中,Da、Db同上,k、k0为常数;
[0036] b.数据类型正变换形式⑥、⑦项采用正变换函数为Da=Das+iDax=f(Dbs)+if(Dbx),式中Das、Dax是变换后的数据实部和虚部,Dbs、Dbx是变换前的数据实部和虚部,f(Dbs)、f(Dbx)分别是Dbs、Dbx的函数;
[0037] 采用线性关系的数据变换,正变换公式为
[0038] Da=Das+iDax
[0039] =ks*Dbs+k0s+i(kx*Dbx+k0x)
[0040] 式中,Das、Dax、Dbs、Dbx同上,ks、k0s、kx、k0x为常数。
[0041] 2)依据变换前后的数据类型,需满足数据精度和数据表达范围的要求,确定正变换公式的参数。若不能得出符合要求的正变换公式的参数,考虑上述确定的具有次优压缩效果的数据类型正变换形式,重新确定正变换公式的参数。
[0042] 3)若能确定具体的正变换公式及其参数,可继续进行,否则中止,不适用本压缩方法。
[0043] (3)数据正变换
[0044] 1)将数据读入内存,处理数据比较便利。
[0045] 2)依据确定的数据类型正变换形式和数据正变换公式,对待压缩数据进行数据变换。
[0046] (4)生成二进制格式数据文件
[0047] 二进制格式文件存储量明显小于ASCII格式,选择二进制格式表达和存放数据。按具体二进制格式文件的要求,如JPEG、TIFF和ENVI格式文件,设置数据类型和单元长度等参数,把数据生成为二进制格式文件。
[0048] (5)登记压缩标志
[0049] 将变换前后的数据类型、单元长度、变换函数及其参数等信息登记于头文件或者文件头里,或者标记在文件名里,或者记忆在软件中,利于解压缩过程恢复数据。
[0050] 压缩标志规定如下:O##N$$_FM**…*,其中O、N表示数据压缩前后的数据类型,具体为U--无符整型、I--有符整型、F--浮点型和C--复数型;##、$$表示数据压缩前后的数据类型单元字节数,双位表示,不足位用0补齐;_代表标志间隔符;FM表示反变换公式开始标志,具体为F1--数据类型正变换方式①~⑤项的反变换公式开始标志和F2--数据类型正变换方式⑥、⑦项的反变换公式开始标志;**…*表示反变换公式,F1类型反变换函数为f’(Da),其线性关系反变换公式为Db=(Da-k0)/k,F2类型反变换函数为f’(Das)+if’(Dax),其线性关系反变换公式为Db=(Das-k0s)/ks+i(Dax-k0x)/kx,反变换公式应按实际表达形式书写。
[0051] 所述的数据解压缩方法为根据压缩标志确定数据类型反变换形式和数据反变换公式,进行数据反变换,把恢复的数据存放在二进制格式文件。数据类型反变换形式是上述压缩过程确定的数据类型正变换的逆过程形式,数据反变换公式是上述压缩过程确定的数据正变换函数的反变换函数及其参数。
[0052] 本发明的数据压缩方法是基于数据二进制格式的表达和存放方式,变更为单元长度小的数据类型,存放变换后的数据,减少数据存储量,达到压缩目的,并非普遍适用于数值型的所有数据压缩。在满足数据精度要求和数据表达范围的条件下,必须找到变换后的数据类型单元长度小于变换前的数据类型单元长度为关键,否则,不必要使用本压缩方法。其次,数据类型变换及数据变换需考虑原来数据的精度,若降低数据精度则需确定其是否妥当,以及变换后的数据表达范围是否容纳所有变换后的数据。在数据应用中,单元长度大的浮点型变换为单元长度小的整型、单元长度大的整型变换为单元长度小的整型等方式较为多见。
[0053] 使用本发明的数据压缩方法,在确定数据类型变换和数据变换的具体方式过程中,或者尽可能采用较高效率的压缩方式时,可能出现变换后的少量数据元素超出数据类型单元表达的范围,此现象称为数据溢出。为解决数据溢出现象,推荐使用数据流纠正方式和文件纠正方式。这两种方式在处理溢出数据时都有共同之处:①在压缩标志栏中若无数据溢出纠正标志为无效;②单元最大值为上溢出标志,单元最小值为下溢出标志,不作为常规数据表示;③在数据溢出之处以上溢出或下溢出标志代替,作为数据溢出标志。这两种方式不同之处:①数据流纠正方式在数据溢出标志后紧接着记录溢出数据余数,溢出数据=单元最大值+余数,或者单元最小值+余数;②文件纠正方式在头文件或者文件头里记录数据纠正的相关内容,以双单元上(下)溢出标志作为文件纠正标志,有四种组合形式:i)双单元下溢出标志表示,1单元溢出数据位置和1单元溢出数据余数形式;ii)下溢出、上溢出标志表示,1单元溢出数据位置和2单元溢出数据形式;iii)上溢出、下溢出标志表示,2单元溢出数据位置和1单元溢出数据余数形式;iv)双单元上溢出标志表示,2单元溢出数据位置和2单元溢出数据形式。1单元溢出数据=单元最大值+余数,或者单元最小值+余数;2单元溢出数据=单元最大值*第一单元值+第二单元值,或者单元最小值*第一单元值+第二单元值;1单元溢出数据位置=本单元值;2单元溢出数据位置=单元最大值*第一单元值+第二单元值。有了溢出数据位置和溢出数据值可对溢出数据作出恢复。关于头文件或者文件头的记录,对于JPEG、TIFF等标准格式文件,充分利用保留空间添加信息,补充文件纠正标志、纠正数据(溢出数据位置和溢出数据值)在文件中的开始偏移量;对于非标准格式文件,在头文件或者文件头里记录文件格式、版本号、制作者、数据格式,以及文件纠正标志、纠正数据(溢出数据位置和溢出数据值)等信息在文件中的开始偏移量,在数据格式栏里记录数据格式等数据属性信息,记录数据集合在文件中的开始偏移量。在头文件或者文件头里各类记录信息,如开始偏移量等,按变换后的单元长度计算。这样,就可以查找到文件中的纠正数据和集合数据。
[0054] 数据溢出处理方法是为了纠正个别数据元素不适应本发明的数据压缩和解压缩方法而采取的特殊处理措施。数据流纠正方式和文件纠正方式在应用上既有共通又有差异。“数据流”是特指以数据元素为单元的数据传输。数据流纠正方式是为了“数据流”而专门设计,即实时数据元素经过发送端按数据流纠正方式处理溢出数据和压缩后,传输到接收端,再由接收端按数据流纠正方式恢复溢出数据和实时解压缩,后生成数据文件。该方式也适用一般文件形式的数据压缩和解压缩,对于特殊文件形式则不适用,例如像素矩阵的图像文件,在像素数据元素之间没有多余的空间来记录数据溢出信息,否则,插入的数据元素会影响到图像的表达。文件纠正方式普遍适用于文件形式的数据压缩和解压缩,处理数据溢出的量级大于数据流纠正方式,对于“数据流”则不适用,仅把溢出数据元素换成数据溢出标志(单元最大值或单元最小值),有利于常用工具对数据的定性分析。
[0055] 面向具体的数据应用,针对不同的数据源,将本发明的数据压缩及解压缩方法,编制成一个独立的应用软件,或者嵌入在一个应用软件中,将该软件安装在计算机上,当需要时运行该软件,执行含压缩、解压缩的数据处理,或者数据产品制作,或者数据传输等设计任务。
[0056] 本发明具有的有益效果:
[0057] (1)方式基本不变、兼容性好、易实现。基于数据类型变换的基础上,数据根据新的数据类型要求而改变,在表达方式上变化有限,无需系统特别支持,数据便可使用。在方式上有一定的需求,与其它压缩方式可兼容共存;并且,在使用上简便,在实现上简单。
[0058] (2)压缩率高、存储量小。在适用条件的数据压缩中,数据类型单元长度可减少到原来的二分之一或者四分之一或者八分之一,数据存储量相应减少到原来的二分之一或者四分之一,甚至八分之一,数据储存量明显减少,数据压缩率高。
[0059] (3)速度快。由于数据压缩高效,数据处理量相应减少到原来的二分之一或者四分之一,甚至八分之一,其相应的任务运算速度和传输速度明显加快。

附图说明

[0060] 图1是本发明的压缩方法流程图。

具体实施方式

[0061] 下面用2个实施例对本发明做进一步说明。
[0062] 实施例1:HJ-1卫星CCD数据预处理后数据压缩应用
[0063] 将编制有本发明的数据压缩及解压缩方法的应用软件安装在计算机上,然后在需要压缩数据时运行该软件。
[0064] (1)确定数据类型正变换形式:HJ-1卫星CCD数据为二级产品,数据文件为TIFF格式4波段数据,数据类型为单字节无符整型。数据预处理(根据定标计算辐射亮度值、根据公式计算表观反射率)以后,数据由单字节无符整型改变为单精度浮点型。单精度浮点型转变为整型,使用单字节无符整型保存数据,符合原来数据精度的要求。
[0065] (2)确定数据正变换公式:采用线性数据正变换公式Da=k*Db+k0,有利于使用工具对图像识别和数据运算(如NDVI【归一化植被指数】值)。通过计算得到,k=250、k0=0时,使用变换函数Da=k*Db+k0,正变换后的数据符合在单字节无符整型表达范围内。
[0066] (3)数据正变换和生成二进制格式数据文件:根据数据变换公式Da=k*Db+k0和参数k=250、k0=0变换数据,设置数据类型和单元长度等参数,把数据生成为二进制格式文件,具体为ENVI标准格式文件。
[0067] (4)登记压缩标志:主要对数据变换前后的数据类型、单元长度、变换函数及其参数等压缩标志登记,本压缩过程采取单精度浮点型变换为单字节无符整型,参数k=250、k0=0,因此,在头文件里相应增加F04U01_F1Da/250标志项。
[0068] 选用该景HJ-1卫星CCD二级产品,其数据为4波段TIFF格式文件,数据存储量为890MB(不含文件头信息),预处理后,若采用4字节单精度浮点型表达,数据存储量是原来的4倍,即3.56GB。通过数据变换后,采用单字节无符整型表达,数据存储量保持原有数量,相应减少到单精度浮点型方式的四分之一,数据压缩率高。生成的数据压缩文件里的数据可直接调用,可转成其它标准文件;数据压缩文件,或者经独立工具再压缩后,用于储存,或者传送。CCD数据经该预处理后,无量纲,在图像识别和数据运算前无需恢复到压缩前的数据,使用多波段数据组之间相对数据即可。若对压缩数据文件进行解压缩,只需读取压缩标志F04U01_F1Da/250,根据压缩标志确定数据类型反变换形式和数据反变换公式及其参数,进行数据反变换,把恢复的数据生成为二进制格式文件。
[0069] 实施例2:某自动气象站气温数据压缩应用
[0070] 将编制有本发明的数据压缩及解压缩方法的应用软件安装在计算机上,然后在需要压缩数据时运行该软件。
[0071] (1)确定数据类型正变换形式:某自动气象站历史上最高气温为夏天41.3摄氏度,最低为冬天-23.8摄氏度,每天每小时定时发回1组气温数据,包括最高、平均和最低气温数据。采集到的数据保留1个小数位,为单精度浮点型,单元长度为4字节。该数据含正负数,若提升为整型,单字节整型数据表达范围未能包容全部数据,确定变换为双字节有符整型,其表达范围充足,符合原来数据精度的要求。
[0072] (2)确定数据正变换公式:采用线性关系变换公式Da=k*Db+k0,参数k=10、k0=0,正变换后的数据符合在双字节有符整型表达范围内。
[0073] (3)数据正变换:设置存储单元的数据类型和单元长度参数为双字节有符整型,根据数据正变换公式Da=k*Db+k0和参数k=10、k0=0变换数据。在数据变换完成后,自动气象站便可将变换后的单元气温数据实时传送给中心站。
[0074] (4)记忆压缩标志:专用软件在设计时记忆数据变换前后的数据类型、单元长度、变换函数及其参数等压缩标志信息(即F04I02_F1Da/10)。
[0075] (5)数据反变换和生成二进制格式数据文件:中心站根据软件记忆的压缩标志信息F04I02_F1Da/10,确定数据类型反变换形式和数据反变换公式及其参数,进行数据反变换,把恢复的数据存放在二进制格式文件。
[0076] 该站气温数据变换后,采用双字节有符整型表达,数据存储量相应减少到单精度浮点型方式的二分之一。1年内每天每小时1组最高、平均和最低气温数据,数据存储量从105.12KB降为52.56KB,数据压缩率高。该站把本数据压缩及解压缩方法应用于与中心站的数据传输,减少了一半的数据通信量。