掌桥专利:专业的专利平台
掌桥专利
首页

标志点的匹配方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 12:07:15


标志点的匹配方法、装置、计算机设备和存储介质

技术领域

本发明涉及激光扫描技术领域,特别是涉及一种标志点的匹配方法、装置、计算机设备和存储介质。

背景技术

在激光实时三维扫描中,不同视角的点云图要最终拼接到一起,那么对点云位置关系的跟踪和计算十分重要。目前的三维扫描广泛应该用反光标志点进行定位,其原理是不同视角下,标志点对应的三维位置是完全不一样的,标志点之间的拓扑关系不发生变换,因此利用这个原理,通过变换可以得到不同视角时手持扫描仪器之间的相对位置关系,从而可以将不同视角下点云成功拼接。传统的标志点的匹配方法,直接用三角形全等筛选出准确的匹配点,再根据其他检验属性确定最佳变换关系,而传统的标志点的匹配方法,存在时间复杂度高的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种能够降低时间复杂度的标志点的匹配方法、装置、计算机设备和计算机可读存储介质。

一种标志点的匹配方法,所述方法包括:

获取前向帧中的前向标志点集合;

从所述前向标志点集合中,多次选取三个不同的前向标志点,获得前向点组集合;

将所述前向点组集合中各点组所构建的三角形的三条边的边长,分别作为前向三维点的各坐标值,获得前向三维点坐标集合;

获取当前帧中的当前标志点集合;

从所述当前标志点集合中,多次选取三个不同的当前标志点,获得当前点组集合;

将所述当前点组集合中各点组所构建的三角形的三条边的边长,分别作为当前三维点的各坐标值,获得当前三维点坐标集合;

根据所述前向三维点坐标集合和所述当前三维点坐标集合进行空间搜索,获得相匹配的三角形对;

根据所述相匹配的三角形对进行点云拼接。

一种标志点的匹配装置,所述装置包括:

第一获取模块,用于获取前向帧中的前向标志点集合;

第一选取模块,用于从所述前向标志点集合中,多次选取三个不同的前向标志点,获得前向点组集合;

前向三维点坐标集合获取模块,用于将所述前向点组集合中各点组所构建的三角形的三条边的边长,分别作为前向三维点的各坐标值,获得前向三维点坐标集合;

第二获取模块,用于获取当前帧中的当前标志点集合;

第二选取模块,用于从所述当前标志点集合中,多次选取三个不同的当前标志点,获得当前点组集合;

当前三维点坐标集合获取模块,用于将所述当前点组集合中各点组所构建的三角形的三条边的边长,分别作为当前三维点的各坐标值,获得当前三维点坐标集合;

空间搜索模块,用于根据所述前向三维点坐标集合和所述当前三维点坐标集合进行空间搜索,获得相匹配的三角形对;

拼接模块,用于根据所述相匹配的三角形对进行点云拼接。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现标志点的匹配方法的各方法实施例。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现标志点的匹配方法的各方法实施例。

上述标志点的匹配方法、装置、计算机设备和存储介质,从标志点集合中多次选取不同的标志点,并将所构建得到的三角形的三边长作为三维点的各坐标值,基于三维点进行空间搜索,从而获得相匹配的三角形对,实现点云拼接;利用了三边边长对应相等相同的三角形为全等的原理,将三角形的三条边化为三个点,从而能够结合空间搜索的方式,将复杂的三角形匹配问题简化,降低了时间复杂度。

附图说明

图1为一个实施例中点云拼接的应用环境图;

图2为一个实施例中标志点的匹配方法的流程示意图;

图3为一个实施例中获得相匹配的三角形对的流程示意图;

图4为一个实施例中八叉树划分的示意图;

图5为另一个实施例中标志点的匹配方法的流程示意图;

图6为一个实施例中标志点的匹配装置的结构框图;

图7为一个实施例中计算机设备的内部结构图。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变,所述的连接可以是直接连接,也可以是间接连接。

另外,在本发明中如涉及“前向”、“当前”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“前向”、“当前”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

在一个实施例中,如图1所示,为一个实施例中点云拼接的应用环境图。图1中包括第一摄像设备110、第二摄像设备120、激光发射器130、物体140和计算机设备150。物体140上可包含标志点。计算机设备150可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、车载设备、便携式可穿戴设备和服务器。第一摄像设备110、第二摄像设备120和激光发射器130分别与计算机设备150相连。第一摄像设备110和第二摄像设备120不是同一摄像设备,并且第一摄像设备110和第二摄像设备120位于不同的位置。激光发射器130向物体140发射多条激光,扫描整个物体140,扫描的同时拍摄物体140,通过第一摄像设备110拍摄得到第一激光图,通过第二摄像设备120拍摄得到第二激光图。计算机设备150基于第一激光图和第二激光图生成当前帧,其中当前帧是基于第一激光图和第二激光图所构建成的三维图像帧。前向帧是在当前帧之前的三维图像帧。可以理解的是,本申请各实施例中的标志点的匹配方法也可以仅应用于计算机设备中。

在一个实施例中,如图2所示,为一个实施例中标志点的匹配方法的流程示意图,一种标志点的匹配方法,应用于激光三维扫描,包括:

步骤202,获取前向帧中的前向标志点集合。

