复杂背景下的结构光条纹中心提取算法研究
2024-04-29高秋玲成巍李文龙戈海龙侯兴强宋汝晖魏佳洁贾天烁蔡馨燕
高秋玲 成巍 李文龙 戈海龙 侯兴强 宋汝晖 魏佳洁 贾天烁 蔡馨燕
摘要:线结构光三维扫描建模系统中最关键的一步是提取光条中心线,但环境中各种因素的干扰给中心线提取带来困难。针对线结构光条纹图像存在光斑干扰、光强分布不均、光条宽度差别大、背景复杂等多种问题,提出解决方案。首先采用Otsu对结构光图像二值化;其次采用改进DBSCAN(density-based spatial clustering of applications with noise)算法保留核心点,去除边界点和噪声点;最后将核心点作为输入,构建图数据结构,采用适用于线结构光条纹图像的最短路径搜索算法得到光条中心线。实验结果表明,该算法运行时间在150 ms以内,误差在0.2 像素以内,并适用于多种复杂环境,满足实时性、准确性和稳定性的要求。
关键词:复杂背景;线结构光;中心线提取;DBSCAN算法;最短路径
中图分类号:TN249 文献标志码:A 文章编号:1002-4026(2024)02-0065-09
Centerline extraction algorithm of structured light streak
in a complex background
Abstract∶The most critical step in a line-structured light three-dimensional scan modeling system is to extract the centerline of the light stripe, but the interference of various environmental factors makes this extraction difficult. Several problems exists in a line-structured light streak image issues such as light spot interference, uneven distribution of light intensity, large differences in the width of the light bars, and complex background. This paper proposed a solution to overcome these problems. First, the structured light image is binarized using the Otsu method. Then, the improved density-based spatial clustering of applications with nose (DBSCAN) algorithm is used to retain the core points and remove the boundary and noise points. Finally, the core points are used as inputs to construct the graph data structure, and the shortest path search algorithm that fits the line-structured light streak image is used to obtain the center-line of the light streak. The experimental results show that the algorithm of this paper runs within 150 ms and the error is within 0.2 pixels. Moreover, this algorithm is applicable to various complex environments, meeting the requirements of real-time calculations, accuracy, and stability.
Key words∶complex background; line-structured light; centerline extraction; DBSCAN algorithm; shortest path
基于單目线结构光的三维扫描建模系统结构简单、制造费用低、满足实时建模的需求,采用合适的算法可以在多种环境下达到较高的建模精度,因此被广泛应用于各种工业加工中的建模场景[1]。在建模过程中,提取光条纹中心线是关键,它决定着图像二维坐标到真实世界三维坐标转换的输入,因此需要提高线结构光条纹中心提取算法的实时性、准确性和稳定性[2]。
传统的结构光条纹中心提取算法主要分为基于几何中心、基于能量中心和基于光条方向中心三大类[3]。基于几何中心是以计算得到的光条的几何中心作为中心线,包括边缘法、细化法和几何中心法[4],这类算法速度快、但易受噪声影响。基于能量中心则是依据光条的灰度分布特性进行光条纹中心提取,包括极值法、曲线拟合法和灰度重心法[4],这类算法在光条纹灰度满足高斯分布时提取效果较好,同时易受噪声干扰。基于光条方向中心在提取中心时考虑光条纹的方向性,包括Steger法和方向模板法[4],这类算法精度较高,但是计算量大,速度慢,且对光条质量有较高的要求。
在实际工业应用中,由于设备采集和传输存在噪声、环境光照不均匀、工件表面复杂等原因[5],致使采集到的结构光条纹图像中包含复杂背景,难以提取出有效的光条中心,进而增大建模误差。经典的结构光条纹中心提取算法无法区分出图像上的光条和干扰因素,会将干扰因素当作光条一并处理,从而造成较大误差,因此无法满足存在复杂背景的情形。为此,一些学者针对特定情况提出改进思路,在一定程度上克服了干扰因素的影响。郭宏阳等[6]利用高斯混合模型法分割强光干扰下的焊缝图像,得到图像中的高亮区域,之后采用面积过滤和形态学闭操作消除背景噪声干扰,但是该方法稳定性差;周渊等[7]使用密度聚类算法对激光条纹像素点分类,接着采用拓扑排序算法获得激光条纹中心线,能在光斑干扰下有效提取激光条纹中心线,但是当激光条纹倾斜且较粗时,精度大大下降;章秀华等[8]采用红外线结构光投射在矿石表面,能够有效避免太阳辐射对矿石表面结构光成像的干扰,并提出邻域累积差分特征分析方法,通过快速定位光条边界点来提取结构光光条中心,依赖于光条边界定位是否准确;差分法[9]也是常用的去除图像背景信息的方式,将投射激光前后的图像作差得到仅包含激光条纹的图像,但是在动态光照环境下或者被测物体处于运动状态时,此方法得到的图像仍含有背景信息。方夏章等[10]提出了一种结合阈值法、边缘检测以及灰度分布特征的方法来确定激光条纹,但是随着光强的增大,提取准确率有所下降。现有方法只能处理一种特定干扰情况,缺乏通用性。
鉴于前人的不足,本文提出一种新的思路,首先采用Otsu算法对图像进行二值化,接着运用DBSCAN算法(density-based spatial clustering of application with noise)提取可能构成条纹中心线的核心点,通过改进的最短路径搜索算法对中心线进行提取。本方法能够适用于多种干扰情况,具备准确性、实时性和稳定性;其中最短路径搜索算法考虑了光条方向,当激光条纹倾斜且较粗时提取效果不受影响,且本方法也适用于动态光照环境或者被测物体处于运动状态时的情形。
1 算法描述
本文算法具体流程如图1所示,首先对采集到的结构光条纹图像进行Otsu自适应二值化,获得可能成为光条纹的所有像素点;其次进行DBSCAN聚类,过滤无关的像素点即噪声点和边界点,保留可能成为中心线上的点即核心点;最后连接相邻核心点构成图数据结构,采用灰度重心法确定起点和终点,根据光条特性确定两像素点之间的能量函数,根据提出的适用于光条图像的最短路径搜索算法得到光条的最短路径作为光条的中心线。
1.1 常见干扰类型
在实际三维建模过程中,通常尽可能地控制待重建物体表面材质、环境光照等因素,以获得光质均匀且稳定的结构光条纹。但对这些外界干扰因素的控制不一定能够实现,采集的结构光条纹总会受到各种因素的干扰,常见的干扰类型包括以下几种[11]:
(1)环境中的自然光线或照明设施的不当引入,導致结构光条纹附近出现光斑或部分光条被光斑遮挡,如图2(a)所示;
(2)待重建物体表面材质和颜色的差别,导致物体对结构光的反射率不同,可能出现光强分布不均、光条纹宽度差别大的情况,如图2(b)、2(c)所示;
(3)背景杂乱且物体处于运动状态,无法通过差分法分割出有效的结构光条纹,图像中存在复杂的背景信息,如图2(d)所示。
1.2 Otsu二值化
Otsu[12]作为自适应阈值分割算法,操作简单并能得到有效的分割阈值,其基本原理是采用遍历的方式得到使类间方差g最大的阈值T,灰度值大于T的像素为前景,灰度值小于T的像素为背景,其公式为:
g=ω0ω1(μ0-μ1),(1)
式中,ω0为前景的像素点数占整幅图像的比例,μ0为前景像素的平均灰度,ω1为背景的像素点数占整幅图像的比例,μ1为背景像素的平均灰度。
结构光条纹相较于背景亮度更高,经过二值化后可去除低灰度值的像素点,即背景中无用的像素点。
1.3 线结构光密度聚类
二值化后的图像中包含众多与光条纹中心无关的边缘点和噪声点,如果直接将二值化图像作为寻找最短路径的输入,会增大算法的复杂度,因此需要在保持光条纹拓扑结构的同时去除这些无关点,分割出条纹中心的候选点。聚类指将没有分类的数据集依据相似特性分成若干个簇的过程,是一种无监督的分类方法,在聚类过程中可分离出相似性小的数据也就是离群的数据。基于不同的准则,经典聚类大致可以分为基于划分的聚类、基于层次的聚类、基于密度的聚类、基于网格的聚类、基于模型的聚类等[13],各聚类方法及特点见表1。
对比这几种聚类算法,密度聚类算法对噪声点和离群点具有鲁棒性,不受聚类簇形状的约束,时间复杂度较低。其中,DBSCAN是可以抵抗噪声的基于密度的聚类方法,本文二值化后的激光条纹图像中灰度值为255(白色)的像素点作为待聚类的数据点,这些数据点大部分是相邻的,分布比较集中,可以认为这些数据是密度分布均匀的,只有小部分噪声点和离群点不相邻,基于DBSCAN算法本身的特性:对噪声点和离群点不敏感,即聚类效果不受噪声点和离群点的影响。因此本文选用DBSCAN来进行聚类。此算法不需要人为设定最终的聚类簇数量,自动把高密度样本点聚成一簇,忽略低密度区域的点[14]。以数据集中的一个样本点x为中心,以ε为半径的球形区域定义为x的ε邻域,该邻域内包含的数据点最少数目是MinPoints,由此可将数据集中的点划分为三类:(1)核心点,该点的ε邻域内至少包含MinPoints个其它的数据点;(2)边界点,位于其他核心点的ε邻域内,但本身不是核心点;(3)噪声点,既不是核心点也不是边界点的数据点。
DBSCAN的算法步骤分成两步:(1)遍历全部样本点,对样本点进行分类,如果是核心点将其纳入核心点列表中,每个核心点和其邻域内的点形成临时聚类簇;(2)检查每一个临时聚类簇中的所有边界点,如果当前的边界点是另一个临时聚类簇的核心点,则将这两个临时聚类簇合并,并将此核心点从核心点列表中取出,重复上述操作,直到核心点列表为空,所有临时聚类簇合并完成得到最终的聚类簇。
取ε=1.5和MinPoints=5,对二值化图像应用DBSCAN的结果如图3所示。
传统的DBSCAN算法需要计算任意两点之间的距离来判断样本点的类别,并且需要合并临时聚类簇,时间复杂度较高。因此提出改进后的算法,仅检查每个像素点的邻域空间,如果该点的邻域空间内的点数大于设定的最小数,则该点保留,即只保留每个临时聚类簇的核心点作为后续光条纹中心的候选点,并且不合并临时聚类簇。改进后的DBSCAN算法可以:(1)去除噪声和离群点,保证图像质量;(2)去除光条边缘点,仅保留核心点作为光条中心线的候选点,保持光条拓扑结构和中心信息的同时降低算法复杂度。如图4所示是灰度图像经过改进DBSCAN后的结果,光条像素点数量由57 792减少到55 104,保留了有更大概率成为光条中心线的点,大大减少后续算法的输入。
1.4 中心线提取
Chen等[15]提出图像接缝算法可用于结构光条纹提取。基本思想是把光条像素点看作节点,连接相邻的节点构成计算机科学中的图数据结构,定义节点之间的距离(能量),使用最短路径搜索算法找到能量最低的路径,即光条中心线。由于光条中心线是单像素宽度的,即光条每行或每列只有一个像素点,传统的最短路径搜索算法可能会出现宽度大于单像素的情况,基于此,提出一种适用于光条图像的最短路径搜索算法,步骤包括:
(1)采用灰度重心法确定光条中心线的起点和终点。起点和终点影响节点间能量的计算,因此采用精度较高的灰度重心法来确定。
(2)根据节点之间的能量寻找每行或每列的最短路径节点。根据光条纹的特性,亮度更高的像素点更有可能位于中心线上,且在光条方向上邻近像素点更有可能属于同一条光条纹,任意两节点之间的能量E(s)定义为:
其中,θ为起点和终点构成的直线与起点和待寻找的节点构成的直线的夹角,k0为起点和终点构成的直线的斜率,k为起点和待寻找的节点构成的直线的斜率,d为当前最短路径节点和待寻找的节点之间的距离,s为待寻找节点的灰度值。
(3)连接最短路径节点,得到光条的中心线。
基于以上描述,如图5所示,首先计算起点start和它下一列所有节点的能量,找到能量最低对应的节点作为当前列的最短路径节点p1,接着计算p1和它下一列所有节点的能量,得到此列的最短路径节点p2。遍历所有节点,得到每列所对应的最短路径节点{start,p1,p2,…,pn,end},即中心线上的点,图5中以深色表示,图6为中心线提取的结果。
2 实验结果和分析
实验采用分辨率为2 048 像素×1 536 像素的MER-301-125U3M工业相机和LM6NCL镜头采集图像,波长为650 nm、功率为100 mW的红光激光器作为线结构光光源,CCS的LFV3-100SW的同轴LED作为照明设备。本文算法实验在Intel(R) Core(TM) i5-7300HQ CPU@2.50 GHz、内存8 GB、操作系统为Win10的计算机上进行,开发环境为Visual Studio 2019和OpenCV 2.4.10。
2.1 算法稳定性分析
为验证本文所提算法适用于多种复杂干扰环境,采集了复杂干扰情况下的线结构光条纹图像,运用本文算法进行中心线提取,结果如图7所示。图7(a)反映了结构光条纹被环境中光斑遮挡时的光条中心线提取效果;图7(b)反映了结构光条纹没有被遮挡、但存在光斑干扰时的光条中心线提取效果;图7(c)反映了复杂背景下光条为曲线时的中心线提取效果;图7(d)反映了复杂背景下各部分光条宽度变化较大、光强分布不均时的光条中心线提取效果;图7(e)反映了复杂背景下物体表面各部分对光的反射率不同时的光条中心线提取效果;图7(f)反映了背景杂乱、存在其他干扰物时的光条中心线提取效果。可以看出,本文算法适用于多种线型的结构光条纹,在各种复杂背景干扰下都能够做到准确提取,不受环境和光条质量的影响。
2.2 算法时间分析
采集无干扰、质量较好的线结构光条纹图像和物体表面各部分对光的反射率不同的线结构光条纹图像,分别采用极值法、细化法、灰度重心法、Steger算法和本文算法提取光条中心线。提取效果如图8所示,极值法是取灰度值最大的第一个像素点作为中心,所以出现中心线整体上移的情形;细化法提取的光条中心线会出现毛刺,特别是光条宽度变化较大时毛刺增多;灰度重心法在光条质量较好时提取的中心线较为顺滑,在光条宽度变化较大时中心线浮动过大;Steger算法精度最高,在光条宽度变化较大时也能做到准确提取中心线;本文算法提取效果和Steger算法在主观上并无太大差别,但本文算法能够克服多种复杂干扰。
线结构光中心线提取算法对时间要求较高,如表2所示,采用上述5种提取算法分别对光质较好的光条图像1和宽度变化较大的光条图像2分别运行10次,计算程序运行时间的平均值。可以看出,细化法平均用时最短,效率最高,在100 ms左右,但是在复杂背景下提取效果不稳定;极值法提取时间在170 ms左右;灰度重心法提取时间在270 ms左右;Steger算法由于需要进行大量的卷积运算,计算复杂度较高,故其用时最长,效率最低,在620 ms左右;本文算法运行时间仅次于细化法,在150 ms以内,其效率相较于Steger算法提高了近4倍。原因在于,在DBSCAN阶段仅检查每个像素点的邻域空间,降低算法的时间复杂度;提出适用于光条纹图像的更为简单的最短路径算法,并且仅把核心点作为输入,减少程序运行时间。
2.3 算法精度分析
精度是光条中心线提取算法的另一重要指标,由于中心线的实际位置无法确定,且投射线结构光的物体表面平整,通常是以标准差来表征精度,如公式(5)所示,即首先对提取的中心线上的点进行直线拟合,然后计算所有点到拟合直线的距离标准差,越小则精度越高,说明算法提取光条中心相对准确[16]。
如表3所示,采用上述精度表征方法计算5种算法的精度,可以看出:极值法由于其本身的限制,在光条宽度变化较大时精度有所降低;而细化法由于毛刺的存在导致精度大大降低,特别是图像2,精度超过1 像素;灰度重心法在光条质量较好时提取精度较高,在光条宽度变化较大时由于中心线浮动导致精度较低;Steger算法运用了Hessian矩阵考虑光条的方向性,提取精度最高,在0.15 像素以内;本文算法也考虑了光条的方向性,提取精度高于极值法、细化法和灰度重心法,仅次于Steger算法,对于光条宽度变化较大的光条也能有较高的提取精度,误差在0.2 像素以内。
3 结论
针对线结构光三维扫描建模过程中光条中心线提取易受到实际工业环境中各种因素干扰的问题,本文从算法层面进行解决。首先采用Otsu算法将光条图像二值化,去除灰度值较低的像素点;其次采用改進DBSCAN保留核心点,即有更大概率位于中心线上的点,去除噪声点和边界点,降低后续算法的复杂度;最后采用提出的适用于光条图像的最短路径搜索算法得到图像的最短路径节点,即光条中心线上的点,连接构成光条中心线。实验结果表明,本文算法适用于直线、曲线多种线型,可用于处理光条图像存在光斑干扰、光条宽度变化大、物体表面反射率不同、背景杂乱等多种复杂背景的情况,且算法运行时间在150 ms以内,误差在0.2 像素以内,能够实现在复杂背景下快速、精确提取光条中心线,从而提高三维扫描建模的速度、准确度和适应性。未来还需要考虑室外环境中的影响因素及解决方法,特别是强烈太阳光存在的情况。
参考文献:
[1]HE K J, SUI C Y, LYU C Y, et al. 3D reconstruction of objects with occlusion and surface reflection using a dual monocular structured light system[J]. Applied Optics, 2020,59(29): 9259-9271.
[2]閆光绪,贺赛先. 基于单目便携式激光扫描的小工件测量[J]. 应用激光,2020, 40(2): 315-322. DOI: 10. 14128/j. cnki. al. 20204002. 315.
[3]冀振燕,宋晓军,付文杰,等. 激光光条中心线提取研究综述[J]. 测控技术,2021,40(6): 1-8. DOI: 10. 19708/j. ckjs. 2021. 06. 001.
[4]李莹莹,张志毅,袁林. 线结构光光条中心提取综述[J]. 激光与光电子学进展,2013, 50(10): 13-22. 10. 3788/lop50. 100002.
[5]张衡,苗红霞,郭章旺,等. 动态环境下的激光条纹中心线提取方法[J]. 计算机测量与控制, 2021,29(12): 226-233. DOI: 10. 16526/j. cnki. 11-4762/tp. 2021. 12. 041.
[6]郭宏阳,周建平,薛瑞雷,等. 强光干扰下的焊缝图像激光条纹提取算法研究[J]. 组合机床与自动化加工技术,2020(6): 57-60. DOI: 10. 13462/j. cnki. mmtamt. 2020. 06. 014.
[7]周渊,孟祥群,江登表,等. 复杂干扰情况下的结构光条纹中心提取方法[J]. 中国激光,2020,47(12): 172-180. DOI: 10. 3788/CJL202047. 1204004.
[8]章秀华,洪汉玉,徐洋洋,等. 复杂光照条件下矿石三维视觉实时筛选方法[J]. 红外与激光工程,2021,50(11): 394-404.
[9]JIAN X, CHEN X, HE W P, et al. Outdoor 3D reconstruction method based on multi-line laser and binocular vision[J]. IFAC-PapersOnLine, 2020, 53(2): 9554-9559. DOI: 10. 1016/j. ifacol. 2020. 12. 2436.
[10]方夏章,李垚,方毅. 室内环境下线结构光光条提取方法[J]. 传感器与微系统, 2018,37(10): 32-34. DOI: 10. 13873/j. 1000-9787(2018)10-0032-03.
[11]SHI X Q, SUN Y Z, LIU H T, et al. Research on laser stripe characteristics and center extraction algorithm for desktop laser scanner[J]. SN Applied Sciences, 2021, 3(3): 1-12. DOI: 10. 1007/s42452-021-04309-w.
[12]牛晗,伍希志,任桂芹,等. 基于Otsu与CANNY算法的竹片缺陷图像检测[J]. 森林工程,2022,38(6): 75-81. DOI: 10. 3969/j. issn. 1006-8023. 2022. 06. 010.
[13]赫德军,武欣嵘,俞璐. 密度聚类方法研究[J]. 通信技术, 2022, 55(2): 135-142. DOI: 10. 3969/j. issn. 1002-0802. 2022. 02. 001.
[14]张朋,李小林,王李妍. 基于DBSCAN的动态邻域密度聚类算法[J]. 计算机科学, 2023,50(S1): 609-615.
[15]CHEN J S, SU G D, XIANG S B. Robust welding seam tracking using image seam extraction[J]. Science and Technology of Welding and Joining, 2012, 17(2): 155-161. DOI: 10. 1179/1362171811y. 0000000091.
[16]刘宇豪,郭京波,刘文栋,等. 多重干扰下管片端面条纹中心提取优化算法[J]. 应用激光,2021,41(4): 869-875. DOI: 10. 14128/j. cnki. al. 20214104. 869.