一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

散乱点云孔洞边界的判别方法与流程

2022-02-22 19:56:46 来源:中国专利 TAG:


1.本发明涉及计算机图形学与计算机视觉结合领域,特别涉及一种散乱点云孔洞边界的判别方法。


背景技术:

2.三维重建技术广泛的应用于工业自动化检测、文物保护、生物医学和虚拟现实等技术领域,也是逆向工程建模应用的基础工作,如何精确获取三维点云模型是计算机视觉的一个重要研究领域。目前随着三维重建技术的发展,设备的测量精度和速度不断提高,然而由于模型自身缺陷、物理遮挡、表面反光等因素,导致点云数据时常有缺失,影响三维重建模型的完整性,给视觉效果、形貌测量及形态识别的准确度带来较大的影响,而且对三维点云模型的后处理及研究应用造成了不可逾越的障碍。因此,对三维点云的孔洞进行准确的提取及修补成为基于点云的三维物体识别、曲面重构等研究和应用的基础工作,具有重要的研究和应用价值。
3.目前,针对三维点云孔洞提取与修复的研究主要有基于网格和基于点云这两类方式,基于网格的孔洞边界点提取算法相对比较成熟,但是网格模型是由点云模型进行网格化后得到的,然而网格化算法的优劣对结果的影响较大,高质量的网格模型对点云的空间分布规则要求也相对较高,稍微“不规整”的点云就会导致网格化结果的千差万别;同时,网格化处理必然会改变原有点云模型的分布以及形状,使得三维点云“失真”,在精度要求较高的条件下可能无法满足。因此,直接对点云模型进行孔洞边界识别与修补是近年来重要的研究热点,诸如存在修补点与孔洞边界点分布的一致性问题、如何保持孔洞处尖锐特征问题等等。为此,本发明选择三维点云模型上的孔洞作为研究对象,进一步探索基于空间相邻规则的孔洞边界判别方法。
4.基于点云的孔洞边界点判别方法目前的现有的技术主要有:
5.1、胡志胜在《三维激光扫描点云边界检测和孔洞修补技术研究》中提出了基于点云在微切平面上投影的最大张角进行孔洞边界点判别,解决了散乱点云的孔洞识别问题;但是在微切平面上进行处理,需要先进行投影变换,存在投影误差,然后比较张角确定边界点,存在判别错误,计算结果误差较大;
6.2、程箴龙在《三维点云孔洞修复算法研究及软件系统开发》在一文中,通过对点云在微切平面上分布均匀性的定量计算改进了上述算法,提高了检测效率,但由于存在二次嵌套循环,计算效率不高,而且也存在投影误差的问题,微切平面计算量大,在计算稠密点云时效率低;
7.3、除此之外,还有利用相邻点夹角进行边界点判别的方法,仅利用了点云的局部分布数据,存在误判的情况。


技术实现要素:

8.本发明的目的是为了克服现有技术的缺陷,提出了散乱点云孔洞边界的判别方
法。
9.为实现上述目的,本发明采用以下具体技术方案:
10.本发明提出的散乱点云孔洞边界的判别方法,包括以下步骤:
11.s1、对点云进行切割分层和划分立方格,再对点云进行精简;
12.s2、搜索与精简后的点云所在的立方格空间相邻的26个立方格中是否存在邻接点,将邻接点的数目小于8的点初步判别为边界点,将边界点和邻接点的数目存储到边界点集bp_group中;
13.s3、根据边界点之间的距离对边界点集bp_group中的点进行聚类划分,得到初步的孔洞和边界点;
14.s4、将孔洞所包含边界点的数目和相邻边界点的平均距离作为阈值,根据阈值对步骤s3得到的孔洞和边界点进行筛选,剔除错误的边界点后,得到具有实际意义的孔洞和边界点。
15.优选地,步骤s1包括如下子步骤:
16.s1.1、获取三维点云模型在x、y、z坐标轴上的跨度x
sp
,y
sp
,z
sp

[0017][0018]
xyz坐标系与点云的坐标系完全相同;
[0019]
其中,x
max
、x
min
、y
max
、y
min
、z
max
、z
min
分别为点云在x、y、z坐标轴上的最大值和最小值,取x、y、z坐标轴中的跨度最大值作为点云的高度δh,将跨度最大值所在的坐标轴作为h轴,点云在h轴方向上的最大值与最小值分别为h
max
和h
min