其中,前向帧是指在当前帧之前所得到的三维图像帧。前向帧具体是通过线激光发射器向物体发射线激光后所获得的且在当前帧之前的前向三维图像帧。前向帧具体可以与当前帧相连的前一帧的图像帧,也可以是当前帧的两帧之前的图像帧等不限于此。

前向标志点集合中包括至少三个前向标志点。前向标志点是三维空间中的点。前向标志点集合中可包括前向标志点坐标集合。

具体地,计算机设备获取通过第一摄像设备拍摄的第一激光图以及通过第二摄像设备拍摄的第二激光图,根据第一激光图和第二激光图生成前向帧。计算机设备识别前向帧中的前向标志点,获得前向标志点集合。

步骤204,从前向标志点集合中,多次选取三个不同的前向标志点,获得前向点组集合。

其中,前向点组集合中包括至少两个前向点组。每个前向点组中包括三个标志点。

具体地,计算机设备从前向标志点集合中,每次任意选取三个不同的前向标志点,构建得到前向点组,通过多次选取获得前向点组集合。

本实施例中,计算机设备可以从前向标志点集合中,遍历搜索三个不同的前向标志点,获得前向点组集合。

本实施例中,计算机设备可从前向标志点集合中,遍历搜索三个不同的前向标志点,并从中筛选出能够构建非等腰三角形的标志点集合,获得前向标志点集合。

步骤206,将前向点组集合中各点组所构建的三角形的三条边的边长,分别作为前向三维点的各坐标值,获得前向三维点坐标集合。

其中,三角形三条边的边长可以是l

具体地,已知三个点的坐标,可以构建出一个三角形,并且可计算出该三角形的三条边的边长。计算机设备计算前向点组集合中各点组所构建三角形的三条边的边长,并按照边长从小到大的顺序或者从大到小的顺序等对各点组的三条边进行排序,获得前向三维点坐标集合。

步骤208,获取当前帧中的当前标志点集合。

其中,当前帧是指在当前正在处理的三维图像帧。当前帧具体是通过线激光发射器向物体发射线激光后所获得的当前三维图像帧。

当前标志点集合中包括至少四个当前标志点。当前标志点是三维空间中的点。当前标志点集合中可包括当前标志点坐标集合。

具体地,计算机设备获取当前通过第一摄像设备拍摄的第一激光图以及通过第二摄像设备拍摄的第二激光图,根据第一激光图和第二激光图生成当前帧。计算机设备识别当前帧中的当前标志点,获得当前标志点集合。

步骤210,从当前标志点集合中,多次选取三个不同的当前标志点,获得当前点组集合。

其中,前向点组集合中包括至少两个前向点组。每个前向点组中包括三个标志点。

具体地,计算机设备从当前标志点集合中,每次任意选取三个不同的当前标志点,构建得到当前点组,通过多次选取获得当前点组集合。

本实施例中,计算机设备可以从当前标志点集合中,遍历搜索三个不同的当前标志点,获得当前点组集合。

本实施例中,计算机设备可从当前标志点集合中,遍历搜索三个不同的当前标志点,并从中筛选出能够构建非等腰三角形的标志点集合,获得当前标志点集合。

步骤212,将当前点组集合中各点组所构建的三角形的三条边的边长,分别作为当前三维点的各坐标值,获得当前三维点坐标集合。

具体地,计算机设备计算当前点组集合中各点组所构建三角形的三条边的边长,并按照边长从小到大的顺序或者从大到小的顺序等对各点组的三条边进行排序,获得当前三维点坐标集合。

步骤214,根据前向三维点坐标集合和当前三维点坐标集合进行空间搜索,获得相匹配的三角形对。

其中,相匹配的三角形对中的一个三角形是前向三维点坐标所围成的三角形,另一个三角形是当前三维点坐标围成的三角形。相匹配的三角形对中的三角形具体可以是全等三角形。在一定误差范围内三条边接近相等的三角形可视为全等三角形。

具体地,计算机设备根据前向三维点坐标集合中的前向三维点坐标在当前三维点坐标集合中进行空间近邻搜索,获得相匹配的三角形对。

可选地,计算机设备根据当前三维点坐标集合中的当前三维点坐标在前向三维点坐标集合中进行空间近邻搜索,获得相匹配的三角形对。

本实施例中,计算机设备根据前向三维点坐标集合和当前三维点坐标集合进行空间搜索,获得空间搜索结果;对空间搜索结果中的前向三维点坐标和当前三维点坐标进行匹配,获得相匹配的三角形对。其中,空间搜索结果是指在相近或相同的空间节点中所搜索得到的前向三维点坐标和当前三维点坐标。计算机设备计算在相近或相同的空间节点中所搜索得到的前向三维点坐标和当前三维点坐标进行匹配,在匹配度超过或等于匹配度阈值时,将超过或等于匹配度阈值的前向三维点坐标和对应的当前三维点坐标作为相匹配的三角形对。

步骤216,根据相匹配的三角形对进行点云拼接。

具体地,计算机设备根据相匹配的三角形对确定目标变换参数;根据目标变换参数进行点云拼接,获得点云图。其中,目标变换参数可以包括刚性变换矩阵,还可以包括平移矩阵。

上述标志点的匹配方法,从标志点集合中多次选取不同的标志点,并将所构建得到的三角形的三边长作为三维点的各坐标值,基于三维点进行空间搜索,从而获得相匹配的三角形对,实现点云拼接;传统的三角形匹配方式是从一张图的标志点中选取C

