散乱点云的孔洞识别和边界提取算法研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
散乱点云的孔洞识别和边界提取算法研究
王春香; 孟宏; 张勇
【期刊名称】《《机械设计与制造》》
【年(卷),期】2019(000)003
【总页数】4页(P74-76,81)
【关键词】散乱点云; KD树; K邻域搜索; 单坐标搜索法; 边界追踪; 孔洞边界
【作者】王春香; 孟宏; 张勇
【作者单位】内蒙古科技大学机械学院内蒙古包头 014010
【正文语种】中文
【中图分类】TH16; TP391.7
1 引言
在三维扫描过程中由于测量工具和技术的限制、待测模型自身缺陷、光照或反射性等因素的影响,不可避免地会出现采样点缺失,形成点云孔洞。点云的孔洞识别和边界提取作为孔洞修补、曲面重构的首要环节,其重要性不言而喻。也正因为如此,点云的孔洞识别也逐渐成为逆向设计领域最重要的研究课题之一。
文献[1-3]把点云连接成三角网格,然后通过网格的拓扑关系识别出孔洞。三角网
格化简洁、直观,但网格化过程中需要控制好网格间隔的宽度,如果跨度设置不合适,在生成网格模型的过程屮可能会忽略某些孔洞的存在。文献[4-5]将三维点云
数据转换为图像形式后提取边界。该方法能快速识别出点云边界,但存在错分现象,
且无法区分内外边界。文献[6]利用KD树建立散乱点云的空间拓扑关系,通过判
断最大夹角是否超过阈值来识别孔洞边界,算法理论简单、容易实现,但在阈值的设定过程中未考虑点云密度,适用范围有限。文献[7]考虑3D点云密度和法向量
的变化来对边界特征点进行提取,该算法稳定性较好,提取的边界质量较高,但算法的前提仍需要将点云网格化,通过三角网格的方式建立点云的拓扑结构效率较低。针对已有算法的不足,为了在兼顾效率的同时提高孔洞识别精度,提出了一种改进的孔洞识别和边界提取算法。算法直接以散乱点云为目标,创新性地采用点间距离作为判别条件进行孔洞识别、并将理论成熟的单坐标搜索法用于孔洞外边界检测,同时创新性地提出了点云边界追踪算法。算法首先将点云导入专业逆向软件IMAGEWARE,通过圈选点的方式截取局部待研究点云。然后以MATLAB为实验平台,对选中的散乱点云进行孔洞识别和边界提取。算法主要包括基于K邻域搜
索的孔洞识别、外边界去除以及内边界追踪几个环节。以下将对这几个主要环节进行详细说明。
2 基于K邻域搜索的孔洞识别
2.1 利用KD树建立点云拓扑关系
由于散乱点云在空间分布没有规律,点与点之间没有任何位置关系,因此基于散乱点云的孔洞识别首先需要对离散点云建立空间拓扑关系。众多方法中,KD树法因其理论简单、适应性强、消耗内存小且不受点云密度的影响等优势而被广泛应用[8],故在此采用KD树法建立点云的空间位置关系,并以此进行点的K邻域搜索。在KD树的构建过程中采用滑动中点的分割策略[9],以提高对邻近点查询的执行
效率。KD树的具体构建过程与前人相同,此处不再详述。
2.2 孔洞识别
利用KD树建立散乱点云的空间拓扑关系后,采用距离判别法识别出点云模型中的孔洞,即计算采样点到其k个邻近点的欧氏距离,通过距离是否大于给定阈值来
鉴定是否为边界点。算法流程如下:
(1)计算点云密度
采用随机取样的方式、以点间距离为度量标准来计算点云密度density。即从样本中随机选取n个点,作为特征点,对于特征点集Xi(i=0,1,…,n),利用KD
树遍历点云中每个点找出与其距离最小的k个点,计算k个邻近点与Xi的距离Di,对所有Di求平均值得到点云密度density。
(2)设定距离阈值
设定距离阈值thre:
式中:μ—阈值系数
采用适时调整的方法来确定阈值系数μ,进而计算最佳阈值thre。即先预先设定μ值,计算距离判别参数thre,以此进行孔洞识别并进行可视化分析,然后根据识
别效果适时调整μ,找到最佳的判别参数thre。
(3)孔洞边界识别
采用K邻域搜索法遍历点云中每个点,找出与其距离最近的k′个点,并计算该点
与k′个点的距离Dj,一旦Dj(j=1,2…k′)中有一个距离大于阈值thre,则认为该点是边界点,并将其保存在变量bp中。
(4)通过可视化分析观察孔洞识别效果,根据需要返回到步骤2,重新调整μ值。
2.3 孔洞识别仿真测试
以某涡轮叶片的销孔为例,对称地取销孔一半点云作为研究对象,采用上述算法进行孔洞识别。其中,阈值系数μ设为25,距离阈值计算为0.45。孔洞初步识别效果,如图1所示。不难看出,在识别出的孔洞点中,不可避免地会掺杂着外边界点,即开区域上外轮廓边界(如图中A、B位置处的点),这些外边界点并非真正意义上的孔洞边界,必须去除。
图1 孔洞内外边界点Fig.1 Inner and Outer Boundary Points
3 外边界去除
本着能快速、有效地找到孔洞的外边界点、而不至于使整个孔洞识别算法太过复杂,利用单坐标值搜索法[10]对外边界点进行检测并删除。假设pi={i=1,2…m}为上图1中的外界点,将识别出来的内外边界点bp分别按x、y、z坐标排序后发现,pi点在某个坐标方向上总会位于最大或最小位置处。分别找出沿三个坐标轴方向
的极值点,并逐个删除,保留下来的点集必然是所需要的内边界点。
算法先将内外边界点bp进行可视化分析,判断优先搜索方向及极值点性质(最大值还是最小值),然后进行删除。本实验中,在沿x方向分别搜索最大、最小值,迭代运行13次、沿y方向搜索最小值,迭代运行8次、沿z方向分别搜索最大、最小值,迭代运行10次后,所有外边界点都被删除,如图2所示。
图2 删除外边界后的孔洞内边界点Fig.2 The Initial Inner Boundary Points with Outer Boundary Removed
实验表明,利用单坐标值搜索法能有效地去除外边界点。算法理论简单、容易实现,且x、y、z三坐标搜索可同时进行,执行效率高、实用性强。但也不难发现最终
得到的孔洞内边界点并不完整,有些内边界点未被检测出来。
4 内边界追踪
为了完善孔洞边界,为下一步的孔洞修补和快速成型做准备,采用边界追踪算法补全孔洞所有边缘点。算法的基本步骤如下:
(1)对已找出的孔洞边界点进行标识。
(2)边界点标识,如图3(a)所示。假设点1和点4之间的点2和点3在孔洞
识别过程中未被检索到,边界追踪时以点1作为起始点,在该点上建立局部坐标系。定义搜索方向为右上方,即在第一象限内查找点1的最近点(如果目标点在
点1的左下方,则以第三象限为起始搜索方向)。补全剩余边界点,如图3(b)