一种对图片特征进行压缩及解压的方法转让专利

申请号 : CN201711208952.2

文献号 : CN107911570B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张慧辰张森尤冬海杨卓敏镇煌曹鹏

申请人 : 公安部交通管理科学研究所

摘要 :

本发明提供了一种对图片特征进行压缩及解压的方法,压缩速度快,且压缩比高。首先分析储存为字符串的图片特征,确认需要编码的字符种类;然后,根据需要编码的字符建立编码字典,每个编码对应4个比特位;最后,根据编码字典对字符串进行压缩和解压。压缩包括:将每个字符按照编码字典进行转码;将每两个字符转码后的结果组成一个新的字节,所有新字节拼接得到转换后的字节数组;对转换后的字节数组使用字符集转换为字符串。解压包括:按照压缩的步骤中选用的字符集将压缩得到的字符串转换为字节数组;将字节数组的每一个字节拆分为高4位和低4位;将字节的每个4位使用编码字典翻译为字符,组合字符得到压缩前的图片特征的字符串。

权利要求 :

1.一种对图片特征进行压缩及解压的方法,其特征在于,包括以下步骤:分析储存为字符串的图片特征,确认需要编码的字符种类;根据需要编码字符建立编码字典,每个编码对应4个比特位;根据编码字典对字符串进行压缩和解压;

其中,压缩包括:

将每个字符按照编码字典进行转码,

将每两个字符转码后的结果组成一个新的字节,所有新字节拼接得到转换后的字节数组,对转换后的字节数组使用字符集转换为字符串;

解压包括:

按照压缩的步骤中选用的字符集将压缩得到的字符串转换为字节数组,将字节数组的每一个字节拆分为高4位和低4位,

将字节的每个4位使用编码字典翻译为字符,组合字符得到压缩前的图片特征的字符串;

所述字符串的字符包括结束符,所述结束符为字符P;

需要编码字符包括数字0至数字9、逗号、减号、小数点、字符E、字符P,编码对应为二进制下的0-7,9-15;

压缩具体包括以下步骤:

s1、创建一个空的字节数组b;

s2、遍历带待压缩字符串的字符,对每一个字符,执行如下步骤:s2.1、将字符按照编码字典表转化为编码;

s2.2、判断字符所在的序号的奇偶性,如果序号是奇数则创建一个新的临时字节a,将编码赋值给该临时字节a,如果该字符是字符串中最后一个字符,则临时字节a左移4位,按位并将字节a的低4位用1111编码填充,将临时字节a加入字节数组b的尾部;如果序号是偶数,则将临时字节a左移4位,按位并将编码并入临时字节a的低4位,然后将临时字节a加入字节数组b的尾部,如果该字符是字符串中最后一个字符,则向字节数组b中再追加一个字节8位,以11111111填充;

s2.3、重复s2.1至s2.2,直到遍历完整个字符串;

s3、对字节数组b,使用字符集转换为字符串;

解压具体包括以下步骤:

p1、创建一个空的字符串s;

p2、按照压缩时使用的字符集将带解压的字符串转换成字节数组b;

p3、遍历字节数组b,对每个字节,执行如下步骤:p3.1:获取高4位,并右移4位得到字节x,使用字节x查询编码字典,得到对应的字符,并将字符追加到字符串s尾部;

p3.2:获取低4位,得到字节y,使用字节y查询编码字段,得到对应的字符,并将字符追加到字符串s尾部;

p3.3:重复步骤p 3.1-p 3.2,直到遍历完整个字节数组;

p4:得到的字符串s的即为压缩前的图片特征的字符串;

所述左移为将字节左移4位,且不改变0,1的排列方式,设字节值为x,具体步骤如下:判断x是否大于7,若小于等于7,返回直接x左移4位的值;否则,返回128-(16*x);

所述按位并是将一个字节的高4位与另一字节的低4位并为一个字节,设需要将b1的高

4位与b2的低4位求并,具体步骤如下:判断b1是否大于0,若大于0,返回b1与b2按位或的结果,否则,令x= -128-b1,y=x与b2按位或,返回-128-y;

所述获取高4位是返回指定字节的高四位,且不改变0,1的排列方式,设字节值为m,具体步骤如下:判断m是否大于0,若大于0,返回m与-16按位与的结果;否则,令x= -128-m,y=x与-16按位与,返回-128-y;