在一个实施例中,如图3所示,图3为一个实施例中获得相匹配的三角形对的流程示意图,根据前向三维点坐标和当前三维点坐标进行空间搜索,获得相匹配的三角形对,包括:

步骤302,对于前向三维点坐标集合中的前向三维点坐标,将前向三维点坐标按照空间索引结构存储;前向三维点坐标存储于空间节点。

其中,空间索引结构可以是BSP(Binary Space Partitioning,二叉空间分割)树、KD(K-Dimensional,k维)树、KDB(K-Dimensional B,k维B)树、R树、R+树、CELL树、四叉树和八叉树等。

具体地,对于前向三维点坐标集合中的前向三维点坐标,计算机设备将各三维点坐标按照空间索引结构存储,前向三维点坐标存储于各空间节点中。即前向三维点坐标具有对应的节点索引。

本实施例中,八叉树是KD树在三维情况下的一种特殊的数据结构。如图4所示,图4为一个实施例中八叉树划分的示意图。图4左图中一个方块表示一个节点,再对方块进行划分时,划分得到的方块是原方块的子节点。如图4右图所示,一个圆圈表示一个节点。八叉树的优点在于能快速在树结构里面进行搜索以便后处理,且增加或删除新分支十分迅速,其建立过程如下:

①设置最大迭代次数,最小空间尺度,每个空间节点中的最大点数目;

②将点云的最大包围盒(bounding box)作为第一层父节点;

③如果当前条件未满足①,且当前节点立方体包含点云的点,则当前立方体均等分8个,更新当前节点为划分后的节点;

④若子节点立方体不包含点云点或者子节点包含的点和父节点立方体包含的点一模一样,则当前分支的划分停止;否则执行③;

⑤若立方体所有节点划分停止或当前条件满足①中的任何一个条件,则八叉树建立停止。

步骤304,根据当前三维点坐标确定对应的当前空间索引。

具体地,计算机设备根据当前三维点坐标计算出当前空间索引。例如,当前三维点坐标为(x,y,z),那么对应的当前空间索引为(x/dx,y/dy,z/dz),其中dx、dy和dy分别是空间节点的最小长度、宽度和高度。

步骤306,根据当前空间索引在空间节点中搜索对应的前向三维点坐标,获得当前三维点坐标对应的目标前向三维点坐标。

其中,目标前向三维点坐标即在三维空间节点中与前向三维点坐标相邻的点。

具体地,计算机设备可在当前空间索引所对应的空间节点中搜索与该当前空间索引所对应的前向三维点坐标。或者,计算机设备可在当前空间索引所对应的空间节点以及该空间节点所对应的相邻空间节点中,搜索与该当前空间索引所对应的前向三维点坐标。

步骤308,将当前三维点坐标和对应的目标前向三维点坐标进行匹配,将匹配成功的当前三维点坐标和对应的目标前向三维点坐标作为相匹配的三角形对。

具体地,计算机设备将前向三维点坐标和对应的目标三维点坐标进行匹配,在匹配度超过或等于匹配度阈值的情况下,将超过或等于匹配度阈值的前向三维点坐标和对应的目标当前三维点坐标作为相匹配的三角形对。

或者,计算机设备将前向三维点坐标和对应的目标三维点坐标进行匹配获得对应的距离值,在距离值小于或等于距离阈值的情况下,将小于或等于距离阈值的前向三维点坐标和对应的目标当前三维点坐标作为相匹配的三角形对。

本实施例中,将前向三维点坐标按照空间索引结构存储于空间节点中,根据当前三维点坐标确定对应的空间索引,并在空间节点中搜索对应的前向三维点坐标,从而获得相匹配的三角形对,能够将结合快速空间搜索算法迅速找到相匹配的三角形对,大幅度降低循环的次数,从而降低时间复杂度。

在一个实施例中,根据相匹配的三角形对进行点云拼接,包括:

步骤(a1),对于各相匹配的三角形对,确定相匹配的三角形对所对应的候选变换参数。

其中,候选变换参数包括候选刚性变换矩阵,还可以包括候选平移矩阵。通过求解刚性变换矩阵,则可以算出当前帧的坐标系中的点在前向帧的坐标系中的对应点坐标。或者可以算出前向帧的坐标系中的点在当前帧的坐标系中的对应点坐标。

具体地,计算机设备根据每对相匹配的三角形对分别计算对应的候选变换参数。即每对相匹配的三角形对均有对应的候选变换参数。计算机设备通过刚性变换以及SVD分解(singular value decomposition)求得候选变换参数。

步骤(a2),按照候选变换参数对当前标志点集合进行变换,获得该候选变换参数对应的变换后的当前标志点集合。

具体地,对于各候选变换参数,计算机设备按照该候选变换参数对当前标志点集合进行变换,获得该候选变换参数对应的变换后的当前标志点集合。变换后的当前标志点集合中包括各变换后的当前标志点。

步骤(a3),将前向标志点集合和变换后的当前标志点集合进行匹配,获得该候选变换参数对应的标志点匹配结果。

具体他,计算机设备具体可以采用计算矩阵相似度的方式将前向标志点集合和变换后的标志点集合进行匹配,获得该候选变换参数对应的标志点相似度。

步骤(a4),根据标志点匹配结果确定目标变换参数。