[0020]
s1.2、将预设分辨率d作为切割平面的间隔,计算切割的层数numofcut:
[0021]
numofcut=(cal2center(h
max
)-cal2center(h
min
))/d 1
ꢀꢀꢀ
(1.10)
[0022]
其中,numofcut为切割层数,cal2center函数用于计算该函数内自变量坐标值所属的立方格中心坐标值;
[0023]
s1.3、建立与切割层数numofcut相等数量的点集group_i,其中:i=1,2,

numofcut;
[0024]
s1.4、计算所属的立方格中心坐标和层数,将中心坐标存储到相应的点集group_i中:
[0025][0026]
其中,x
ic
,y
ic
,z
ic
表示点(xi,yi,zi)所属立方格的中心坐标,
[0027]
id=(cal2center(x)-cal2center(h
min
))/d 1
ꢀꢀꢀ
(1.12)
[0028]
其中,id为所属切割层的编号,id从1到numofcut,group_1为最底层的点集,group_numofcut为最顶层的点集。
[0029]
优选地,在将中心坐标存储到相应的点集group_i中时,需要进行唯一性检验,当
相同的中心坐标已经存在时,无需重复存储。
[0030]
优选地,步骤s2包括如下子步骤:
[0031]
s2.1、逐个读取点集group_i中的待判别点p
ij
(x
ij
,y
ij
,z
ij
),计算每个参考点到待判别点p
ij
的投影距离;
[0032][0033]
其中,d
x
,dy,dz为其余参考点到待判别点p
ij
的投影距离,i为当前点集的id号,j=1,2,
…jni
,j
ni
为对应点集group_i中的点数;m的取值为:i、i 1或i-1;n=1,2,3

nm,n为对应点集group_m中的点数;
[0034]
当投影距离均不大于预设分辨率d时,则参考点与待判别点p
ij
相邻,即:
[0035][0036]
s2.2、记录待判别点p
ij
的邻接点数目ncp,根据邻接点数目进行初步边界点判别:
[0037]
当ncp≥8时,待判别点p
ij
不是边界点,当ncp《8时,待判别点p
ij
是边界点,将边界点存储到边界点集bp_group中,边界点的数目为nbp。
[0038]
优选地,步骤s3包括如下子步骤:
[0039]
s3.1、在边界点集bp_group中任取一点gi,存储到点集bpgroup_1中,并在边界点集bp_group中删除点gi,计算边界点集bp_group中其余参考点到点gi的距离:
[0040][0041]
其中,(x
gi
,y
gi
,z
gi
)为点gi的坐标,(x
gj
,y
gj
,z
gj
)为边界点集bp_group中其余参考点的坐标;
[0042]
s3.2、遍历边界点集bp_group中的所有点,计算各点到点gi的距离dis,当最小距离dis
min
《2d时,对应的点为点gi的相邻边界点,将点gi记为点g
11
,将相邻边界点记为点g
12
,将点g
12
存储到点集bpgroup_1中,在点集bp_group中删除点g
12

[0043]
s3.3、遍历边界点集bp_group中的所有点,计算各点到点g
12
的距离dis,当最小距离dis
min
《2d时,对应的点为点g
12
的相邻边界点,记为点g
13
,将点g
13
存储到点集bpgroup_1中,在边界点集bp_group中删除点g
13

[0044]
s3.4、当最小距离dis
min
>2d,终止遍历,点集bpgroup_1中包含点g
11
,g
12
,g
13

…g1h
,点集bpgroup_1中均为第一个孔洞的边界点;
[0045]
s3.5、重复步骤3.1到步骤3.4,直至边界点集bp_group被清空,得到边界点集的初步结果bpgroup_1,bpgroup_2,bpgroup_3,

bpgroup_i。
[0046]
优选地,步骤s4包括如下子步骤:
[0047]
s4.1、读取点集bpgroup_i中的点数ki,并计算其中相邻两点的距离平均值d
avr