所述获取低4位是返回指定字节的低四位,且不改变0,1的排列方式,设字节值为n,具体步骤如下:判断n是否大于0,若大于0,返回m与15按位与的结果,否则,令x= -128-m,y=x与15按位与,返回y;

所述右移为将字节右移4位,且不改变0,1的排列方式,设字节值为x,具体步骤如下:判断x是否大于0,若大于等于0,返回直接x右移4位的值;否则,令y=x右移4位的值;y= -128-y,m=y与15按位与的值,返回m与8按位或的值;

所述左移、按位并、获取高4位、获取低4位、右移的运算过程中的数均为有符号数。

2.根据权利要求1所述的一种对图片特征进行压缩及解压的方法,其特征在于:当需要在数据库中保存字符串,则使用BASE64字符集进行转换。

说明书 :

一种对图片特征进行压缩及解压的方法

技术领域

[0001] 本发明涉及数据压缩领域,具体是一种对图片特征进行压缩及解压的方法。

背景技术

[0002] 目前,应用人工智能深度学习技术,已经可以识别图片中车辆、行人、外部环境等信息。由于业务应用的需求,还需要提取图片中对象的特征值用于分析比对,特征值一般是算法中神经网络其中一层的输出,由于目前算法模型较多,且网络深度大,其输出较多,且均为数值型,为了便于多种环境下的存储,将输出拼接为字符串。由于输出项多,导致字符串长度较长。特征字符串较长一方面导致所需存储空间较大;另一方面,当读取特征时,IO负载较大。这两方面问题并不会导致应用无法开展,但的确对应用的效率造成了较大的影响。
[0003] 由于特征是在图片采集处理过程中提取的,而图片采集可能发生在实时环境下的,卡口每拍摄一张图片就会立刻进行采集处理,所以对压缩算法的主要要求是速度,要求不能对实时环境产生较大的影响。经实测,对长度为1万的数值型字符串,采用常规的数据压缩算法耗时在9毫秒左右,压缩耗时较长。

发明内容