具体地,计算机设备可将标志点匹配相似度最高的候选变换参数作为目标换换参数。

本实施例中,计算机设备可将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的匹配点对。计算机设备根据候选变换参数对应的匹配点对重新计算得到目标变换参数。

步骤(a5),根据目标变换参数进行点云拼接。

本实施例中,由于从前向帧和当前帧中确定的相匹配的三角形对可能有很多对,基于这些相匹配的三角形对能够计算出多个候选变换参数,此时需要从中进行筛选得到一个最佳的目标变换参数;因此通过按照各候选变换参数对当前标志点集合进行变换,获得候选变换参数对应的变换后的当前标志点集合,并与前向前向标志点集合进行匹配,根据匹配结果确定目标变换参数,即可从中选择匹配较好的目标变换参数,提高三维点云拼接的准确性。

在一个实施例中,将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的标志点匹配结果,包括:将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的匹配点对;统计匹配点对的数量;

根据各候选变换参数对应的标志点匹配结果确定目标变换参数,包括:从各候选变换参数对应的匹配点对的数量中,确定最大数量的匹配点对;根据最大数量的匹配点对确定目标变换参数。

具体地,计算机设备将前向标志点集合中的前向标志点和变换后的当前标志点集合中的当前标志点进行匹配,当标志点匹配度等于或大于匹配阈值时,将等于或大于匹配阈值的点对作为匹配点对。计算机设备统计匹配点对的数量。计算机设备从各候选变换参数对应的匹配点对的数量中,确定最大数量的匹配点对。

计算机设备将最大数量的匹配点对所对应的候选变换参数作为目标变换参数。或者,计算机设备将满足数量阈值条件的最大数量的匹配点对所对应的候选变换参数作为目标变换参数。其中,数量阈值条件可以是大于3。或者,计算机设备根据最大数量的匹配点对的各匹配点对重新计算出目标变换参数。

本实施例中,由于通过相匹配的三角形对所计算出的候选变换参数不一定适用于当前帧中其它标志点的变换,因此通过将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的匹配点对,并统计匹配点对的数量,匹配点数量能在一定程度上反应候选变换参数的准确度,因此可根据最大数量的匹配点对确定目标变换参数,从而确定出一个较佳的变换参数,提高点云拼接的准确性。

在一个实施例中,根据最大数量的匹配点对确定目标变换参数,包括:当存在至少两个最大数量时,获取每个最大数量所对应的匹配点对的误差值;根据误差值最小的候选变换参数确定目标变换参数。

其中,匹配点对的误差值可以是通过计算两个标志点之间的欧几里得距离等获得。

具体地,当存在两个或者两个以上该最大数量时,计算机设备获取每个最大数量所对应的匹配点对的误差值,将误差值最小的候选变换参数作为目标变换参数。

本实施例中,当存在至少两个满足数量阈值条件的最大数量时,计算机设备获取每个最大数量所对应的匹配点的误差,将满足误差阈值条件的且误差值最小的候选变换参数作为目标变换参数。其中,数量阈值条件可以是大于3,误差阈值条件可以是小于或等于误差阈值。

本实施例中,在实际操作过程中,可能会存在最大数量相同的情况,因此需要获取每个最大数量所对应的匹配点对的误差值,根据误差值最小的候选变换参数确定目标变换参数,能够提高目标变换参数的准确性,从而提高点云拼接的准确性。

在一个实施例中,根据误差值最小的候选变换参数确定目标变换参数,包括:获取误差值最小的候选变换参数所对应的匹配点对;根据匹配点对确定目标变换参数。

具体地,计算机设备获取误差值最小的候选变换参数所对应的匹配点对;根据匹配点对重新计算得到目标变换参数。例如,误差值最小的候选变换参数为RT_pre,那么获取RT_pre所对应的匹配点对points_pair,利用points_pair中的n对顶点重新计算获得目标变换参数RT。

本实施例中,由于通过相匹配的三角形对计算出目标变换参数的样本点的数量太少,因此获取误差值最小的候选变换参数所对应的匹配点对,根据该匹配点对确定目标变换参数,能够获得更多的匹配点对,从而获得一个更加准确的目标变换参数。

在一个实施例中,前向标志点集合包括前向标志点坐标集合和前向标志点法向量集合;当前标志点集合包括当前标志点坐标集合和当前标志点法向量集合。

将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的匹配点对,包括:

将前向标志点坐标集合和当前标志点坐标集合进行匹配,获得各标志点对的坐标匹配结果;

将前向标志点法向量集合和当前标志点法向量集合进行匹配,获得各标志点对的法向量匹配结果;

将坐标匹配结果为相匹配的且法向量匹配结果为相匹配的标志点对作为候选变换参数对应的匹配点对。

其中,前向标志点法向量是指在三维图像中该前向标志点的朝向。坐标匹配结果可以是不匹配或者相匹配,具体可以通过相似度、差异值等确定。法向量匹配结果也可以是不匹配或者相匹配,具体可以通过相似度、差异值等确定。

具体地,计算机设备将前向标志点坐标集合和变换后的当前标志点坐标集合进行匹配,获得各标志点对的坐标匹配结果。将前向标志点坐标法向量集合和变换后的当前标志点法向量集合进行匹配,获得各标志点对的法向量匹配结果。计算机设备将坐标匹配结果为相匹配的且法向量匹配结果为相匹配的标志点对作为候选变换参数对应的匹配点对。