[0048][0049]
s4.2、当点数ki<3时,舍弃孔洞,并删除相应的点集bpgroup_i;
[0050]
s4.3、比较相邻两点距离d
cp
与d
avr
的大小,当d
cp
》10
×davr
时,判定点集无法构成闭合孔洞,舍弃点集;
[0051]
s4.4、重复步骤4.1到步骤4.3,对边界点集bpgroup_i的孔洞边界点集进行初步筛选,得到具有实际意义的孔洞和边界点。
[0052]
本发明提出的基于散乱点云孔洞边界的判别方法,解决了基于点云模型的孔洞边界点判别时存在误判和计算效率较低的问题。
附图说明
[0053]
图1是根据本发明实施例的散乱点云孔洞边界的判别方法的流程图。
[0054]
图2a是根据本发明实施例的散乱点云孔洞边界的判别方法的点云切割分层示意图。
[0055]
图2b是根据本发明实施例的散乱点云孔洞边界的判别方法的点云精简示意图。
[0056]
图3a是根据本发明实施例的散乱点云孔洞边界的判别方法的临近点搜索示意图。
[0057]
图3b是根据本发明实施例的散乱点云孔洞边界的判别方法的所有边界点集示意图。
[0058]
图4是根据本发明实施例的散乱点云孔洞边界的判别方法的空洞边界点聚类示意图。
[0059]
图5是根据本发明实施例的散乱点云孔洞边界的判别方法的剔除非闭合的边界点示意图。
具体实施方式
[0060]
在下文中,将参考附图描述本发明的实施例。在下面的描述中,相同的模块使用相同的附图标记表示。在相同的附图标记的情况下,它们的名称和功能也相同。因此,将不重复其详细描述。
[0061]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,而不构成对本发明的限制。
[0062]
下面结合图1到图5对本发明的具体工作方式进行详细说明:
[0063]
本发明提出一种散乱点云孔洞边界的判别方法,包括如下步骤:
[0064]
s1、根据预设分辨率对点云切割分层和划分立方格,再对点云进行精简。
[0065]
为了把点云分为更多的组,每组有更少的点,提高后续遍历寻找邻接点的算法效率,通过切割平面的方法将点云按照空间位置分组。
[0066]
首先获取点云在x、y、z三个坐标轴的跨度,将跨度最大的坐标轴定为h轴(h轴必然是x轴y轴z轴之一),h轴作为切割平面的法向(即切割平面与h轴垂直)。点云在h轴上的最大值与最小值确定了切割平面的最大坐标与最小坐标,切割平面与h轴垂直,因此相交。最大值是在h轴方向上的最大坐标值。沿h轴方向切割后可使每一组有更少的点。
[0067]
s1.1、获取三维点云模型的在x、y、z坐标轴上的跨度x
sp
,y
sp
,z
sp

[0068][0069]
xyz坐标系与点云数据的坐标系完全相同。点云数据一般为(xi,yi,zi)格式,即该点在坐标系中的坐标。
[0070]
其中,x
max
、x
min
、y
max
、y
min
、z
max
、z
min
分别为点云在x、y、z坐标轴上的最大值与最小值,取三个坐标轴之间的最大值作为点云的高度δh,点云在h轴方向上的最大值与最小值记为h
max
和h
min

[0071]
s1.2、切割平面的间隔为预设分辨率d,计算切割的层数numofcut:
[0072]
numofcut=(cal2center(h
max
)-cal2center(h
min
))/d 1
ꢀꢀ
(1.18)
[0073]
其中,numofcut是切割的层数,cal2center函数用于计算该函数内自变量坐标值所属的立方格中心坐标值,由最大值h
max
和最小值h
min
分别求得最上层和最下层立方格的中心坐标,再由分辨率计算得到切割层数。点云切割分层的结果如图2a所示。
[0074]
一般可以取常用分辨率d=0.5,点云密度适中。每一组点云分布在厚度为0.5的空间范围内,0.5为设定的点云分辨率,层厚与分辨率相等。在随后遍历寻找邻接点时,只需要遍历目标点所在的层,以及上一层和下一层即可,提高了算法效率。当高精度扫描时,d可以取0.05,当粗精度扫描时,d可以取1或2。
[0075]
s1.3、建立与切割层数numofcut相等数量的点集group_i,其中:i=1,2,