[0004] 针对现有技术中存在的上述问题,本发明提供了一种对图片特征进行压缩及解压的方法,压缩速度快,且压缩比高。
[0005] 其技术方案是这样的:一种对图片特征进行压缩及解压的方法,其特征在于,包括以下步骤:分析储存为字符串的图片特征,确认需要编码字符种类;根据需要编码字符建立编码字典,每个编码对应4个比特位;根据编码字典对字符串进行压缩和解压;
[0006] 其中,压缩包括:
[0007] 将每个字符按照编码字典进行转码;
[0008] 将每两个字符转码后的结果组成一个新的字节,所有新字节拼接得到转换后的字节数组;
[0009] 对转换后的字节数组使用字符集转换为字符串;
[0010] 解压包括:
[0011] 按照压缩的步骤中选用的字符集将压缩得到的字符串转换为字节数组;
[0012] 将字节数组的每一个字节拆分为高4位和低4位;
[0013] 将字节的每个4位使用编码字典翻译为字符,组合字符得到压缩前的图片特征的字符串。
[0014] 其进一步特征在于:所述字符包括结束符,所述结束符为字符P。
[0015] 进一步的,需要编码字符包括数字0至数字9、逗号、减号、小数点、字符E、字符P,编码对应为二进制下的0-7,9-15。
[0016] 进一步的,压缩具体包括以下步骤:
[0017] s1、创建一个空的字节数组b;
[0018] s2、遍历带待压缩字符串的字符,对每一个字符,执行如下步骤:
[0019] s2.1、将字符按照编码字典表转化为编码;
[0020] s2.2、判断字符所在的序号的奇偶性,如果序号是奇数则创建一个新的临时字节a,将编码赋值给该临时字节a,如果该字符是字符串中最后一个字符,则临时字节a左移4位,按位并将字节a的低4位用1111编码填充,将临时字节a加入字节数组b的尾部;如果序号是偶数,则将临时字节a左移4位,按位并将编码并入临时字节a的低4位,然后将临时字节a加入字节数组b的尾部,如果该字符是字符串中最后一个字符,则向字节数组b中再追加一个字节8位,以11111111填充;
[0021] s2.3、重复s2.1至s2.2,直到遍历完整个字符串;
[0022] s3、对字节数组b,使用字符集转换为字符串,
[0023] 进一步的,解压具体包括以下步骤:
[0024] p1、创建一个空的字符串s;
[0025] p2、按照压缩时使用的字符集将带解压的字符串转换成字节数组b;
[0026] p3、遍历字节数组b,对每个字节,执行如下步骤:
[0027] p3.1:获取高4位,并右移4位得到字节x,使用字节x查询编码字典,得到对应的字符,并将字符追加到字符串s尾部;
[0028] p3.2:获取低4位,得到字节y,使用字节y查询编码字段,得到对应的字符,并将字符追加到字符串s尾部;
[0029] p3.3:重复步骤3.1-3.2,直到遍历完整个字节数组;
[0030] p4:得到的字符串s的即为压缩前的图片特征的字符串。
[0031] 进一步的,所述左移为将字节左移4位,且不改变0,1的排列方式,设字节值为x,具体步骤如下:判断x是否大于7,若小于等于7,返回直接x左移4位的值;否则,返回128-(16*x);
[0032] 所述按位并是将一个字节的高4位与另一字节的低4位并为一个字节,设需要将b1的高4位与b2的低4位求并,具体步骤如下:判断b1是否大于0,若大于0,返回b1与b2按位或的结果,否则,令x= -128-b1,y=x与b2按位或,返回-128-y;
[0033] 所述获取高4位是返回指定字节的高四位,且不改变0,1的排列方式,设字节值为m,具体步骤如下:判断m是否大于0,若大于0,返回m与-16按位与的结果;否则,令x= -128-m,y=x与-16按位与,返回-128-y;
[0034] 所述获取低4位是返回指定字节的低四位,且不改变0,1的排列方式,设字节值为n,具体步骤如下:判断n是否大于0,若大于0,返回m与15按位与的结果,否则,令x= -128-m,y=x与15按位与,返回y;
[0035] 所述右移为将字节右移4位,且不改变0,1的排列方式,设字节值为x,具体步骤如下:判断x是否大于0,若大于等于0,返回直接x右移4位的值;否则,令y=x右移4位的值;y= -128-y,m=y与15按位与的值,返回m与8按位或的值。
[0036] 进一步的,所述左移、按位并、获取高4位、获取低4位、右移的运算过程中的数均为有符号数。
[0037] 进一步的,当需要在数据库中保存字符串,则使用BASE64字符集进行转换。
[0038] 本发明的对图片特征进行压缩及解压的方法的优点在于:由于对所有图片特征来说,编码字典相对固定,编码字典可以根据需要自由切换,已编码信息也可以按照新的编码字典重新编码,相比Huffman、LZ77等压缩算法,压缩速度快,实际环境下对长度10000的特征字符串的测试压缩时间稳定在为2毫秒以内,最终压缩比为0.67,压缩效果好。

附图说明

[0039] 图1为本发明的对图片特征进行压缩及解压的方法的流程框图;
[0040] 图2为本发明的压缩的具体流程图;
[0041] 图3为本发明的解压的具体流程图。

具体实施方式