本实施例中,由于前向标志点坐标集合中均是三维空间中的标志点,那么有对应的法向量,通过对前向标志点坐标和前向标志点法向量两个参数进行匹配,获得坐标相匹配且法向量相匹配的标志点对作为匹配点对,能够提高目标变换参数的准确性。

在一个实施例中,在根据目标变换参数进行点云拼接之后,该标志点的匹配方法还包括:

获取按照目标变换参数进行变换所得到的变换后的当前标志点集合;

根据变换后的当前标志点集合更新前向标志点集合,获得更新后的前向标志点集合;

将更新后的前向标志点集合作为前向帧中的前向标志点集合;

获取后向帧的后向标志点集合,将后向帧作为下一个当前帧,将后向标志点集合作为当前标志点集合,将所述目标变换参数作为唯一的候选变换参数;返回执行将所述前向标志点集合和所述变换后的当前标志点集合进行匹配,获得所述候选变换参数对应的标志点匹配结果的步骤。

具体地,在根据目标变换参数进行点云拼接之后,计算机设备获取按照该目标变换参数进行变换所得到的变换后的当前标志点集合。

将变换后的当前标志点集合中各变换后的当前标志点的坐标与前向标志点集合中的前向标志点的坐标求平均,获得更新后的前向标志点集合。且在变换后的当前标志点集合中存在新的变换后的当前标志点的情况下,计算机设备将新的变换后的当前标志点添加到前向标志点集合中。

计算机设备将更新后的前向标志点集合作为前向帧中的前向标志点集合,计算机设备获取后向帧的后向标志点集合,将后向帧作为下一个当前帧,将后向标志点集合作为当前标志点集合,将目标变换参数作为唯一的候选变换参数;返回执行将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的标志点匹配结果的步骤,直至计算机设备关机或者直至处理到视频的最后一帧结束。其中,前向帧可以是第1帧,当前帧可以是第2帧,后向帧可以是第3帧,而在实际处理过程中,该后向帧作为当前帧进行处理。

以目标变换参数为target_RT、前向标志点集合为first_space、当前标志点集合为next_space、变换后的当前标志点集合为transform_space、更新后的前向标志点集合为update_space为例进行说明。按照target_RT将next_space进行变换,获得transform_space。根据transform_space更新first_space,获得update_space。first_space=update_space,此时得到新的first_space。计算机设备给next_space重新赋值为后向帧的标志点集合,计算机将first_space=update_space 和transform_space进行匹配,获得target_RT对应的匹配点对,根据该匹配点对计算出新的目标变换参数。

本实施例中,在计算出前向帧和当前帧之间的目标变换参数之后,可再采用该目标变换参数去计算下一帧和该当前帧之间的目标变换参数,即可通过前几帧的目标变换关系来进行当前帧的变换关系的推导,可不需要重新进行三角形的匹配,大大减少点云拼接所花费的时间,提高点云拼接效率。

在一个实施例中,将后向帧作为下一个当前帧,将后向标志点集合作为当前标志点集合,将目标变换参数作为唯一的候选变换参数,返回执行将所述前向标志点集合和所述变换后的当前标志点集合进行匹配,获得所述候选变换参数对应的标志点匹配结果的步骤,包括:当该后向帧与该当前帧之间的帧数差值小于或等于帧数阈值,将该后向帧作为下一个当前帧,将后向标志点集合作为当前标志点集合,将目标变换参数作为唯一的候选变换参数,返回执行将所述前向标志点集合和所述变换后的当前标志点集合进行匹配,获得所述候选变换参数对应的标志点匹配结果的步骤;当该后向帧与该当前帧之间的帧数差值大于帧数阈值时,获取后向帧的后向标志点集合,将后向帧作为下一个当前帧,将后向标志点作为当前标志点集合,返回执行从前向标志点集合中,多次选取三个不同的前向标志点,获得前向点组集合以及从当前标志点集合中,多次选取三个不同的当前标志点,获得当前点组集合的步骤。

本实施例中,当后向帧与当前帧之间的帧数差值较小时,说明时间相差较短,因此可以通过前几帧的目标变换关系来进行当前帧的变换关系的推导,从而节省时间;当后向帧与当前帧之间的帧数差值较大时,则需要重新计算相匹配的三角形,从而更加准确地进行点云拼接。

在一个实施例中,该标志点的匹配方法还包括:获取预设数量个图像帧中每个标志点的匹配次数;当所述匹配次数小于预设次数时,将匹配次数小于预设次数的标志点从各图像帧中删除。

本实施例中,匹配次数少的标志点说明可能是误差点,因此将该标志点从图像帧中删除,即可减少后续三维点坐标等的匹配次数,提高点云拼接效率。

在一个实施例中,因为全等三角形是衡量标志点拓扑结构十分严格的条件,传统的标志点匹配分为两种,一种是根据距离、法 向量等属性粗略计算匹配点,再用三角形全等和其他检验属性来筛选匹配点;第二种是直接用三角形全等筛选出准确匹配点,再根据其他检验属性确定最佳的变换关系。第一种方法会缺失有效点,第二种方法会产生大量时间复杂度。因此提出了本申请各实施例中的标志点的匹配方法。

各参数含义:

前向标志点坐标集合:first_space

前向标志点法向量集合:first_normal

前向三维点坐标集合:Tri_space

