一种数据高效存储方法与流程

文档序号:32986985发布日期:2023-01-17 22:53阅读:31来源:国知局
一种数据高效存储方法与流程

1.本发明涉及数据存储领域,具体涉及一种数据高效存储方法。


背景技术:

2.在对数据进行存储时,往往需要进行压缩处理,数据压缩是基于数据的冗余性,其中游程编码是常用的数据压缩方法之一,但游程编码压缩依赖于连续重复的数据段,若连续重复的数据段少且短,则采用游程编码进行压缩时效果较差。现有的压缩方法通常采用固定的扫描方法,例如对数据进行扫描时,往往采用的是光栅扫描法,光栅扫描是逐行进行扫描的。然而,不同的数据有不同的特点,采用固定的扫描方式难以使其得到好的压缩性能,例如光栅扫描法通常会使扫描得到的连续重复的数据段较少,导致最终的压缩效果较差。


技术实现要素:

3.本发明提供一种数据高效存储方法,以解决现有的采用游程编码进行压缩时效果较差的问题,所采用的技术方案具体如下:本发明一个实施例提供了一种数据高效存储方法,该方法包括以下步骤:获取待存储数据,并转换为二进制数据;根据所有的二进制数据得到二维矩阵,得到二维矩阵中值为1的点作为黑色像素点,得到黑色像素点的所有连通域,记为第一连通域;以像素点上下左右四个方向作为像素点的四领域,以像素点左上、左下、右上和右下四个方向作为像素点的d领域,得到3
×
3大小的滑窗,获取每个第一连通域内所有黑色像素点的四领域中存在黑色像素点的第一目标像素点个数,获取每个第一连通域内所有的黑色像素点的d领域中存在黑色像素点的第二目标像素点个数,第一目标像素点个数和第二目标像素点个数做差与每个第一连通域中黑色像素点的总数进行比较得到每个第一连通域的扫描方式的优选程度;根据每个第一连通域扫描方式的优选程度得到二维矩阵的全局扫描方式优选程度,根据全局扫描方式优选程度获取全局最优扫描方式;使用全局最优扫描方式对二维矩阵进行扫描得到压缩存储的数据。
4.优选的,所述根据所有的二进制数据得到二维矩阵方法为:获得所有二进制数据的位数,对其进行开方并向上取整,向上取整后的数字就是二维矩阵的长宽,将二维数据利用光栅扫描法填入二维矩阵,若二进制数据没有填满二维矩阵时,将未被填的部分补0。
5.优选的,所述第一连通域的获取方法为:在二维矩阵中,将以任意一个黑色像素点作为中心点,使用区域生长法获得与中心点相连的所有黑色像素点的区域,之后除该区域外再使用任意黑色像素点为中心点再次得到一个区域,直到矩阵中所有黑色像素点被划分到每个区域中,其中每个区域就是第一
连通域。
6.优选的,所述每个第一连通域的扫描方式的优选程度的计算方法为:式中表示第个连通域的扫描方式优选程度,表示第一目标像素点的数量,表示第二目标点的数量,表示第个连通域中黑色像素点的总数量。
7.优选的,所述根据每个第一连通域扫描方式的优选程度得到二维矩阵的全局扫描方式优选程度,根据全局扫描方式优选程度获取全局最优扫描方式的方法为:根据所有第一连通域的扫描方式优选程度求均值得到全局扫描方式优选程度,获取每种扫描方式对应的每个取值范围,获取全局扫描方式优选程度所属的取值范围,该范围对应的扫描方式作为全局最优扫描方式。
8.优选的,所述获取每种扫描方式对应的每个取值范围的具体方法为:字扫描对应第一取值范围,希尔伯特扫描对应第二取值范围,螺旋扫描对应第三取值范围。
9.本发明的有益效果是:本发明提出了一种数据高效存储方法,通过对待进行压缩存储的数据进行编码转换,构建二维矩阵,通过分析数据的分布,自适应选择最优的扫描方式,使扫描得到的一维序列中连续重复的数据段足够多且足够长,从而提高游程编码的压缩效率,达到在无损的基础上增大压缩率的目的。
附图说明
10.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
11.图1为本发明的一个实施例所提供一种数据高效存储方法的流程示意图;图2为不同扫描方式的效果图与示意图;图3为邻域示意图。
具体实施方式
12.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
13.请参阅图1,其示出了本发明一个实施例提供的一种数据高效存储方法流程图,该方法包括以下步骤:步骤s001、采集待存储数据,将数据进行预处理后转换为二进制数据。
14.由于计算机只能识别二进制数据,因此无论任何数据,例如传感器输出的数据、文本数据都需要转换成二进制数据,将数据转换成二进制数据的方法是公知的,例如采集的
数据全部转换为ascii值即十进制形式存在,然后再将这些十进制数据转换成二进制数据;其中十进制数据往往存在一定的差异,而二进制数相对于十进制数存在更大的空间冗余度,计算机在对这些二进制数据进行处理和分析可以获得较大的压缩率,减少数据的存储空间。
15.本实施例为了叙述方便和数据示例,接下来以将十进制整数转换为4位二进制数据进行叙述,实施者可以根据具体采集的数据转换成相应位数的二进制数据。
16.步骤s002、将二进制数据构建二维矩阵,根据二维矩阵种前景数据点的聚集程度和分布方向自适应获取最优扫描方式。
17.首先构建二维矩阵,第一步获取到的二进制数据为一维数据,例如l={3,3,6,6,4,12,9,8,3,3,6,6,4,4,8,8}的二进制序列为:0011 0011 0110 0110 0100 1100 1001 1000 0011 0011 0110 0110 0100 0100 1000 1000,此时,二进制序列中每一个数字仅仅与其相邻的字符之间存在关联,因此,为了增加数字之间的关联性,将一维的二进制序列转换为二维矩阵,故对一维的二进制序列进行转换,一维的二进制序列中0、1的数字总个数记为,则转换为二维矩阵后二维矩阵的边长l为:式中l表示二维矩阵的边长,x表示一维的二进制序列中0、1的数字总个数,表示向上取整,由此构建大小为大小的二维矩阵。将一维二进制序列中的0、1数字按照光栅扫描的顺序依次填入大小为的二维矩阵中,若一维二进制序列中所有的0、1数字填完后二维矩阵还有空缺位置,则进行补0,令二维矩阵中每一个位置均存在0或1的数字,光栅扫描的填充方式为从左到右填满第一行之后填第二行的最左边再次从左到右填充。
18.进一步的获取目标连通域,构建的二维矩阵中是由0、1两个值组成的二值图像,二维矩阵可视化效果图如二维矩阵可视化示意图1所示。在进行编码转换时,为了便于解码,通常采用的是定长编码,定长编码存在大量的补零位,因此,二进制序列中“0”的个数要远超于“1”的个数,为了便于后续计算,降低计算难度,在二维矩阵中,将“1”作为前景进行计算,在上述二维矩阵可视化效果图中,黑色像素点表示的是“1”,白色像素点表示“0”。获取前景黑色像素点连通域,以任意一黑色像素点为目标点,采用区域生长法获取其所在连通域,区域生长法为现有技术,此处不予以详细概述,当所述像素点所在连通域获取完成后,选择除该连通域以外的黑色像素点作为目标再次使用区域生长法,直到所有黑色像素点被遍历完成后停止,得到的所有黑色像素点的连通域就是第一连通域。
19.进一步的,对扫描方式进行分析,不同的扫描方式会出现不同的扫描结果,例如序列l={3,3,6,6,4,12,9,8,3,3,6,6,4,4,8,8}的二进制序列为:0011 0011 0110 0110 0100 1100 1001 1000 0011 0011 0110 0110 0100 0100 1000 1000此时二进制的空间冗余程度较低,将64位的二进制序列转换为大小的二维矩阵后,二维矩阵中的黑色像素点呈现较为规律的分布,此时采用z字扫描法进行扫描后,扫描后的二进制序列变为:0000111111000000000000 11111111111111000000000000000111111000000,通过z字扫描后获得的二进制序列空间冗余程度大大提高,此时采用游程编码压缩为:(0,4)(1,6)(0,
12)(1,14)(0,16)(1,6)(0,6),压缩后由原本的64位变为14位。其中常用的扫描方式分为四种,分别为连续光栅扫描、希尔伯特扫描、螺旋扫描与z字扫描,四种扫描方式的示意图与效果图如图2所示;进一步的,根据连通域像素点分布计算扫描方式的优选程度,观察发现,黑色像素点的分布方式不同,扫描方式不同,最终得到的扫描序列的空间冗余程度也不同,其中上述四种扫描方式中希尔伯特扫描针对聚集程度较高的子块连通域有较好的效果,z字扫描针对分布较为离散且呈现对角分布的连通域有较好的效果,连续光栅扫描对水平分布的连通域有较好的效果,而螺旋扫描对水平、垂直分布的连通域均有较好的效果,其中螺旋扫描的效果包含连续光栅扫描效果且优于连续光栅扫描效果。
20.以二维矩阵1111000100011111进行举例,对于相同的连通域,螺旋扫描后的二进制序列变为0000001111111111,连续光栅扫描后的二进制序列为1111100000011111,可以发现螺旋扫描的扫描效果优于连续光栅扫描的扫描效果,扫描后序列的空间冗余程度更大,而由于连续光栅扫描只会将一行扫完再去一下行,效果较差,因此不考虑连续光栅扫描。
21.观察发现,适合希尔伯特扫描方式的连通域分布较为密集,以像素点上下左右四个方向作为像素点的四领域,以像素点左上、左下、右上和右下四个方向作为像素点的d领域,如图3所示,每一个黑色像素点的邻域中四邻域与d-邻域中均存在黑色像素点,适合螺旋扫描方式的连通域分布较为规整,黑色像素点的邻域中四邻域与d-邻域中存在黑色像素点,且黑色像素点的四邻域中存在的目标黑色像素点个数远远大于黑色像素点的d邻域中存在的目标黑色像素点个数,适合z字扫描方式的连通域分布较为离散,黑色像素点的邻域中四邻域与d-邻域中存在黑色像素点,且黑色像素点的四邻域中存在的目标黑色像素点个数远远小于黑色像素点的d邻域中存在的目标黑色像素点个数。
22.因此建立大小的滑窗,以黑色像素点为滑窗中心点,统计连通域中所有黑色像素点的滑窗中黑色像素点的四邻域和中存在的目标黑色像素点个数和邻域中存在的目标黑色像素点个数,其中第i个连通域中某个黑色像素点四领域存在黑色像素点时记为第一目标像素点,第i个连通域中某个黑色像素点d领域存在黑色像素点时记为第二目标像素点,第i个连通域中第一目标像素点的数量为,第二目标点的数量为。其中第个连通域中黑色像素点的总数量记为,由于和的最大值都取f,的最大取值为,的最大取值为 ,根据邻域分布情况计算第个连通域的扫描方式优选程度,即:式中表示第个连通域的扫描方式优选程度,表示第一目标像素点的数量,表示第二目标点的数量,表示第个连通域中黑色像素点的总数量。
23.由于存在,,则第个连通域的扫描方式优选程度的取值范围为,第个连通域的扫描方式优选程度的取值越大,越趋近于0.5,则表
示黑色像素点的邻域中四邻域与d-邻域中存在黑色像素点,且黑色像素点的四邻域中存在的目标黑色像素点个数远远大于黑色像素点的d邻域中存在的目标黑色像素点个数,即,此时螺旋扫描的扫描方式为最优扫描方式;同理第个连通域的扫描方式优选程度的取值越小,越趋近于,则表示黑色像素点的邻域中四邻域与d-邻域中存在黑色像素点,且黑色像素点的四邻域中存在的目标黑色像素点个数远远小于黑色像素点的d邻域中存在的目标黑色像素点个数,即,此时字扫描的扫描方式为最优扫描方式;同理第个连通域的扫描方式优选程度的取值越越趋近于,则表示每一个黑色像素点的邻域中四邻域与d-邻域中均存在黑色像素点,即,此时希尔伯特扫描的扫描方式为最优扫描方式。
24.因此设定扫描方式优选程度区间,即当时,选择字扫描的扫描方式;当时,选择希尔伯特扫描的扫描方式;当时,选择螺旋扫描的扫描方式。其中的经验阈值取。
25.进一步的,计算全局扫描方式优选程度,上述计算是计算得到的第个连通域的扫描方式优选程度,二维矩阵中存在多个连通域,则全局的扫描方式优选程度为:式中表示全局扫描方式优选程度,n表示二维矩阵中连通域的个数,表示第个连通域的扫描方式优选程度,当最终得到的隶属于哪一个扫描方式的取值区间,则该区间所对应的扫描方式就是全局最优扫描方式。
26.步骤s003、采用全局最优扫描方式对二维矩阵进行扫描,获取扫描后的二进制序列,对扫描得到的二进制序列进行压缩,得到压缩后的数据。
27.通过计算得到全局最优扫描方式,通过全局最优扫描方式进行扫描后,得到的二进制序列的空间冗余程度大大增加,此时采用游程编码进行压缩并存储,存储时在压缩文件的头部存储扫描方式。
28.例:原始序列l={3,3,6,6,4,12,9,8,3,3,6,6,4,4,8,8},l的二进制序列为:0011 0011 0110 0110 0100 1100 1001 1000 0011 0011 0110 0110 0100 0100 1000 1000,计算得到的全局最优扫描方式为字扫描的扫描方式,扫描后的二进制序列变为:0000111111000000000000 11111111111111000000000000000111111000000,游程编码压缩后的数据变为:(0,4)(1,6)(0,12)(1,14)(0,16)(1,6)(0,6),则压缩存储的存储数据为:{z,(0,4)(1,6)(0,12)(1,14)(0,16)(1,6)(0,6)}。
29.以上所述仅为本发明的较佳的便于叙述的实施例而已,并不用以限制本发明,实施者可以根据具体要存储的数据转换成相应二进制数据进行上述实施例的实施即可,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1