numofcut。
[0076]
s1.4、遍历每个参考点,计算所属的立方格中心坐标和层数,将中心坐标存储到相应的点集group_i中,在存储时,需要进行唯一性检验,当已存在相同中心坐标的点时,无需重复存储:
[0077][0078]
其中,x
ic
,y
ic
,z
ic
表示点(xi,yi,zi)所属立方格的中心坐标,
[0079]
id=(cal2center(x)-cal2center(h
min
))/d 1
ꢀꢀ
(1.20)
[0080]
其中,id为所属切割层的编号,id从1到numofcut,group_1为最底层的点集,group_numofcut为最顶层的点集。
[0081]
s2、遍历精简后的点云,搜索每个参考点所在立方格空间相邻的26个立方格中是否存在邻接点,邻接点数目小于8的点初步判别为边界点,将边界点和相应邻接点的数目存储到边界点集bp_group中。精简后的点云如图2b所示。
[0082]
s2.1、逐个读取点集group_i中的待判别点数据p
ij
(x
ij
,y
ij
,z
ij
),即第i层,遍历第i层及上一层和下一层中的点数据,计算每个参考点到待判别点p
ij
的投影距离;
[0083][0084]
其中,d
x
,dy,dz为其余参考点到待判别点p
ij
的投影距离,i为当前点集的id号,j=1,2,
…jni
,j
ni
为对应点集group_i中的点数;m=i或i 1或i-1,n=1,2,3

nm为对应点集group_m中的点数。
[0085]
当投影距离均不大于分辨率d时,则参考点与待判别点p
ij
相邻,即:
[0086][0087]
s2.2、记录每个待判别点p
ij
所具有的邻接点的数目ncp,根据邻接点的数目进行初步边界点判别:
[0088]
当ncp≥8时,该点不是边界点,当ncp《8时,该点为边界点,将所有边界点存储到边界点集bp_group中,点的数目为nbp。临近点搜索示意图如图3a所示。
[0089]
s3、根据边界点之间的距离对边界点集bp_group中的点进行聚类划分,初步得到各孔洞及所包含的边界点。所有边界点集如图3b所示。
[0090]
s3.1、在边界点集bp_group中任取一点gi,存储到点集bpgroup_1中,并在边界点集bp_group中删除该点,计算边界点集bp_group中其余参考点到gi的距离:
[0091][0092]
其中,(x
gi
,y
gi
,z
gi
)为点gi的坐标,(x
gj
,y
gj
,z
gj
)为边界点集bp_group中其余参考点的坐标。
[0093]
s3.2、以2d为阈值,当最近点距离dis
min
《2d时,对应的点为点gi的相邻边界点,可将gi记为g
11
,将相邻边界点记为g
12
,将g
12
存储到点集bpgroup_1中,在点集bp_group中删除点g
12

[0094]
s3.3、遍历边界点集bp_group中的所有点,计算各点到点g
12
的距离dis,当最小距离dis
min
《2d时,对应的点为g
12
的相邻边界点,记为g
13
,将g
13
存储到点集bpgroup1中,在边界点集bp_group中删除点g
13

[0095]
s3.4、直至最小距离超过阈值2d,该遍历终止,点集bpgroup_1中包含点g
11
,g
12
,g
13


,为孔洞1的边界点。
[0096]
s3.5、重复步骤3.1到步骤3.4,直至边界点集bp_group被清空,得到孔洞边界点集的初步结果bpgroup_1,bpgroup_2,bpgroup_3,


[0097]
s4、以各孔洞所包含边界点的数目和相邻边界点的平均距离为阈值,对步骤s3得到的孔洞及边界点初值进行筛选,剔除错误边界点,得到具有实际意义的孔洞及边界点。
[0098]
s4.1、读取点集bpgroup_i中的点数ki,并计算其中相邻两点的距离平均值d
avr

[0099]
[0100]
s4.2、当ki<3时,认为孔洞过小,予以舍弃,并删除相应的点集bpgroup_i。空洞边界点聚类如图4所示
[0101]
s4.3、比较相邻两点距离d
cp
与d
avr
的大小,当d
cp
》10*d
avr
时,判定该点集无法构成闭合孔洞,舍弃该点集。剔除非闭合的边界点如图5所示。
[0102]
s4.4、对所有边界点集bpgroup_i重复步骤4.1到步骤4.3,完成所有孔洞边界点集初步结果的筛选,得到具有实际意义的孔洞及边界点。
[0103]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0104]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制。本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
[0105]
以上本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献