当前标志点坐标集合:next_space

更新后的前向标志点集合:update_space

目标变换参数:target_RT

空间索引结构:八叉树结构

按照空间索引结果存储后的前向三维点坐标集合:octree_space

当前标志点法向量集合:next_normal

当前三维点坐标:t

目标前向三维点坐标:S

相匹配的三角形对:tri_pair

当前三维点坐标与目标前向三维点坐标之间的距离:distance

距离阈值:distance_thresh

候选变换参数:candidate_RT

匹配点对的数量:n

匹配点的平均误差:err

利用已经存在的RT,记为RT_pre。其中,RT_pre可以是③的粗略的RT,也可以是前一帧算出的target_RT。

按上述参数为例进行说明一种标志点的匹配方法,包括以下步骤:

步骤①,从first_space中选取点进行C

对于某一个非等腰三角形triangulation

选定立方体最小尺寸d,将Tri_space按照八叉树的立方体节点数据结构构造为octree_space,八叉树中每个节点立方体尺寸为d,里面包含不同数目的Tri_space。

步骤②,对next_space进行进行C

那么对于t

在S

步骤③,遍历tri_pair

next_space*candidate_RT=possible_space

next_normal*candidate_RT=possible_normal

将first_space与possible_space匹配,将first_normal与possible_normal匹配,得到各candidate_RT对应的n

选取n

步骤④,根据粗略的RT计算出next_space和first_space的所有匹配点对points_pair。

利用points_pair中的n对顶点精确计算得到target_RT,作为下一帧与标志点的RT。

步骤⑤,根据求得的target_RT更新first_space、first_normal和octree,当前的target_RT作为前一帧的RT_pre。从第一帧开始,每个标志点的匹配次数即为matched_times,这些参数如first_space、first_normal、Tri_space、octree_space全部记为结构体pre_pamas。

图5为另一个实施例中标志点的匹配方法的流程示意图。开始采集图像帧,并获取参数pre_pamas。当pre_pamas未构建时,则需要根据上述中的①构建pre_pamas。当pre_pamas已经构建成功时,构建当前帧的参数集合next_pamas,其中包括next_space和next_normal。当next_pamas构建成功时,则判断RT_pre是否存在,当存在时,执行步骤④和步骤⑤;当RT_pre不存在时,执行步骤②、步骤③、步骤④和步骤⑤,如此循环直至扫描停止。

本实施例中,将三角形当做一个点,三边当做点的坐标,构建八叉树结构,利用三角形确定准确的匹配点,利用八叉树进行快速搜索和添加,在得到精准的匹配点对的同时,大大降低了时间复杂度,同时根据其他检验属性筛选最佳变换关系,实际测试结果很好,没有产生错误匹配的情况。

本申请实施例中与已有的三角形匹配算法不一样的地方在于:

a. 本申请实施例将三角形看做一个点,其三条边作为这个点的三维坐标值,在后续的处理中,这一步至关重要,大大降低了复杂度;

b. 本申请实施例将三角形的时间复杂度绝大部分作用于第一帧的空间建立中,后续只需更新三角形点空间即可;

c. 本申请实施例采用八叉树或体素的方法,建立三角形空间,在后续的全等判定中,大幅度降低循环的次数;

d. 本申请实施例在检测三角形对应关系时,引入了误差修正量,结合已有的判定匹配点数目的方法,得到更加有效的三角形对应关系;

e. 本申请实施例将扫描分成连续帧和断帧扫描,连续帧通过前几帧的旋转平移矩阵来进行当前帧的变化关系的推导,断帧通过本申请实施例的三角形匹配检测算法来进行求得变化关系。

在一个实施例中,一种标志点的匹配方法,包括:

步骤(b1),获取前向帧中的前向标志点集合。

步骤(b2),从前向标志点集合中,多次选取三个不同的前向标志点,获得前向点组集合;前向标志点集合包括前向标志点坐标集合和前向标志点法向量集合。

步骤(b3),将前向点组集合中各点组所构建的三角形的三条边的边长,分别作为前向三维点的各坐标值,获得前向三维点坐标集合。

步骤(b4),获取当前帧中的当前标志点集合。

步骤(b5),从当前标志点集合中,多次选取三个不同的当前标志点,获得当前点组集合。

步骤(b6),将当前点组集合中各点组所构建的三角形的三条边的边长,分别作为当前三维点的各坐标值,获得当前三维点坐标集合。

步骤(b7),对于前向三维点坐标集合中的前向三维点坐标,将各前向三维点坐标按照空间索引结构存储。前向三维点坐标存储于空间节点。

步骤(b8),根据当前三维点坐标确定对应的当前空间索引。

步骤(b9),根据当前空间索引在空间节点中搜索对应的前向三维点坐标,获得当前三维点坐标对应的目标前向三维点坐标。

步骤(b10),将当前三维点坐标和对应的目标前向三维点坐标进行匹配,将匹配成功的当前三维点坐标和对应的目标前向三维点坐标作为相匹配的三角形对。

步骤(b11),对于各相匹配的三角形对,确定相匹配的三角形对所对应的候选变换参数。

步骤(b12),按照候选变换参数对当前标志点集合进行变换,获得候选变换参数对应的变换后的当前标志点集合。变换后的当前标志点集合包括变换后的当前标志点坐标集合和变换后的当前标志点法向量集合。

