CN103346800A - 一种数据压缩方法及装置 - Google Patents
一种数据压缩方法及装置 Download PDFInfo
- Publication number
- CN103346800A CN103346800A CN2013102873436A CN201310287343A CN103346800A CN 103346800 A CN103346800 A CN 103346800A CN 2013102873436 A CN2013102873436 A CN 2013102873436A CN 201310287343 A CN201310287343 A CN 201310287343A CN 103346800 A CN103346800 A CN 103346800A
- Authority
- CN
- China
- Prior art keywords
- data
- positional information
- tagged word
- word
- described data
- 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
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种数据压缩方法及装置,所述方法包括:获取经行程长度编码RLE压缩后的数据;判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息,并对所述位置信息进行编码;编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果,所述数据流由所述数据剔除特征字后获得。如此方案就能尽量减少特征字占用的字节数,从而在RLE压缩数据的基础上进一步降低压缩率,优化压缩效果。
Description
技术领域
本发明涉及一种数据压缩方法及装置。
背景技术
数据压缩是指在不丢失信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率的一种技术方法。RLE(Run-Length Encoding,行程长度编码)是一种简单的非破坏性资料压缩法,其好处是编码和解码过程简单,速度非常快,编码原理简单介绍如下:将原始的一元数据转换为二元表示,即从<element>转换到<element,number>,其中,element表示数据元,number表示对应的数据元重复的次数。如数据AAAAAABBBBBCCCCDE经RLE编码后为FA6FB5FC4DE,其中,A6表示AAAAAA,F是特征字,用来区分哪些数据是需要RLE解码的,如FC4在解码时,即会将F后面的C4解码为数据元CCCC;D则直接解码为数据元D。上述示例中,编码前数据占用17个字节,编码后占用11个字节,实现了数据压缩的目的。
由RLE压缩算法的原理可知,其主要是针对重复出现的数据元进行的压缩编码,也就是说重复的数据元越多,RLE编码的压缩效果就越好,也即压缩率(指文件压缩后的大小与压缩前的大小之比)越小,但是在实际应用中却可能因以下情况导致RLE压缩之后的数据量没有减少,反而增加:
当F作为特征字时,为避免混淆,其就不能再作为数据元单独出现,否则在解码过程就无法准确区分出F是数据元还是特征字,在这种情况下,就要用替代字G0来表示数据元F,相应地用G1来表示数据元G。如此,对于数据AAAAAABBBBBCCCCDEF来说,经RLE编码后为FA6FB5FC4DEG0,数据在编码前占用18个字节,编码后占用13个字节,虽然压缩率有所提高,但还是实现了数据压缩的目的。但是,对于数据ABCDEFG来说,经RLE编码后为ABCDEG0G1,数据编码前占用7个字节,编码后占用9个字节,压缩后数据量反而增加了,并未实现数据压缩的目的。
发明内容
本发明实施例提供一种数据压缩方法及装置,进一步降低RLE压缩数据的压缩率,提高数据压缩效果。
为此,本发明提供如下技术方案:
本发明实施例的数据压缩方法,包括:
获取经行程长度编码RLE压缩后的数据;
判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息,并对所述位置信息进行编码;
编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果,所述数据流由所述数据剔除特征字后获得。
优选的,统计不同个数的特征字对应的数据元在数据流中的位置分布情况,并为每种位置分布情况设置一个索引值,建立索引数据库;则
所述对所述位置信息进行编码,包括:
将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息,确定所述数据元在所述数据流中的当前位置分布情况;
查找所述索引数据库,获得所述当前位置分布情况对应的索引值,将所述索引值作为所述编码后的位置信息。
优选的,建立数据元的位置信息与预设个数的比特位之间的对应关系;则
所述对所述位置信息进行编码,包括:
将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息,并将该位置信息对应的比特位标识为具有特征字的状态,将标识后的预设个数的比特位作为所述编码后的位置信息。
优选的,所述对所述位置信息进行编码,包括:
将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息,确定所述数据元在所述数据流中的当前位置分布情况;
分别利用预设个数的比特位表示所述数据包含的特征字个数以及所述当前位置分布情况,作为所述编码后的位置信息。
优选的,所述方法还包括:
在所述获取经行程长度编码RLE压缩后的数据之后,
判断所述数据中是否包含替代字,如果包含替代字,则将所述替代字转换为特征字。
优选的,当所述数据压缩方法应用于CAN总线数据发送时,利用数据长度码DLC表示所述数据是否经所述数据压缩方法处理:
如果DLC≤8,则表示CAN总线发送的数据未经所述数据压缩方法处理;
如果DLC>8,则表示CAN总线发送的数据经过所述数据压缩方法处理。
对应地,本发明实施例还提供一种数据压缩装置,包括:
获取单元,用于获取经行程长度编码RLE压缩后的数据;
特征字判断单元,用于判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息;
编码单元,用于对所述特征字判断单元记录的位置信息进行编码;
组装单元,用于将编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果,所述数据流由所述数据剔除特征字后获得。
优选的,统计不同个数的特征字对应的数据元在数据流中的位置分布情况,并为每种位置分布情况设置一个索引值,建立索引数据库;则所述编码单元包括:
第一转换单元,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
第一确定单元,用于根据所述第一转换单元的转换结果确定所述数据元在所述数据流中的当前位置分布情况;
查找单元,用于查找所述索引数据库,获得所述当前位置分布情况对应的索引值,将所述索引值作为所述编码后的位置信息。
优选的,建立数据元的位置信息与预设个数的比特位之间的对应关系;则所述编码单元包括:
第二转换单元,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
标识单元,用于将所述第二转换单元转换确定的位置信息对应的比特位标识为具有特征字的状态,将标识后的预设个数的比特位作为所述编码后的位置信息。
优选的,所述编码单元包括:
第三转换单元,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
第二确定单元,用于根据所述第三转换单元的转换结果确定所述数据元在所述数据流中的当前位置分布情况;
编码子单元,用于分别利用预设个数的比特位表示所述数据包含的特征字个数以及所述当前位置分布情况,作为所述编码后的位置信息。
优选的,所述装置还包括:
替代字判断单元,用于在所述获取单元获取到RLE压缩后的数据之后,判断所述数据中是否包含替代字,如果包含替代字,则将所述替代字转换为特征字。
本发明的数据压缩方法及装置公开了以下技术效果:
采用本发明技术方案,记录RLE压缩数据中特征字的位置信息,并对该位置信息进行编码,尽量减少特征字占用的字节数,以在RLE压缩数据的基础上进一步降低压缩率,优化压缩效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本发明数据压缩方法实施例1的流程图;
图2是本发明中特征字位置信息编码实施例1的流程图;
图3是本发明中特征字位置信息编码实施例2的流程图;
图4是本发明中特征字位置信息编码实施例3的流程图;
图5是本发明数据压缩方法实施例2的流程图;
图6是现有技术中下载***的结构示意图;
图7是利用本发明方案后下载***的结构示意图;
图8是本发明数据压缩装置实施例1的示意图;
图9是本发明中编码单元实施例1的示意图;
图10是本发明中编码单元实施例2的示意图;
图11是本发明中编码单元实施例3的示意图;
图12是本发明数据压缩装置实施例2的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
本发明实施例提供的数据压缩方法及装置,是对经RLE(Run-LengthEncoding,行程长度编码)压缩后的数据的进一步编码压缩,不仅可以再次降低压缩率,还可以解决RLE压缩后数据量可能增大的问题,或者也可理解为本发明的压缩方法是对RLE压缩方法的改进,既延续了RLE压缩方法编解码过程简单的优势,优化了RLE压缩率,又解决了RLE压缩方法可能会增大数据量的劣势。下面对本发明所提供的压缩方法进行解释说明。
参见图1,示出了本发明数据压缩方法实施例1的流程图,可包括:
步骤101,获取经行程长度编码RLE压缩后的数据。
如上文介绍,RLE压缩较为适合对重复出现的数据元进行压缩编码,且重复的数据元越多,压缩率就越小。为了便于接收方的解码过程,在进行压缩编码之前,要先扫描待编码数据,从中确定一个使用最少(或者可理解为出现频率最低)的数据元作为特征字。如,对于待编码数据AAAAAABBBBBCCCCDE即可使用F作为特征字。由RLE编码的原理可知,<AAAAAA>可被编码为<A,6>,为了便于接收方解码,AAAAAA最终被编码表示为FA6,对应地,BBBBB被编码表示为FB5,CCCC被编码表示为FC4,而D和E则分别被编码为D、E,如此,上述待编码数据经RLE编码后为FA6FB5FC4DE,该数据即为本步骤获取到的RLE压缩后的数据。
此处需要说明的是,发送方应将确定出的特征字通知给接收方,以便接收方能够识别特征字并利用特征字准确完成解码过程。
步骤102,判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息,并对所述位置信息进行编码。
由上述示例可知,虽然待编码数据量从17个字节降至11个字节(压缩率为64.7%),实现了数据压缩的目的,但是,每个特征字在编码后的数据中还是会占用1个字节,如此也就限制了压缩率,无法使数据压缩效果达到最佳,且特征字越多对压缩效果的影响越大。考虑到这一点,本发明即可通过解决特征字编码的问题来进一步降低压缩率,提高压缩效果。
在步骤101获取到RLE压缩的数据之后,先扫描该数据,判断其中是否包含有特征字,如果包含特征字,则记录该特征字所在位置,相应地,也就知晓了该特征字对应的数据元是谁(如上述示例中的FA6,特征字F对应的数据元是A);然后再对特征字所在的位置信息进行编码,以此来降低特征字占用的字节数,达到进一步压缩的目的。
对于本步骤中对特征字位置信息编码的过程此处暂不详述。
步骤103,编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果,所述数据流由所述数据剔除特征字后获得。
经步骤102之后,即可重新组装编码后的位置信息以及剔除了特征字的数据流,形成步骤101获取的RLE压缩数据的压缩结果。其中,数据流由剔除了特征字的数据元element及其对应的数目number顺序组成,对于RLE压缩数据FA6FB5FC4DE来说,剔除了特征字之后的数据流为A6B5C4DE,为实现数据的无损压缩,这些信息是不能被丢失或损坏的。另外,将编码后的位置信息作为首字节,亦是便于接收方能据其实现对数据流的正确解码,还原出原始待编码数据。
步骤102中对特征字的位置信息进行编码的过程可通过以下三种方式实现,下面进行解释说明。
第一种实现方式
在本方式中,需要提前建立一个索引数据库,具体过程可体现为:统计不同个数的特征字对应的数据元在数据流中的位置分布情况,并为每种位置分布情况设置一个索引值,建立索引数据库。
下面以8字节数据为例,对建立索引数据库的过程进行简单介绍。
RLE压缩数据可能会包含不同个数的特征字,如8字节数据可能会包含1~4个特征字,这样,即可统计包含不同个数特征字时,特征字对应的数据元在数据流中的位置分布情况。
(1)如用0~7来表示数据的8个字节的位置编号,则统计情况如下:
包含1个特征字时,特征字对应的数据元在数据流的位置分布情况为:0(即特征字对应的数据元位于编号为0的字节上,下述相同不再赘述);1;2;3;4;5;6;7;
包含2个特征字时,特征字对应的数据元在数据流的位置分布情况为:0、2(即2个特征字对应的数据元分别位于编号为0、4的字节上,下述相同不再赘述);0、3;0、4;0、5;0、6;0、7;1、3;1、4;1、5;1、6;1、7;2、4;……;5、7;
包含3个特征字时,特征字对应的数据元在数据流的位置分布情况为:0、2、4;0、2、5;0、2、6;0、2、7;0、3、5;0、3、6;0、3、7;0、4、6;0、4、7;0、5、7;1、3、5;1、3、6;……;3、5、7;
包含4个特征字时,特征字对应的数据元在数据流的位置分布情况为:0、2、4、6;0、2、4、7;1、3、5、7。
(2)为每种位置分布情况分配一个索引值,建立位置分布情况与索引值间的一一对应关系。如:
索引值0(可通过8比特表示为00000000)—位置分布情况0;索引值1(可通过8比特表示为00000001)—位置分布情况1;索引值2—位置分布情况2;……;索引值7—位置分布情况7;索引值8—位置分布情况0、2;索引值9—位置分布情况0、3;索引值10—位置分布情况0、4;以此类推,直至为每种位置分别情况设置唯一对应的索引值。
需要说明的是,上述过程仅是以8字节数据为例进行的举例说明,对于不同数目的字节来说,位置分布情况的数目也有所不同,对应地设置的索引的数目也会有所不同。另外,在建立位置分布情况与索引值间的对应关系时,除了本发明所举示例之外,还可采用其它方式,只要使位置分布情况与索引值一一对应即可。
建立上述索引数据库之后,即可采用如下方式对记录的位置信息进行编码,参见图2,示出了本发明对特征字位置信息编码实施例1的流程图,可包括:
步骤201,将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息,确定所述数据元在所述数据流中的当前位置分布情况。
步骤202,查找所述索引数据库,获得所述当前位置分布情况对应的索引值,将所述索引值作为所述编码后的位置信息。
仍以上述RLE编码后为FA6FB5FC4DE的数据为例,经扫描发现存在3个特征字F,分别对应数据元A、B、C,则剔除特征字F之后的数据流为A6B5C4DE,参见表1示出的这些特征字对应的数据元在数据流中的位置编号。其中,数据元A的位置编号为0,数据元B的位置编号为2,数据元C的位置编号为4,也就是说,特征字的位置信息转换为特征字对应的数据元在数据流中的位置信息为0、2、4,如此也就确定出了当前位置分布情况为0、2、4。
在确定好当前位置分布情况之后,就可以查找索引数据库,获得该当前位置分布情况对应的索引值,该索引值即为特征字位置信息的编码结果。
表1
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
A | 6 | B | 5 | C | 4 | D | E |
一般情况下,在建立索引数据库时,位置分布情况是被逐一统计确定的,不会出现遗漏,故,若未在数据库中查找到当前位置分布情况,则可初步判定RLE压缩数据的过程、剔除特征字的过程、或者特征字位置信息转换为数据元位置信息的过程中出现错误,可进行相应地纠错处理。
另外,需要说明的是,上述示例中,索引值可通过1个字节(等于8比特)来表示,这样编码后的位置信息可以只占1个字节,再加上数据流占用的8个字节,按照本发明方法压缩后的数据量为9个字节,相比原始待编码数据占用的17个字节,压缩率为52.9%,在RLE压缩方法的基础上进一步降低了压缩率,提高了压缩效果。
第二种实现方式
考虑到对特征字的位置进行编码实质上就是要用一种方式来表示哪个位置上出现了特征字或者哪个数据元对应有特征字,因此本方式可先建立数据元的位置编号(即数据元所在字节的编号)与预设比特位间的对应关系,通过改变比特位状态的方式来反映其对应的数据元是否具有特征字。
仍以上述8字节数据为例,字节的位置编号依次为0~7,可设置预设个数为8的比特位0~7与之相对应,如,用比特位0表示位置编号为0的数据元是否具有特征字,以此类推,不再赘述。
建立上述对应关系之后,即可采用如下方式对记录的位置信息进行编码,参见图3,示出了本发明对特征字位置信息编码实施例2的流程图,可包括:
步骤301,将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息。
步骤302,将该位置信息对应的比特位标识为具有特征字的状态,将标识后的预设个数的比特位作为所述编码后的位置信息。
仍以上述RLE编码后为FA6FB5FC4DE的数据为例,经扫描发现存在3个特征字F,分别对应数据元A、B、C,则剔除特征字F之后的数据流为A6B5C4DE,由表1所示可知,本示例中特征字对应的数据元的位置编号为0、2、4,这样,即可将这三个位置编号对应的比特位的状态标识为具有特征字,如,用“1”表示具有特征字,用“0”表示不具有特征字,则标识后的结果可参见表2所示,即可用10101000这8个比特位来表示编码后的位置信息。
表2
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
将表2所示的8个比特位作为首字节,与数据流重组后发送给接收方,接收方即可解析出,后续数据流中位置编号为0、2、4的数据元均对应有特征字,从而正确解码还原出原始待编码数据。
同样地,本示例中压缩后的数据量为9个字节,相比原始待编码数据占用的17个字节,压缩率为52.9%,也实现了在RLE压缩方法的基础上进一步降低压缩率的目的。
第三种实现方式
参见图4,示出了本发明对特征字位置信息编码实施例3的流程图,可包括:
步骤401,将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息,确定所述数据元在所述数据流中的当前位置分布情况。
步骤402,分别利用预设个数的比特位表示所述数据包含的特征字个数以及所述当前位置分布情况,作为所述编码后的位置信息。
结合上述两种位置信息编码方式,本发明还提供了第三种实现方式,本方式中,不仅要在编码结果中显示特征字对应的数据元的位置,还要显示包含几个特征字。
仍以上述8字节数据为例,可通过2个比特位表示含有几个特征字(因每个特征字后面都要跟一个字节的数据元element和一个字节的数目number,共占用3个字节,因此8字节数据最多只能包含4个特征字,利用2个比特位就能表示。如,比特位为00表示包含1个特征字,01表示包含2个特征字,10表示包含3个特征字,11表示包含4个特征字),通过6个比特位表示特征字对应的数据元的位置(可采用上文中的方式一或二的方案来体现数据元的位置信息,此处可不做限定,亦不做赘述),如此处理之后的8个比特位亦可作为特征字的位置编码结果。
上文中,利用2个比特位表示特征字数目,6个比特位表示数据元在数据流的位置仅是一种示例,在具体应用中可根据实际需求预设不同的比特位个数,本发明对此不做限定。
参见图5,示出了本发明数据压缩方法实施例2的流程图,可包括:
步骤501,获取经行程长度编码RLE压缩后的数据。
步骤502,判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息,并对所述位置信息进行编码。
步骤501、502与步骤101、102相同,此处不再赘述。
步骤503,判断所述数据中是否包含替代字,如果包含替代字,则将所述替代字转换为特征字。
由RLE的压缩原理可知,在选定特征字之后,特征字就不能再作为数据元出现,而是要用替代字表示,如上述示例中在选定特征字F之后,即可用替代字G0来表示数据元F。因此,待编码数据AAAAAABBBBBCCCCDEF即被编码为FA6FB5FC4DEG0(压缩率为72.2%),则步骤502剔除特征字之后的数据流为A6B5C4DEG0。针对该数据流确定出的当前位置分布情况为0、2、4,可在此基础上完成对特征字位置信息的编码,编码后的数据量为10个字节,相比原始待编码数据占用的18个字节,压缩率为55.5%,在RLE压缩方法的基础上降低了压缩率。
考虑到利用本发明方案处理过的数据流中不会再包含特征字,故也就不需再使用替代字来表示特征字,因此,还可在获取到RLE压缩数据之后,扫描该数据判断其是否包含替代字,如果包含,则将替代字转换为特征字,在本示例中即将G0转换为F,如此处理(剔除特征字且转换替代字)之后,数据流为A6B5C4DEF,占用9个字节,相比原始待编码数据占用的18个字节,压缩率为50%,再次降低了本发明方案的压缩率。
需要说明的是,上述转换替代字的方案除了可进一步降低压缩率之外,还可解决现有RLE压缩方法可能带来的数据量增多的缺陷。如,特征字为F,且用G0表示F,用G1表示G的前提下,待编码数据ABCDEFG经RLE编码后为ABCDEG0G1,数据量从7个字节增加至9个字节。若采用本发明方案,经扫描判断不包含特征字,但是包含替代字,故可将替代字转换为特征字,即将G0转换为F,如此情况下也就可以将G1转换为G,使处理后的数据量保持为7个字节,至少可避免RLE压缩后的数据量超过原始待编码数据的数据量。
另外,还要说明的是,在获得RLE压缩数据之后,可如图5所示,先扫描判断是否存在特征字,再判断是否存在替代字;或者,还可先扫描替代字再扫描特征字;亦或者在数据处理能力允许的情况下,还可同时扫描特征字和替代字,本发明对此可不做限定。
步骤504,编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果。
步骤504与步骤103相类似,此处不再赘述。所不同的是,步骤103中的数据流是由数据剔除特征字后获得,步骤504中的数据流是由数据剔除特征字,并转换替代字之后获得。
作为RLE压缩方法的一种具体应用,可应用到汽车计算机控制***中,例如,在整车利用CAN(Controller Area Network,控制器局域网络)总线进行可靠性和纠错检查时,因上位机要将检测运行程序通过CAN总线下载到下位机中,运行程序中含有大量的重复数据,故可利用RLE对其进行压缩后再下载传输。
现有技术中,参见图6所示结构图,在检测之前,上位机要先通过CAN总线经微处理器将运行程序下载保存到存储器中;在检测时,微处理器从存储器中读取运行程序并下载到FPGA(Field-Programmable Gate Array,现场可编程门阵列)执行检测过程。如此下载过程就存在下载缓慢,在线下载实现困难的问题,另外,将运行程序下载到下位机的存储器中保存还存在一定的安全隐患,并且利用存储器保持FPGA的运行代码,还增加了PCB的布线难度,提高了成本。
采用本发明方案之后,可进一步降低RLE压缩方法的数据压缩率,使得运行程序的在线下载成为可能,如此也就不需在检测之前先将运行程序保存到存储器中,故采用本发明方案可简化现有技术的***,具体可参见图7所示结构图。省去了存储器一方面可以节省***成本,另一方面还简化了PCB布线难度,且这种在线下载的方式还能避免运行程序保存在下位机所带来的安全隐患。
下面以CAN总线发送数据为例,介绍下本发明方法的数据压缩过程。
由CAN总线的数据传输格式可知,可在一次数据发送过程中传输8字节数据,根据上文对本发明方案的介绍可知,特征字位置信息的压缩结果要占用1个字节,故采用本发明方案后,一次数据发送过程可携带7字节的数据流。
另外,由CAN总线的数据传输格式还可知,其中的数据长度码DLC(DataLength Code)用来标识后续要发送数据的字节数,而在本发明方案中,还可通过DLC标识发送的数据是否经本发明方案处理,如,DLCDLC≤8,表示未经本发明方法处理;DLC>8,表示经过本发明方法处理。
数据压缩过程如下:
获取经RLE压缩后的数据,并顺序扫描该数据,判断其是否包含特征字以及替代字,然后分情况处理。
情况1,如果包含特征字,则说明需要利用本发明方法对特征字的位置信息进行编码。
针对有无替代字,情况1还可具体体现为两种子情况:第一种是包含特征字但不含替代字,此时数据流由RLE压缩数据剔除特征字后获得;第二种是既包含特征字又包含替代字,此时数据流由RLE压缩数据剔除特征字,并转换替代字后获得。下面以较为复杂的第二种子情况进行举例说明。
如,待编码数据为AAAAAABBBBBCCCCDFFF,特征字为D,数据元D的替代字为G0,则RLE压缩数据为DA6DB5DC4G0DF3(14个字节),剔除特征字并转换替代字之后的数据流为A6B5C4DF3(9个字节),具体可参见表3示出的数据元在数据流中的位置编号。
表3
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
A | 6 | B | 5 | C | 4 | D | F | 3 |
因特征字位置编码结果需要占用1个字节,故一次发送过程中仅能发送7字节数据。在第一次发送过程中顺序取到的7个字节为A6B5C4D,如果采用上文中位置信息编码的第二种实现方式,则预设比特位(1个字节等于8比特,可选择低7位或者高7位来表示特征字位置信息的编码结果)可表示为1010100,将其作为首字节与A6B5C4D重组为RLE压缩数据的压缩结果,进行第一次数据发送。为了使接收方识别出本次发送的数据为经过本发明压缩方法处理的数据,可将DLC设置为大于8的任一数值,如DLC=9。
完成第一次数据发送之后,还剩余F3两个字节,且数据元F具有特征字,故在这种情况下,仍可利用本发明方案对特征字位置信息进行压缩处理,表示为1000000,并将其作为首字节与剩余的2个字节F3重组为RLE压缩数据的压缩结果,进行第二次数据发送,与此同时还要设置DLC的取值,当然DLC也应大于8。
DLC由4比特构成,取值范围可为0~15,其中,可用来表示数据经过本发明方法处理的取值范围为9~15。另外,由上文第二次数据发送过程可知,本发明方案处理后的压缩结果至少要占用3个字节(编码后的位置信息、数据元element、对应的数目number),故可设置DLC=10表示数据被压缩且长度为3,DLC=11表示数据被压缩且长度为4,DLC=12表示数据被压缩且长度为5,DLC=13表示数据被压缩且长度为6,DLC=14表示数据被压缩且长度为7,DLC=15表示数据被压缩且长度为8。
之所以使DLC取不同值是想要使接收方能明确知晓,当前接收到的数据中有几个字节是有效字节,有几个字节是无效的填充字节,如上文第二次数据发送过程中DLC=10,这样接收方接收到8字节数据(1字节编码后的位置信息、7字节数据流)后,即可知晓其中只有3个字节是有效字节,故在解码出前3个字节后即可终止解码过程,如此还可提高接收方的解码效率。
另外,再参见以下示例:针对同样是9个字节的数据流A6B5C4DEF来说,第一次数据发送过程与上述示例相同,由1字节的编码后的位置信息和7字节的数据流A6B5C4D构成,但是在第二次数据发送过程中,剩余EF两个字节,均不是具有特征字的数据元,如此就可以不采用本发明方法进行压缩处理,可直接进行数据发送,此时DLC可设置为实际的数据长度2,即DLC=2。
情况2,如果不包含特征字,则说明可以不利用本发明方法对特征字的位置信息进行编码。
这种情况下,如果数据中存在替代字,则可将替代字转换为特征字,否则可不做处理。如,待编码数据为ABCDEFGHI,特征字为F,数据元F的替代字为G0,数据元G的替代字为G1,则RLE压缩数据为ABCDEG0G1HI(11个字节),转换替代字之后的数据流为ABCDEFGHI(9个字节),因无需编码特征字的位置信息,故一次发送过程中能发送8个字节的数据流。在本示例中,第一次数据发送过程发送的数据流为ABCDEFGH,此时可设置DLC=8;第二次数据发送过程发送的数据为I,不足8个字节,可将DLC设置为实际的数据长度1,即DLC=1。
参见图8,示出了本发明数据压缩装置实施例1的示意图,可包括:
获取单元601,用于获取经行程长度编码RLE压缩后的数据;
特征字判断单元602,用于判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息;
编码单元603,用于对所述特征字判断单元记录的位置信息进行编码;
组装单元604,用于将编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果,所述数据流由所述数据剔除特征字后获得。
与上文中特征字位置信息编码方法相对应的,本发明的编码单元也具有三种可实现方式,现简单介绍如下。
统计不同个数的特征字对应的数据元在数据流中的位置分布情况,并为每种位置分布情况设置一个索引值,建立索引数据库。参见图9,示出了编码单元实施例1的示意图,可包括:
第一转换单元701,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
第一确定单元702,用于根据所述第一转换单元的转换结果确定所述数据元在所述数据流中的当前位置分布情况;
查找单元703,用于查找所述索引数据库,获得所述当前位置分布情况对应的索引值,将所述索引值作为所述编码后的位置信息。
或者,还可先建立数据元的位置信息与预设个数的比特位之间的对应关系,则可参见图10,示出了编码单元实施例2的示意图,可包括:
第二转换单元801,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
标识单元802,用于将所述第二转换单元转换确定的位置信息对应的比特位标识为具有特征字的状态,将标识后的预设个数的比特位作为所述编码后的位置信息。
或者,还可参见图11,示出了编码单元实施例3的示意图,可包括:
第三转换单元901,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
第二确定单元902,用于根据所述第三转换单元的转换结果确定所述数据元在所述数据流中的当前位置分布情况;
编码子单元903,用于分别利用预设个数的比特位表示所述数据包含的特征字个数以及所述当前位置分布情况,作为所述编码后的位置信息。
参见图12,示出了本发明数据压缩装置实施例2的示意图,可包括:
获取单元1001,用于获取经行程长度编码RLE压缩后的数据;
特征字判断单元1002,用于判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息;
替代字判断单元1003,用于在所述获取单元获取到RLE压缩后的数据之后,判断所述数据中是否包含替代字,如果包含替代字,则将所述替代字转换为特征字;
编码单元1004,用于对所述特征字判断单元记录的位置信息进行编码;
组装单元1005,用于将编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果,所述数据流由所述数据剔除特征字后获得。
本发明方案可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明方案,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种数据压缩方法,其特征在于,包括:
获取经行程长度编码RLE压缩后的数据;
判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息,并对所述位置信息进行编码;
编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果,所述数据流由所述数据剔除特征字后获得。
2.根据权利要求1所述的方法,其特征在于,统计不同个数的特征字对应的数据元在数据流中的位置分布情况,并为每种位置分布情况设置一个索引值,建立索引数据库;则
所述对所述位置信息进行编码,包括:
将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息,确定所述数据元在所述数据流中的当前位置分布情况;
查找所述索引数据库,获得所述当前位置分布情况对应的索引值,将所述索引值作为所述编码后的位置信息。
3.根据权利要求1所述的方法,其特征在于,建立数据元的位置信息与预设个数的比特位之间的对应关系;则
所述对所述位置信息进行编码,包括:
将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息,并将该位置信息对应的比特位标识为具有特征字的状态,将标识后的预设个数的比特位作为所述编码后的位置信息。
4.根据权利要求1所述的方法,其特征在于,所述对所述位置信息进行编码,包括:
将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息,确定所述数据元在所述数据流中的当前位置分布情况;
分别利用预设个数的比特位表示所述数据包含的特征字个数以及所述当前位置分布情况,作为所述编码后的位置信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述获取经行程长度编码RLE压缩后的数据之后,
判断所述数据中是否包含替代字,如果包含替代字,则将所述替代字转换为特征字。
6.根据权利要求1-5任一项所述的方法,其特征在于,当所述数据压缩方法应用于CAN总线数据发送时,利用数据长度码DLC表示所述数据是否经所述数据压缩方法处理:
如果DLC≤8,则表示CAN总线发送的数据未经所述数据压缩方法处理;
如果DLC>8,则表示CAN总线发送的数据经过所述数据压缩方法处理。
7.一种数据压缩装置,其特征在于,包括:
获取单元,用于获取经行程长度编码RLE压缩后的数据;
特征字判断单元,用于判断所述数据中是否包含特征字,如果包含特征字,则记录所述特征字的位置信息;
编码单元,用于对所述特征字判断单元记录的位置信息进行编码;
组装单元,用于将编码后的位置信息作为首字节与数据流组装为所述数据的压缩结果,所述数据流由所述数据剔除特征字后获得。
8.根据权利要求7所述的装置,其特征在于,统计不同个数的特征字对应的数据元在数据流中的位置分布情况,并为每种位置分布情况设置一个索引值,建立索引数据库;则所述编码单元包括:
第一转换单元,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
第一确定单元,用于根据所述第一转换单元的转换结果确定所述数据元在所述数据流中的当前位置分布情况;
查找单元,用于查找所述索引数据库,获得所述当前位置分布情况对应的索引值,将所述索引值作为所述编码后的位置信息。
9.根据权利要求7所述的装置,其特征在于,建立数据元的位置信息与预设个数的比特位之间的对应关系;则所述编码单元包括:
第二转换单元,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
标识单元,用于将所述第二转换单元转换确定的位置信息对应的比特位标识为具有特征字的状态,将标识后的预设个数的比特位作为所述编码后的位置信息。
10.根据权利要求7所述的装置,其特征在于,所述编码单元包括:
第三转换单元,用于将所述数据包含的每个特征字的位置信息转换为该特征字对应的数据元在所述数据流中的位置信息;
第二确定单元,用于根据所述第三转换单元的转换结果确定所述数据元在所述数据流中的当前位置分布情况;
编码子单元,用于分别利用预设个数的比特位表示所述数据包含的特征字个数以及所述当前位置分布情况,作为所述编码后的位置信息。
11.根据权利要求7-10任一项所述的装置,其特征在于,所述装置还包括:
替代字判断单元,用于在所述获取单元获取到RLE压缩后的数据之后,判断所述数据中是否包含替代字,如果包含替代字,则将所述替代字转换为特征字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310287343.6A CN103346800B (zh) | 2013-07-08 | 2013-07-08 | 一种数据压缩方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310287343.6A CN103346800B (zh) | 2013-07-08 | 2013-07-08 | 一种数据压缩方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103346800A true CN103346800A (zh) | 2013-10-09 |
CN103346800B CN103346800B (zh) | 2016-10-05 |
Family
ID=49281582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310287343.6A Expired - Fee Related CN103346800B (zh) | 2013-07-08 | 2013-07-08 | 一种数据压缩方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103346800B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105258303A (zh) * | 2015-11-20 | 2016-01-20 | 珠海格力电器股份有限公司 | 空调机组运行数据远程传输控制方法、装置和空调 |
CN105280003A (zh) * | 2015-09-29 | 2016-01-27 | 北京航空航天大学 | 一种路侧向车辆传送交叉口信号灯信息的方法 |
CN105790768A (zh) * | 2014-12-19 | 2016-07-20 | 珠海全志科技股份有限公司 | 数据存储方法和*** |
CN106170760A (zh) * | 2014-07-11 | 2016-11-30 | 华为技术有限公司 | 一种计算数据的预期压缩率的方法及装置 |
CN107294538A (zh) * | 2017-06-09 | 2017-10-24 | 深圳市华星光电技术有限公司 | Oled显示装置的补偿表压缩方法及解压方法 |
US10162747B2 (en) | 2014-10-27 | 2018-12-25 | Phison Electronics Corp. | Data writing method, memory control circuit unit and memory storage apparatus |
CN109561467A (zh) * | 2018-12-27 | 2019-04-02 | 日立电梯(中国)有限公司 | 无线数据处理方法和无线发送、接收设备 |
CN112351107A (zh) * | 2020-11-16 | 2021-02-09 | 百度在线网络技术(北京)有限公司 | 用于编码文件的方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1665303A (zh) * | 2005-03-18 | 2005-09-07 | 清华大学 | 图像/视频编码中变换系数的熵编码方法 |
US20060140496A1 (en) * | 2003-07-01 | 2006-06-29 | Dirk Gandolph | Method for run-length encoding of a bitmap data stream |
US7327289B1 (en) * | 2006-09-20 | 2008-02-05 | Intel Corporation | Data-modifying run length encoder to avoid data expansion |
CN102262547A (zh) * | 2010-05-31 | 2011-11-30 | 中兴通讯股份有限公司 | 场可编程门阵列加载方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009171221A (ja) * | 2008-01-16 | 2009-07-30 | Tadao Ueda | 地理的座標情報可逆圧縮方法、装置、ならびにプログラム |
CN102547267B (zh) * | 2010-12-29 | 2014-04-16 | 福州瑞芯微电子有限公司 | 一种视频数据解码方法及*** |
CN102722544A (zh) * | 2012-05-24 | 2012-10-10 | 北京国双科技有限公司 | 字符串的解码方法和装置 |
-
2013
- 2013-07-08 CN CN201310287343.6A patent/CN103346800B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060140496A1 (en) * | 2003-07-01 | 2006-06-29 | Dirk Gandolph | Method for run-length encoding of a bitmap data stream |
CN1665303A (zh) * | 2005-03-18 | 2005-09-07 | 清华大学 | 图像/视频编码中变换系数的熵编码方法 |
US7327289B1 (en) * | 2006-09-20 | 2008-02-05 | Intel Corporation | Data-modifying run length encoder to avoid data expansion |
CN102262547A (zh) * | 2010-05-31 | 2011-11-30 | 中兴通讯股份有限公司 | 场可编程门阵列加载方法和装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106170760A (zh) * | 2014-07-11 | 2016-11-30 | 华为技术有限公司 | 一种计算数据的预期压缩率的方法及装置 |
US10162747B2 (en) | 2014-10-27 | 2018-12-25 | Phison Electronics Corp. | Data writing method, memory control circuit unit and memory storage apparatus |
CN105790768B (zh) * | 2014-12-19 | 2018-12-25 | 珠海全志科技股份有限公司 | 数据存储方法和*** |
CN105790768A (zh) * | 2014-12-19 | 2016-07-20 | 珠海全志科技股份有限公司 | 数据存储方法和*** |
CN105280003A (zh) * | 2015-09-29 | 2016-01-27 | 北京航空航天大学 | 一种路侧向车辆传送交叉口信号灯信息的方法 |
CN105258303B (zh) * | 2015-11-20 | 2018-01-16 | 珠海格力电器股份有限公司 | 空调机组运行数据远程传输控制方法、装置和空调 |
CN105258303A (zh) * | 2015-11-20 | 2016-01-20 | 珠海格力电器股份有限公司 | 空调机组运行数据远程传输控制方法、装置和空调 |
CN107294538A (zh) * | 2017-06-09 | 2017-10-24 | 深圳市华星光电技术有限公司 | Oled显示装置的补偿表压缩方法及解压方法 |
CN107294538B (zh) * | 2017-06-09 | 2020-09-01 | 深圳市华星光电半导体显示技术有限公司 | Oled显示装置的补偿表压缩方法及解压方法 |
CN109561467A (zh) * | 2018-12-27 | 2019-04-02 | 日立电梯(中国)有限公司 | 无线数据处理方法和无线发送、接收设备 |
CN109561467B (zh) * | 2018-12-27 | 2023-02-28 | 日立电梯(中国)有限公司 | 无线数据处理方法和无线发送、接收设备 |
CN112351107A (zh) * | 2020-11-16 | 2021-02-09 | 百度在线网络技术(北京)有限公司 | 用于编码文件的方法、装置、电子设备及可读存储介质 |
CN112351107B (zh) * | 2020-11-16 | 2023-10-03 | 百度在线网络技术(北京)有限公司 | 用于编码文件的方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103346800B (zh) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103346800A (zh) | 一种数据压缩方法及装置 | |
US7770091B2 (en) | Data compression for use in communication systems | |
CN111008230B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
US8407378B2 (en) | High-speed inline data compression inline with an eight byte data path | |
CN104040541A (zh) | 用于更高效地使用存储器至cpu带宽的技术 | |
CN110825323B (zh) | 浮点数数据的存储、读取方法和计算机可读存储介质 | |
US20140129882A1 (en) | Encoding diagnostic data in an error message for a computer program | |
CN112953550A (zh) | 数据压缩的方法、电子设备及存储介质 | |
US20160034499A1 (en) | Compressing and transmitting structured information | |
CN104899204B (zh) | 数据存储方法及装置 | |
US20160006454A1 (en) | Compression device, compression method, decompression device, decompression method, information processing system, and recording medium | |
CN106971090A (zh) | 一种基因测序数据压缩和传输方法 | |
CN103716056A (zh) | 数据压缩方法、数据解压缩方法和设备 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
CN114064308A (zh) | 基于列式数据扫描的多数据发送和接收方法、装置和设备 | |
CN103746702B (zh) | 数据的无损压缩方法与装置 | |
CN108933599B (zh) | 一种霍夫曼编码实现方法、***、设备及计算机存储介质 | |
CN112054805B (zh) | 一种模型数据压缩方法、***及相关设备 | |
CN101297246B (zh) | 用于控制设备的装置和方法 | |
CN110909256A (zh) | 计算机用的人工智能信息过滤*** | |
US10263638B2 (en) | Lossless compression method for graph traversal | |
CN115190182B (zh) | 一种适用于北斗***的数据无损压缩方法、装置及设备 | |
CN113805798A (zh) | 车载日志的空间优化存储方法、装置、电子设备及介质 | |
CN115866091B (zh) | 一种信号处理方法、装置、电子设备及存储介质 | |
CN112527753B (zh) | Dns解析记录无损压缩方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 110179 No. 177-1 Innovation Road, Hunnan District, Shenyang City, Liaoning Province Patentee after: Shenyang Neusoft Medical Systems Co.,Ltd. Address before: Hunnan New Century Road 110179 Shenyang city of Liaoning Province, No. 16 Patentee before: SHENYANG NEUSOFT MEDICAL SYSTEMS Co.,Ltd. |
|
CP03 | Change of name, title or address | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161005 |
|
CF01 | Termination of patent right due to non-payment of annual fee |