[0042] 见图1,图2,图3,本发明的一种对图片特征进行压缩及解压的方法,其特征在于,包括以下步骤:将图片特征转化为字符串;分析储存为字符串的图片特征,确认需要编码的字符种类;根据需要编码字符建立编码字典,每个编码对应4个比特位;根据编码字典对字符串进行压缩和解压;
[0043] 其中,压缩包括:
[0044] 将每个字符按照编码字典进行转码;
[0045] 将每两个字符转码后的结果组成一个新的字节,得到转换后的字节数组;
[0046] 对转换后的字节数组使用字符集转换为字符串。
[0047] 解压包括:
[0048] 按照压缩的步骤中选用的字符集将压缩得到的字符串转换为字节数组;
[0049] 将字节数组的每一个字节拆分为高4位和低4位;
[0050] 将字节的每个4位使用编码字典翻译为字符,组合字符得到压缩前的图片特征的字符串。
[0051] 具体的,将图片特征向量直接转化为字符串,以逗号分隔,形如:0.345,-0.224E6,......,1.336等等,为了准确标识字符串的结尾,引入结束符,即字符P,故需要编码字符包括数字0-数字9、逗号、减号、小数点、字符E、字符P,编码对应为二进制下的0-7,9-
15,每个编码只占4个比特位。由于数据操作面向有符号数,字符对应的编码永不使用二进制下的8,即1000。
[0052] 设定编码字典如下表,字符与编码的对应关系可任意改变:
[0053]字符 编码
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1110
9 1001
- 1010
. 1011
, 1100
E 1101
P 1111
[0054] 见图2,压缩具体包括以下步骤:
[0055] s1、创建一个空的字节数组b;
[0056] s2、遍历带待压缩字符串的字符,对每一个字符,执行如下步骤:
[0057] s2.1、将字符按照编码字典表转化为编码;
[0058] s2.2、判断字符所在的序号的奇偶性,如果序号是奇数则创建一个新的临时字节a,将编码赋值给该临时字节a,如果该字符是字符串中最后一个字符,则临时字节a左移4位,按位并将字节a的低4位用1111编码填充,将临时字节a加入字节数组b的尾部;如果序号是偶数,则将临时字节a左移4位,按位并将编码并入临时字节a的低4位,然后将临时字节a加入字节数组b的尾部,如果该字符是字符串中最后一个字符,则向字节数组b中再追加一个字节8位,以11111111填充。
[0059] s2.3、重复s2.1至s2.2,直到遍历完整个字符串;
[0060] s3、对字节数组b,使用BASE64字符集转换为字符串。
[0061] 见图3,解压具体包括以下步骤:
[0062] p1、创建一个空的字符串s;
[0063] p2、按照压缩时使用的字符集将带解压的字符串转换成字节数组b;
[0064] p3、遍历字节数组b,对每个字节,执行如下步骤:
[0065] p3.1:获取高4位,并右移4位得到字节x,使用字节x查询编码字典,得到对应的字符,并将字符追加到字符串s尾部;
[0066] p3.2:获取低4位,得到字节y,使用字节y查询编码字段,得到对应的字符,并将字符追加到字符串s尾部;
[0067] p3.3:重复步骤3.1-3.2,直到遍历完整个字节数组;
[0068] p4:得到的字符串s的即为压缩前的图片特征的字符串。
[0069] 由于JAVA环境下的数值均为无符号数,JAVA中负数以补码形式存储,所以在JAVA环境下,需要开发专用的位操作,具体如下:
[0070] 1、左移:左移为将字节左移4位,且不改变0,1的排列方式,设字节值为x,具体步骤如下:判断x是否大于7,若小于等于7,返回直接x左移4位的值;否则,返回128-(16*x);
[0071] 2、按位并:按位并是将一个字节的高4位与另一字节的低4位并为一个字节,设需要将b1的高4位与b2的低4位求并,具体步骤如下:判断b1是否大于0,若大于0,返回b1与b2按位或的结果,否则,令x= -128-b1,y=x与b2按位或,返回-128-y;
[0072] 3、获取高4位:获取高4位是返回指定字节的高四位,且不改变0,1的排列方式,设字节值为m,具体步骤如下:判断m是否大于0,若大于0,返回m与-16按位与的结果;否则,令x= -128-m,y=x与-16按位与,返回-128-y;
[0073] 4、获取低4位:获取低4位是返回指定字节的低四位,且不改变0,1的排列方式,设字节值为n,具体步骤如下:判断n是否大于0,若大于0,返回m与15按位与的结果,否则,令x= -128-m,y=x与15按位与,返回y;
[0074] 5、右移:右移为将字节右移4位,且不改变0,1的排列方式,设字节值为x,具体步骤如下:判断x是否大于0,若大于等于0,返回直接x右移4位的值;否则,令y=x右移4位的值;y= -128-y,m=y与15按位与的值,返回m与8按位或的值。
[0075] 左移、按位并、获取高4位、获取低4位、右移的运算过程中的数均为有符号数。
[0076] 本发明的对图片特征进行压缩及解压的方法的优点在于:由于对所有图片特征来说,编码字典相对固定,编码字典可以根据需要自由切换,已编码信息也可以按照新的编码字典重新编码,相比Huffman、LZ77等压缩算法,压缩速度快,实际环境下对长度10000的特征字符串的测试压缩时间稳定在为2毫秒以内,最终压缩比为0.67,压缩效果好。
[0077] 以上,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。