步骤(b13),将前向标志点坐标集合和变换后的当前标志点坐标集合进行匹配,获得各标志点对的坐标匹配结果。

步骤(b14),将前向标志点法向量集合和变换后的当前标志点法向量集合进行匹配,获得各标志点对的法向量匹配结果。

步骤(b15),将坐标匹配结果为相匹配的且法向量匹配结果为相匹配的标志点对作为候选变换参数对应的匹配点对。

步骤(b16),统计匹配点对的数量。

步骤(b17),从各候选变换参数对应的匹配点对的数量中,确定最大数量的匹配点对。

步骤(b18),当存在至少两个最大数量时,获取每个最大数量所对应的匹配点对的误差值。

步骤(b19),获取误差值最小的候选变换参数所对应的匹配点对。

步骤(b20),根据匹配点对确定目标变换参数。

步骤(b21),根据目标变换参数进行点云拼接。

步骤(b22),获取按照目标变换参数进行变换所得到的变换后的当前标志点集合。

步骤(b23),根据变换后的当前标志点集合更新前向标志点集合,获得更新后的前向标志点集合。

步骤(b24),将更新后的前向标志点集合作为前向帧中的前向标志点集合。

步骤(b25),获取后向帧的后向标志点集合,将后向帧作为下一个当前帧,将后向标志点集合作为当前标志点集合,将目标变换参数作为唯一的候选变换参数,返回执行将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的标志点匹配结果的步骤。

应该理解的是,虽然上述图2、图3和图5的流程图中各个步骤按照箭头的指示依次显示,步骤(a1)至步骤(a5)、步骤(b1)至步骤(b25)中的各个步骤按照标号指示依次显示,但是这些步骤并不是必然按照箭头或者数字指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图3和图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图6所示,为一个实施例中标志点的匹配装置的结构框图,其中包括第一获取模块602、第一选取模块604、前向三维点坐标集合获取模块606、第二获取模块608、第二选取模块610、当前三维点坐标集合获取模块612、空间搜索模块614和拼接模块616,其中:

第一获取模块602,用于获取前向帧中的前向标志点集合;

第一选取模块604,用于从所述前向标志点集合中,多次选取三个不同的前向标志点,获得前向点组集合;

前向三维点坐标集合获取模块606,用于将所述前向点组集合中各点组所构建的三角形的三条边的边长,分别作为前向三维点的各坐标值,获得前向三维点坐标集合;

第二获取模块608,用于获取当前帧中的当前标志点集合;

第二选取模块610,用于从所述当前标志点集合中,多次选取三个不同的当前标志点,获得当前点组集合;

当前三维点坐标集合获取模块612,用于将所述当前点组集合中各点组所构建的三角形的三条边的边长,分别作为当前三维点的各坐标值,获得当前三维点坐标集合;

空间搜索模块614,用于根据所述前向三维点坐标集合和所述当前三维点坐标集合进行空间搜索,获得相匹配的三角形对;

拼接模块616,用于根据所述相匹配的三角形对进行点云拼接。

上述标志点的匹配装置,从标志点集合中多次选取不同的标志点,并将所构建得到的三角形的三边长作为三维点的各坐标值,基于三维点进行空间搜索,从而获得相匹配的三角形对,实现点云拼接;传统的三角形匹配方式是从一张图的标志点中选取C

在一个实施例中,空间搜索模块614用于对于前向三维点坐标集合中的前向三维点坐标,将前向三维点坐标按照空间索引结构存储;前向三维点坐标存储于空间节点;根据当前三维点坐标确定对应的当前空间索引;根据当前空间索引在空间节点中搜索对应的前向三维点坐标,获得当前三维点坐标对应的目标前向三维点坐标;将当前三维点坐标和对应的目标前向三维点坐标进行匹配,将匹配成功的当前三维点坐标和对应的目标前向三维点坐标作为相匹配的三角形对。

本实施例中,将前向三维点坐标按照空间索引结构存储于空间节点中,根据当前三维点坐标确定对应的空间索引,并在空间节点中搜索对应的前向三维点坐标,从而获得相匹配的三角形对,能够将结合快速空间搜索算法迅速找到相匹配的三角形对,大幅度降低循环的次数,从而降低时间复杂度。

在一个实施例中,拼接模块616用于对于各相匹配的三角形对,确定相匹配的三角形对所对应的候选变换参数;按照候选变换参数对当前标志点集合进行变换,获得该候选变换参数对应的变换后的当前标志点集合;将前向标志点集合和变换后的当前标志点集合进行匹配,获得该候选变换参数对应的标志点匹配结果;根据标志点匹配结果确定目标变换参数;根据目标变换参数进行点云拼接。

本实施例中,由于从前向帧和当前帧中确定的相匹配的三角形对可能有很多对,基于这些相匹配的三角形对能够计算出多个候选变换参数,此时需要从中进行筛选得到一个最佳的目标变换参数;因此通过按照各候选变换参数对当前标志点集合进行变换,获得候选变换参数对应的变换后的当前标志点集合,并与前向前向标志点集合进行匹配,根据匹配结果确定目标变换参数,即可从中选择匹配较好的目标变换参数,提高三维点云拼接的准确性。

在一个实施例中,拼接模块616还用于将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的匹配点对;统计匹配点对的数量;从各候选变换参数对应的匹配点对的数量中,确定最大数量的匹配点对;根据最大数量的匹配点对确定目标变换参数。

