1.本发明涉及数据挖掘和数据可视化技术领域,特别涉及一种基于连通图和凸包的散点图去重叠算法
背景技术:
2.随着大数据时代的到来,人们越来越认识到数据所能够创造的价值。但是用户很难从大量数据中直接发现规律,模式,知识等。数据可视化可以将数据转化为易于感知的图像,帮助用户洞察数据内涵,理解数据所蕴含的规律,是分析、理解数据的重要工具。散点图是表示二维数据的标准方法。在散点图中,所有数据以点的形式出现在笛卡尔坐标系中,每个点所对应的横纵坐标即代表该数据在坐标轴所表示维度上的属性值大小。散点图可以帮助用户感知数据趋势、相关性和和数据异常值等。以图片为标记的散点图使用图片代替标准散点图中的点,经常出现在对于图片数据集的降维分析中,可以帮助用户感知图片数据集中的数据趋势,图片相似度,和异常图片等等。但是,由于图片相对于点占据了更大的面积,以图片为标记的散点图会出现比较严重的视觉重叠,导致用户无法准确感知图片的位置,从而降低了分析效率。因此如何有效地减轻以图片为标记的散点图的视觉重叠成为了散点图可视化的一个研究热点。
3.目前,散点图的去重叠方法多采用的是减少图中数据点的方法,根据数据的相似性使用单个半径较大点代表原始图形中若干个临近的点。现有的方法需要减少散点图中点的数量,难以保持散点图原有的趋势,而针对以图片为标记的散点图的去重叠方法几乎没有。另外,以图片为标记的散点图在对图片数据集的可视分析中几乎必不可少。尤其是在图片数据集的无监督聚类任务中,研究人员往往需要首先使用以图片为标记的散点图来分析整个数据集中的数据分布规律。但是以图片为标记的散点图的视觉重叠往往比较严重,难以有效地支撑研究人员的可视分析需求。目前,以图片为标记的散点图的去重叠方法已成为散点图可视化的研究热点,针对相关技术中的问题,目前尚未提出有效的解决方案。
技术实现要素:
4.本发明提供了一种基于连通图和凸包的散点图去重叠算法,其目的是为了解决以图片为标记的散点图会出现比较严重的视觉重叠,导致用户无法准确感知图片的位置,从而降低了分析效率的问题
5.为了达到上述目的,本发明的实施例提供了一种基于连通图和凸包的散点图去重叠算法,包括:
6.步骤1,选取一个以图片为标记点的图片散点图,且图片散点图中的所有图片的四个边长都相等,获取图片散点图中每张图片的坐标和宽高;
7.步骤2,通过碰撞检测算法计算图片散点图中各个图片之间的邻接矩阵;
8.步骤3,根据计算出的各个图片之间的邻接矩阵和基于宽度优先搜索的暴力搜索方法计算图片散点图中所有图片的连通图;
9.步骤4,对计算出的每个连通图计算凸包;
10.步骤5,采用基于网格布局的搜索算法分别将计算出的每个凸包所包围的面积划分为多个宽高相同的小正方形;
11.步骤6,将每个凸包中的图片按照图片到相对应的凸包中心的距离升序排列,将每个凸包中划分出小正方形按照小正方形到相对应的凸包中心的距离升序排列,获取每个凸包中的小正方形的坐标和宽高,将每个凸包中的小正方形的坐标和宽高分配到相对应的凸包中的图片,得到每个凸包中的每张图片新坐标和新宽高。
12.其中,所述步骤1具体包括:
13.设定图片散点图的一个顶点为坐标原点、以坐标原点为起点的水平方向为x轴正方向和以坐标原点为起点的竖直方向为y轴正方向,获得图片散点图中所有图片的坐标和宽高。
14.其中,所述步骤2具体包括:
15.将图片散点图中的每张图片看作为一个节点,将图片散点图中在视觉上发生重叠的图片看作为发生了碰撞且将在视觉上发生重叠的图片看作为相连的两个节点,通过碰撞检测算法将图片散点图中各个图片之间的连接关系转换为邻接矩阵,得到n*n大小的邻接矩阵,其中,当图片i和图片j之间的邻接矩阵adjacent[i][j]==1时,表示图片i和图片j发生重叠,当图片i和图片j之间的邻接矩阵adjacent[i][j]==0时,表示图片i和图片j不发生重叠。
[0016]
其中,所述步骤3具体包括:
[0017]
步骤31,设置一个动态数组flags和一个动态数组islands,初始状态下动态数组flags存储了图片散点图中所有图片的id,动态数组islands为空;
[0018]
步骤32,从动态数组flags中取出一个图片的id,以当前图片的id为起点结合当前图片的邻接矩阵使用宽度优先搜索算法在图片散点图中寻找出所有与当前图片连通的图片的id,当有寻找到与当前图片连通的图片时,将所有寻找出的图片的id和当前图片的id存入新建数组island中,将新建数组island存入动态数组islands中,当未寻找到与当前图片连通的图片时,将当前图片的id存入新建数组flag中;
[0019]
步骤33,将存入新建数组island中的图片的id或存入新建数组flag中的图片的id从动态数组flags中删除;
[0020]
步骤34,当动态数组flags为空时,结束算法;当动态数组flags不为空时,跳转到步骤32继续执行,直到动态数组flags为空时,结束算法;
[0021]
得到存储了图片id的动态数组islands和新建数组flag,将动态数组islands中的各个新建数组island表示为各个连通图,将各个新建数组island中的图片id表示为相对应的连通图中的图片,将新建数组flag中的图片id表示为图片散点图中未被分配到连通图中的图片。
[0022]
其中,所述步骤4具体包括:
[0023]
步骤41,判断每个连通图中的图片数量是否大于1,当当前连通图中的图片数量不大于1时,对下一个连通图中的图片数量进行判断,当当前连通图中的图片数量大于1时,根据当前连通图中图片的id、图片坐标和图片宽高计算出当前连通图中图片的所有角的坐标,若当前连通图中有m张图片,则当前连通图中图片的所有角的坐标的计算结果为[m*4,
2]的二维矩阵,根据计算出的[m*4,2]二维矩阵计算凸包,凸包计算结果为p*2二维矩阵,其中,p是凸包中的顶点的个数。
[0024]
其中,所述步骤5具体包括:
[0025]
采用基于网格布局的搜索算法将每个凸包所包围的面积划分为多个小正方形,对每个凸包执行以下步骤:
[0026]
步骤51,计算凸包的二维矩阵中第一列和第二列的最小值和最大值,令其分别为x
min
、x
max
、y
min
和y
max
,则[x
min
,y
min
]和[x
max
,y
max
]分别为凸包的外接矩形的左上角坐标和右下角坐标,外接矩形的宽和高平行于坐标轴;
[0027]
步骤52,将凸包的面积除以凸包中图片的数量,得到需要划分的小正方形的面积,从小正方形的面积到1降序搜索出第一个平方数,将第一个平方数开根号得到小正方形的初始边长;
[0028]
步骤53,根据小正方形的初始边长在外接矩形中以外接矩形的一角为起点,对角为终点,划分出多个小正方形;
[0029]
步骤54,对每个划分出的小正方形的四个顶点进行判断,将凸包内小正方形的数量的初始值设为零,当当前小正方形的四个顶点均在凸包内时,将凸包内小正方形的数量加1,当当前小正方形的四个顶点中有一个顶点不在凸包内时,对下一个小正方形的四个顶点进行判断,直到遍历完外接矩形中划分出的所有小正方形,得到凸包中划分的小正方形的数量;
[0030]
步骤55,将凸包中划分的小正方形的数量与凸包中图片的数量进行比较,当凸包中划分的小正方形的数量大于或等于凸包中图片的数量时,结束算法,得到凸包中每个小正方形的坐标和宽高,当凸包中划分的小正方形的数量小于凸包中图片的数量时,将小正方形的初始边长减1,跳转到步骤53,直到得到凸包中划分的小正方形的数量大于或等于凸包中图片的数量,结束算法,得到凸包中每个小正方形的坐标和宽高;
[0031]
对每一个凸包执行以上步骤后,得到划分出的每个凸包中每个小正方形的坐标和宽高。
[0032]
其中,所述步骤6具体包括:
[0033]
获取图片散点图中每个凸包的凸包中心的坐标,根据每个凸包中每张图片的坐标和相对应的凸包中心的坐标分别计算每个凸包中的每张图片到相对应的凸包中心的距离,根据每个凸包中的每张图片到相对应的凸包中心之间的距离分别对每个凸包中的每张图片进行升序排列。
[0034]
其中,所述步骤6还包括:
[0035]
获取每个凸包中每个小正方形的坐标,根据每个凸包中心的坐标和每个凸包中每个小正方形的坐标分别计算每个凸包中每个小正方形到相对应的凸包中心的距离,根据每个凸包中每个小正方形到相对应的凸包中心之间的距离分别对每个凸包中每个小正方形进行升序排列。
[0036]
其中,所述步骤6还包括:
[0037]
将每个凸包中的每个小正方形的新坐标和新宽高分配到相对应的凸包中的图片,将图片移动到新的位置并缩放为新的大小,得到每个凸包中的每张图片新坐标和新宽高。
[0038]
本发明的上述方案有如下的有益效果:
[0039]
本发明的上述实施例所述的基于连通图和凸包的散点图去重叠算法,可以大幅减少以图片为标记的图片散点图的视觉重叠,完全消除图片散点图中单个凸包内的视觉重叠,为图片数据集的可视分析提供了有效的方法,提高了分析效率,用户可以准确感知图片散点图中图片的位置。
附图说明
[0040]
图1为本发明的流程图;
[0041]
图2为本发明的图片散点图;
[0042]
图3为本发明的连通图;
[0043]
图4为本发明的连通图的凸包示意图;
[0044]
图5为本发明的凸包的外接矩形示意图;
[0045]
图6为本发明的划分后的小正方形示意图;
[0046]
图7为本发明的小正方形与图片的匹配示意图;
具体实施方式
[0047]
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0048]
本发明针对现有的以图片为标记的散点图会出现比较严重的视觉重叠,导致用户无法准确感知图片的位置,从而降低了分析效率的问题,提供了一种基于连通图和凸包的散点图去重叠算法。
[0049]
如图1至图7所示,本发明的实施例提供了一种基于连通图和凸包的散点图去重叠算法,包括:步骤1,选取一个以图片为标记点的图片散点图,且图片散点图中的所有图片的四个边长都相等,获取图片散点图中每张图片的坐标和宽高;步骤2,通过碰撞检测算法计算图片散点图中各个图片之间的邻接矩阵;步骤3,根据计算出的各个图片之间的邻接矩阵和基于宽度优先搜索的暴力搜索方法计算图片散点图中所有图片的连通图;步骤4,对计算出的每个连通图计算凸包;步骤5,采用基于网格布局的搜索算法分别将计算出的每个凸包所包围的面积划分为多个宽高相同的小正方形;步骤6,将每个凸包中的图片按照图片到相对应的凸包中心的距离升序排列,将每个凸包中划分出小正方形按照小正方形到相对应的凸包中心的距离升序排列,获取每个凸包中的小正方形的坐标和宽高,将每个凸包中的小正方形的坐标和宽高分配到相对应的凸包中的图片,得到每个凸包中的每张图片新坐标和新宽高。
[0050]
本发明的上述实施例所述的基于连通图和凸包的散点图去重叠算法,选取一个以图片为标记点的图片散点图,且图片散点图中的图片都是正方形图片且所有图片的边长都相等,图片散点图中视觉上发生重叠的图片被视为连接关系,通过碰撞检测算法将散点图中的图片之间的连接关系转换为邻接矩阵,再通过基于宽度优先搜索的暴力搜素算法计算出若干个连通图,然后对每个连通图计算凸包并将凸包所包围的面积划分为足够多且面积尽可能大的小正方形,最后为凸包内的每张图片分配一个小正方的边长和坐标,将图片移动到新的位置并缩放为新的大小,得到每个凸包内的每张图片的新坐标和新宽高,可以清楚的看到图片散点图中的图片之间再无重叠。
[0051]
其中,所述步骤1具体包括:设定图片散点图的一个顶点为坐标原点、以坐标原点为起点的水平方向为x轴正方向和以坐标原点为起点的竖直方向为y轴正方向,获得图片散点图中所有图片的坐标和宽高。
[0052]
其中,所述步骤2具体包括:将图片散点图中的每张图片看作为一个节点,将图片散点图中在视觉上发生重叠的图片看作为发生了碰撞且将在视觉上发生重叠的图片看作为相连的两个节点,通过碰撞检测算法将图片散点图中各个图片之间的连接关系转换为邻接矩阵,得到n*n大小的邻接矩阵,其中,当图片i和图片j之间的邻接矩阵adjacent[i][j]==1时,表示图片i和图片j发生重叠,当图片i和图片j之间的邻接矩阵adjacent[i][j]==0时,表示图片i和图片j不发生重叠。
[0053]
其中,所述步骤3具体包括:步骤31,设置一个动态数组flags和一个动态数组islands,初始状态下动态数组flags存储了图片散点图中所有图片的id,动态数组islands为空;步骤32,从动态数组flags中取出一个图片的id,以当前图片的id为起点结合当前图片的邻接矩阵使用宽度优先搜索算法在图片散点图中寻找出所有与当前图片连通的图片的id,当有寻找到与当前图片连通的图片时,将所有寻找出的图片的id和当前图片的id存入新建数组island中,将新建数组island存入动态数组islands中,当未寻找到与当前图片连通的图片时,将当前图片的id存入新建数组flag中;步骤33,将存入新建数组island中的图片的id或存入新建数组flag中的图片的id从动态数组flags中删除;步骤34,当动态数组flags为空时,结束算法;当动态数组flags不为空时,跳转到步骤32继续执行,直到动态数组flags为空时,结束算法;得到存储了图片id的动态数组islands和新建数组flag,将动态数组islands中的各个新建数组island表示为各个连通图,将各个新建数组island中的图片id表示为相对应的连通图中的图片,将新建数组flag中的图片id表示为图片散点图中未被分配到连通图中的图片。
[0054]
本发明的上述实施例所述的基于连通图和凸包的散点图去重叠算法,图3为所述步骤3的计算结果可视化,将图片用等长的正方形替代后,用直线连接所有同属于一个连通图的图片,从中可以看出所述步骤3找出了所有连通图,图中仅有一个图片的情况也被视作一个连通图,根据计算出的邻接矩阵和基于宽度优先搜索的暴力搜索方法计算出所有的连通图,每个连通图内的图片都可以通过有视觉重叠的图片相连,连通图内的图片数量为m,其中,1≤m≤n,n表示散点图中所有图片的数量。所述步骤3的计算结果是二维列表,内层列表记录了每个连通图中所有图片的id,外层列表由内层列表组成。
[0055]
其中,所述步骤4具体包括:步骤41,判断每个连通图中的图片数量是否大于1,当当前连通图中的图片数量不大于1时,对下一个连通图中的图片数量进行判断,当当前连通图中的图片数量大于1时,根据当前连通图中图片的id、图片坐标和图片宽高计算出当前连通图中图片的所有角的坐标,若当前连通图中有m张图片,则当前连通图中图片的所有角的坐标的计算结果为[m*4,2]的二维矩阵,根据计算出的[m*4,2]二维矩阵计算凸包,凸包计算结果为p*2二维矩阵,其中,p是凸包中的顶点的个数。
[0056]
本发明的上述实施例所述的基于连通图和凸包的散点图去重叠算法,凸包(convex hull)是一个计算几何(图形学)中的概念,在一个实数向量空间v中,对于给定集合x,所有包含x的凸集的交集z被称为x的凸包,x的凸包可以用x内所有点(x1,...,x
n
)的凸组合来构造。在二维欧几里得空间中,凸包可想象为一条刚好包着所有点的橡皮圈。或是为
给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。计算每个连通图中所有图片所构成的凸包,计算结果为p*2的二维数组,其中,p为凸包中顶点的个数,内层为每个顶点的坐标。
[0057]
其中,所述步骤5具体包括:采用基于网格布局的搜索算法将每个凸包所包围的面积划分为多个小正方形,对每个凸包执行以下步骤:步骤51,计算凸包的二维矩阵中第一列和第二列的最小值和最大值,令其分别为x
min
、x
max
、y
min
和y
max
,则[x
min
,y
min
]和[x
max
,y
max
]分别为凸包的外接矩形的左上角坐标和右下角坐标,外接矩形的宽和高平行于坐标轴;步骤52,将凸包的面积除以凸包中图片的数量,得到需要划分的小正方形的面积,从小正方形的面积到1降序搜索出第一个平方数,将第一个平方数开根号得到小正方形的初始边长;步骤53,根据小正方形的初始边长在外接矩形中以外接矩形的一角为起点,对角为终点,划分出多个小正方形;步骤54,对每个划分出的小正方形的四个顶点进行判断,将凸包内小正方形的数量的初始值设为零,当当前小正方形的四个顶点均在凸包内时,将凸包内小正方形的数量加1,当当前小正方形的四个顶点中有一个顶点不在凸包内时,对下一个小正方形的四个顶点进行判断,直到遍历完外接矩形中划分出的所有小正方形,得到凸包中划分的小正方形的数量;步骤55,将凸包中划分的小正方形的数量与凸包中图片的数量进行比较,当凸包中划分的小正方形的数量大于或等于凸包中图片的数量时,结束算法,得到凸包中每个小正方形的坐标和宽高,当凸包中划分的小正方形的数量小于凸包中图片的数量时,将小正方形的初始边长减1,跳转到步骤53,直到得到凸包中划分的小正方形的数量大于或等于凸包中图片的数量,结束算法,得到凸包中每个小正方形的坐标和宽高;对每一个凸包执行以上步骤后,得到划分出的每个凸包中每个小正方形的坐标和宽高。
[0058]
其中,所述步骤6具体包括:获取图片散点图中每个凸包的凸包中心的坐标,根据每个凸包中每张图片的坐标和相对应的凸包中心的坐标分别计算每个凸包中的每张图片到相对应的凸包中心的距离,根据每个凸包中的每张图片到相对应的凸包中心之间的距离分别对每个凸包中的每张图片进行升序排列。
[0059]
其中,所述步骤6还包括:获取每个凸包中每个小正方形的坐标,根据每个凸包中心的坐标和每个凸包中每个小正方形的坐标分别计算每个凸包中每个小正方形到相对应的凸包中心的距离,根据每个凸包中每个小正方形到相对应的凸包中心之间的距离分别对每个凸包中每个小正方形进行升序排列。
[0060]
其中,所述步骤6还包括:将每个凸包中的每个小正方形的新坐标和新宽高分配到相对应的凸包中的图片,将图片移动到新的位置并缩放为新的大小,得到每个凸包中的每张图片新坐标和新宽高。
[0061]
本发明的上述实施例所述的基于连通图和凸包的散点图去重叠算法,图4为所述步骤4的计算结果可视化,图5为每个凸包的外接矩形可视化,图6为每个凸包划分为多个小正方形的结果可视化;图7为凸包中的小正方形与凸包中的图片匹配后的结果可视化,为每一个图片分配一个小正方形后将原始图片移动到新的位置并缩放为新的大小,图7与图2相比较可以看出,消除了单个凸包内的视觉重叠,大幅减轻了以图片为标记的散点图的整体视觉重叠。
[0062]
本发明的上述实施例所述的基于连通图和凸包的散点图去重叠算法,大幅减少了以图片为标记的图片散点图的视觉重叠,完全消除了图片散点图中单个凸包内的视觉重
叠,为图片数据集的可视分析提供了有效的方法,提高了分析效率,用户可以准确感知图片散点图中图片的位置。
[0063]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
技术特征:
1.一种基于连通图和凸包的散点图去重叠算法,其特征在于,包括:步骤1,选取一个以图片为标记点的图片散点图,且图片散点图中的所有图片的四个边长都相等,获取图片散点图中每张图片的坐标和宽高;步骤2,通过碰撞检测算法计算图片散点图中各个图片之间的邻接矩阵;步骤3,根据计算出的各个图片之间的邻接矩阵和基于宽度优先搜索的暴力搜索方法计算图片散点图中所有图片的连通图;步骤4,对计算出的每个连通图计算凸包;步骤5,采用基于网格布局的搜索算法分别将计算出的每个凸包所包围的面积划分为多个宽高相同的小正方形;步骤6,将每个凸包中的图片按照图片到相对应的凸包中心的距离升序排列,将每个凸包中划分出小正方形按照小正方形到相对应的凸包中心的距离升序排列,获取每个凸包中的小正方形的坐标和宽高,将每个凸包中的小正方形的坐标和宽高分配到相对应的凸包中的图片,得到每个凸包中的每张图片新坐标和新宽高。2.根据权利要求1所述的基于连通图和凸包的散点图去重叠算法,其特征在于,所述步骤1具体包括:设定图片散点图的一个顶点为坐标原点、以坐标原点为起点的水平方向为x轴正方向和以坐标原点为起点的竖直方向为y轴正方向,获得图片散点图中所有图片的坐标和宽高。3.根据权利要求2所述的基于连通图和凸包的散点图去重叠算法,其特征在于,所述步骤2具体包括:将图片散点图中的每张图片看作为一个节点,将图片散点图中在视觉上发生重叠的图片看作为发生了碰撞且将在视觉上发生重叠的图片看作为相连的两个节点,通过碰撞检测算法将图片散点图中各个图片之间的连接关系转换为邻接矩阵,得到n*n大小的邻接矩阵,其中,当图片i和图片j之间的邻接矩阵adjacent[i]j]==1时,表示图片i和图片j发生重叠,当图片i和图片j之间的邻接矩阵adjacent[i]j]==0时,表示图片i和图片j不发生重叠。4.根据权利要求3所述的基于连通图和凸包的散点图去重叠算法,其特征在于,所述步骤3具体包括:步骤31,设置一个动态数组flags和一个动态数组islands,初始状态下动态数组flags存储了图片散点图中所有图片的id,动态数组islands为空;步骤32,从动态数组flags中取出一个图片的id,以当前图片的id为起点结合当前图片的邻接矩阵使用宽度优先搜索算法在图片散点图中寻找出所有与当前图片连通的图片的id,当有寻找到与当前图片连通的图片时,将所有寻找出的图片的id和当前图片的id存入新建数组island中,将新建数组island存入动态数组islands中,当未寻找到与当前图片连通的图片时,将当前图片的id存入新建数组flag中;步骤33,将存入新建数组island中的图片的id或存入新建数组flag中的图片的id从动态数组flags中删除;步骤34,当动态数组flags为空时,结束算法;当动态数组flags不为空时,跳转到步骤32继续执行,直到动态数组flags为空时,结束算法;得到存储了图片id的动态数组islands和新建数组flag,将动态数组islands中的各个
新建数组island表示为各个连通图,将各个新建数组island中的图片id表示为相对应的连通图中的图片,将新建数组flag中的图片id表示为图片散点图中未被分配到连通图中的图片。5.根据权利要求4所述的基于连通图和凸包的散点图去重叠算法,其特征在于,所述步骤4具体包括:步骤41,判断每个连通图中的图片数量是否大于1,当当前连通图中的图片数量不大于1时,对下一个连通图中的图片数量进行判断,当当前连通图中的图片数量大于1时,根据当前连通图中图片的id、图片坐标和图片宽高计算出当前连通图中图片的所有角的坐标,若当前连通图中有m张图片,则当前连通图中图片的所有角的坐标的计算结果为[m*4,2]的二维矩阵,根据计算出的[m*4,2]二维矩阵计算凸包,凸包计算结果为p*2二维矩阵,其中,p是凸包中的顶点的个数。6.根据权利要求5所述的基于连通图和凸包的散点图去重叠算法,其特征在于,所述步骤5具体包括:采用基于网格布局的搜索算法将每个凸包所包围的面积划分为多个小正方形,对每个凸包执行以下步骤:步骤51,计算凸包的二维矩阵中第一列和第二列的最小值和最大值,令其分别为x
min
、x
max
、y
min
和y
max
,则[x
min
,y
min
]和[x
max
,y
max
]分别为凸包的外接矩形的左上角坐标和右下角坐标,外接矩形的宽和高平行于坐标轴;步骤52,将凸包的面积除以凸包中图片的数量,得到需要划分的小正方形的面积,从小正方形的面积到1降序搜索出第一个平方数,将第一个平方数开根号得到小正方形的初始边长;步骤53,根据小正方形的初始边长在外接矩形中以外接矩形的一角为起点,对角为终点,划分出多个小正方形;步骤54,对每个划分出的小正方形的四个顶点进行判断,将凸包内小正方形的数量的初始值设为零,当当前小正方形的四个顶点均在凸包内时,将凸包内小正方形的数量加1,当当前小正方形的四个顶点中有一个顶点不在凸包内时,对下一个小正方形的四个顶点进行判断,直到遍历完外接矩形中划分出的所有小正方形,得到凸包中划分的小正方形的数量;步骤55,将凸包中划分的小正方形的数量与凸包中图片的数量进行比较,当凸包中划分的小正方形的数量大于或等于凸包中图片的数量时,结束算法,得到凸包中每个小正方形的坐标和宽高,当凸包中划分的小正方形的数量小于凸包中图片的数量时,将小正方形的初始边长减1,跳转到步骤53,直到得到凸包中划分的小正方形的数量大于或等于凸包中图片的数量,结束算法,得到凸包中每个小正方形的坐标和宽高;对每一个凸包执行以上步骤后,得到划分出的每个凸包中每个小正方形的坐标和宽高。7.根据权利要求6所述的基于连通图和凸包的散点图去重叠算法,其特征在于,所述步骤6具体包括:获取图片散点图中每个凸包的凸包中心的坐标,根据每个凸包中每张图片的坐标和相对应的凸包中心的坐标分别计算每个凸包中的每张图片到相对应的凸包中心的距离,根据
每个凸包中的每张图片到相对应的凸包中心之间的距离分别对每个凸包中的每张图片进行升序排列。8.根据权利要求7所述的基于连通图和凸包的散点图去重叠算法,其特征在于,所述步骤6还包括:获取每个凸包中每个小正方形的坐标,根据每个凸包中心的坐标和每个凸包中每个小正方形的坐标分别计算每个凸包中每个小正方形到相对应的凸包中心的距离,根据每个凸包中每个小正方形到相对应的凸包中心之间的距离分别对每个凸包中每个小正方形进行升序排列。9.根据权利要求8所述的基于连通图和凸包的散点图去重叠算法,其特征在于,所述步骤6还包括:将每个凸包中的每个小正方形的新坐标和新宽高分配到相对应的凸包中的图片,将图片移动到新的位置并缩放为新的大小,得到每个凸包中的每张图片新坐标和新宽高。
技术总结
本发明提供了一种基于连通图和凸包的散点图去重叠算法,包括:步骤1,选取一个以图片为标记点的图片散点图,且图片散点图中的所有图片的四个边长都相等,获取图片散点图中每张图片的坐标和宽高;步骤2,通过碰撞检测算法计算图片散点图中各个图片之间的邻接矩阵;步骤3,根据计算出的各个图片之间的邻接矩阵和基于宽度优先搜索的暴力搜索方法计算图片散点图中所有图片的连通图;步骤4,对计算出的每个连通图计算凸包。本发明可以大幅减少以图片为标记的图片散点图的视觉重叠,完全消除图片散点图中单个凸包内的视觉重叠,为图片数据集的可视分析提供了有效的方法,提高了分析效率,用户可以准确感知图片散点图中图片的位置。用户可以准确感知图片散点图中图片的位置。用户可以准确感知图片散点图中图片的位置。
技术研发人员:廖志芳 孙金生 赵颖 郁松 龙军
受保护的技术使用者:中南大学
技术研发日:2021.03.24
技术公布日:2021/6/29
转载请注明原文地址:https://doc.8miu.com/read-31785.html