本实施例中,由于通过相匹配的三角形对所计算出的候选变换参数不一定适用于当前帧中其它标志点的变换,因此通过将前向标志点集合和变换后的当前标志点集合进行匹配,获得候选变换参数对应的匹配点对,并统计匹配点对的数量,匹配点数量能在一定程度上反应候选变换参数的准确度,因此可根据最大数量的匹配点对确定目标变换参数,从而确定出一个较佳的变换参数,提高点云拼接的准确性。

在一个实施例中,拼接模块616还用于当存在至少两个最大数量时,获取每个最大数量所对应的匹配点对的误差值;根据误差值最小的候选变换参数确定目标变换参数。

本实施例中,在实际操作过程中,可能会存在最大数量相同的情况,因此需要获取每个最大数量所对应的匹配点对的误差值,根据误差值最小的候选变换参数确定目标变换参数,能够提高目标变换参数的准确性,从而提高点云拼接的准确性。

在一个实施例中,拼接模块616还用于获取误差值最小的候选变换参数所对应的匹配点对;根据匹配点对确定目标变换参数。

本实施例中,由于通过相匹配的三角形对计算出目标变换参数的样本点的数量太少,因此获取误差值最小的候选变换参数所对应的匹配点对,根据该匹配点对确定目标变换参数,能够获得更多的匹配点对,从而获得一个更加准确的目标变换参数。

在一个实施例中,前向标志点集合包括前向标志点坐标集合和前向标志点法向量集合;当前标志点集合包括当前标志点坐标集合和当前标志点法向量集合。拼接模块616还用于将前向标志点坐标集合和当前标志点坐标集合进行匹配,获得各标志点对的坐标匹配结果;

将前向标志点法向量集合和当前标志点法向量集合进行匹配,获得各标志点对的法向量匹配结果;

将坐标匹配结果为相匹配的且法向量匹配结果为相匹配的标志点对作为候选变换参数对应的匹配点对。

本实施例中,由于前向标志点坐标集合中均是三维空间中的标志点,那么有对应的法向量,通过对前向标志点坐标和前向标志点法向量两个参数进行匹配,获得坐标相匹配且法向量相匹配的标志点对作为匹配点对,能够提高目标变换参数的准确性。

在一个实施例中,拼接模块616还用于获取按照目标变换参数进行变换所得到的变换后的当前标志点集合;

根据变换后的当前标志点集合更新前向标志点集合,获得更新后的前向标志点集合;

将更新后的前向标志点集合作为前向帧中的前向标志点集合;

获取后向帧的后向标志点集合,将后向帧作为下一个当前帧,将后向标志点集合作为当前标志点集合,将所述目标变换参数作为唯一的候选变换参数;返回执行将所述前向标志点集合和所述变换后的当前标志点集合进行匹配,获得所述候选变换参数对应的标志点匹配结果。

本实施例中,在计算出前向帧和当前帧之间的目标变换参数之后,可再采用该目标变换参数去计算下一帧和该当前帧之间的目标变换参数,即可通过前几帧的目标变换关系来进行当前帧的变换关系的推导,可不需要重新进行三角形的匹配,大大减少点云拼接所花费的时间,提高点云拼接效率。

在一个实施例中,拼接模块616还用于当该后向帧与该当前帧之间的帧数差值小于或等于帧数阈值,将该后向帧作为下一个当前帧,将后向标志点集合作为当前标志点集合,将目标变换参数作为唯一的候选变换参数,返回执行将所述前向标志点集合和所述变换后的当前标志点集合进行匹配,获得所述候选变换参数对应的标志点匹配结果;当该后向帧与该当前帧之间的帧数差值大于帧数阈值时,获取后向帧的后向标志点集合,将后向帧作为下一个当前帧,将后向标志点作为当前标志点集合,返回执行从前向标志点集合中,多次选取三个不同的前向标志点,获得前向点组集合以及从当前标志点集合中,多次选取三个不同的当前标志点,获得当前点组集合。

本实施例中,当后向帧与当前帧之间的帧数差值较小时,说明时间相差较短,因此可以通过前几帧的目标变换关系来进行当前帧的变换关系的推导,从而节省时间;当后向帧与当前帧之间的帧数差值较大时,则需要重新计算相匹配的三角形,从而更加准确地进行点云拼接。

在一个实施例中,该标志点的匹配装置还包括误差点删除模块,误差点删除模块用于获取预设数量个图像帧中每个标志点的匹配次数;当所述匹配次数小于预设次数时,将匹配次数小于预设次数的标志点从各图像帧中删除。

本实施例中,匹配次数少的标志点说明可能是误差点,因此将该标志点从图像帧中删除,即可减少后续三维点坐标等的匹配次数,提高点云拼接效率。

关于标志点的匹配装置的具体限定可以参见上文中对于标志点的匹配方法的限定,在此不再赘述。上述标志点的匹配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端设备,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种芯片引脚连通性的测试方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各标志点的匹配方法实施例的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各标志点的匹配方法实施例的步骤。

在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质中读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述个方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例中流程。其中,本申请所提供的各实施例中所使用地对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性粗糙你会可包括随机存取存储器(Ramdom Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 标志点的匹配方法、装置、计算机设备和存储介质
  • 标志点的定位方法、装置、计算机设备和存储介质
技术分类

06120113175677