基于角点和三角形内间距的多工件检测方法

2021-06-03 08:22
集成技术 2021年3期
关键词:角点曲率轮廓

慎 正 胡 超

1(江西理工大学电气工程与自动化学院 赣州 341000)

2(浙大宁波理工学院信息科学与工程学院 宁波 315100)

1 引 言

随着工业生产自动化水平的提高,对工件自动化检测的需求也在不断增长。机器视觉测量技术因具有非接触、精度高、速度快的优点,被广泛地运用于生产线上的工件测量中。由于工件物体本身具有的刚性和规则性,工件图像的轮廓能有效地体现目标物体的特征。但工业现场的工件堆叠遮挡会导致提取的工件轮廓缺失和断裂。因此,对局部工件轮廓进行检测,已成为研究热点。

Ianni 等[1-2]在 1996 年时将部分轮廓在模板轮廓上的匹配问题描述为一个组合优化问题,并使用基于模拟退火算法和遗传算法的改进搜索算法对其进行求解。之后,van Kaick 等[3]在此基础上提出了基于蚁群算法的局部形状匹配方法,对局部轮廓匹配的组合优化问题求解得到概率最优路径,同时获得最佳的匹配结果。此后,各种利用形状特征描述子的局部轮廓匹配方法也被相继提出。主要包括基于轮廓点区域分布直方图的形状上下文描述子(Shape Context)[4]、基于轮廓内距离的形状上下文描述子(Inner-Distance Shape Contex)[5]和融合了全局与局部轮廓信息的精确型高度函数描述子(Exact Height Function 1)[6]。王燕妮等[7]在针对建筑轮廓的识别中,提出了基于各种矢量描述和轮廓局部特征的局部轮廓识别算法。该算法根据不同建筑的矢量信息,制定了任意形状轮廓匹配相似度准则及映射函数,能有效解决局部轮廓的匹配问题。黄浩等[8]提出了利用形状描述子将各轮廓转换为信号数据,训练反向传播神经网络,对复杂的管道网络图像完成了识别。文献[9-10]利用物体的局部轮廓大多为开轮廓的特性,提出一种基于轮廓点内间距的特征描述子。该描述子有旋转、尺度和平移不变性,而且具有很好的仿射不变性。Yang等[11]在 2018 年提出三角形内间距(Triangular Centroid Distances,TCDs)算子。TCDs 算子对于平移、旋转、缩放,以及相当大的形状变形都有可靠的不变性。孙国栋等[12]对 TCDs 描述子和EHF1(Exact Height Function 1)描述子进行融合,利用 EHF1 算子对轮廓全局信息与局部信息融合的优点,提出新的 TCDs 描述子。但为了有效地描述轮廓,TCDs 描述子需要在轮廓处密集地取采样点,在和模板轮廓匹配时,局部轮廓按采样点次序依次在模板轮廓上滑动,并进行相似度计算。这存在算法匹配时计算时间过长,且要处理采样点起点不变的问题。针对以上问题,本文根据工件轮廓的角点特性,使用角点数量对模板轮廓进行初步划分,获取模板图像中的疑似轮廓段,再根据角点位置重新选取采样点,解决采样点的起点不变性。最后再将局部轮廓和模板的疑似轮廓进行匹配,完成局部轮廓的识别。结果表明,在相同取样点的情况下,本文算法的识别率高于传统 TCDs 算法,并且算法耗时减少了 86%。

2 轮廓角点提取

对于轮廓的角点提取,传统方法是提取轮廓上每一点的曲率,而轮廓的角点一般是轮廓上曲率值极大的点,所以可以通过提取轮廓上的曲率极值点来提取轮廓图像的角点。本文采用构建轮廓点前后三角形的方式计算轮廓曲线上每一点的曲率值。具体方法是,将轮廓上每一点和其前后一定距离的两点组成一个三角形,计算每个前后三角形中轮廓点所在角的角度,作为该点的曲率值。这种计算曲率值的方法用时短,对于轮廓的细小突起也能起到明显的平滑作用。该算法的原理如图 1 所示。

图1 轮廓点曲率原理图Fig. 1 Schematic diagram of contour point curvature

获取每个轮廓点所组成三角形的 后,便可获得如图 2 所示局部轮廓的曲率值序列。其中,曲率值序列的局部极大值点便是该轮廓的角点。

图2 轮廓点曲率值序列Fig. 2 Contour point curvature value sequence

3 三角形内间距描述子

TCDs 描述子于 2018 年提出[11],能很好地描述二维形状。该作者在文中还提出了局部轮廓和模板轮廓的匹配方法,其原理如图 3 所示。

图3 TCDs 算法原理图Fig. 3 TCDs algorithm principle diagram

首先,假设图 3 中红色段为总轮廓的局部轮廓段,记为轮廓P,随后计算轮廓P的质心G,在P上均匀地取N个采样点,对于每个采样点Pi来说,都可以与其他采样点 和质心G组成N-1 个三角形,记为 。接着计算出每个 的质心,记为gij。其次,对于采样点Pi,计算Pi与gij之间的欧氏距离,获得一组长度为N-1 的特征向量,该特征向量就是采样点Pi的 TCDs 特征向量,记为li。最后,按照轮廓点的次序提取轮廓P上所有采样点的TCDs 特征向量,记为 。至此,轮廓P的 TCDs 描述子提取完成。而对于局部轮廓和模板轮廓的匹配问题,首先根据轮廓P的长度,在模板轮廓上取相同长度的轮廓段;然后,在模板轮廓上滑动轮廓段,计算每次滑动后轮廓段的 TCDs 特征矩阵,并计算特征矩阵与L的相似度;最后,选取模板轮廓中相似度最大的轮廓段作为匹配结果。

4 融合角点信息的三角形内间距描述子匹配方法

一般 TCDs 描述子提取的采样点是在轮廓段上均匀地采样,同时为了准确地描述轮廓,采样点的间距不能过大。而这样的采样方式将导致在模板轮廓匹配的过程中模板轮廓段滑动次数过多,计算量较大。此外,在计算 TCDs 描述子时,局部轮廓采样点起始点的改变会造成特征矩阵的变化,故一般会对提取的特征矩阵的每一行进行离散傅里叶变换,然后忽略傅里叶变换后的相位信息,只使用系数的大小,保证了描述子的起点不变性。但这样会导致提取 TCDs 描述子的时间变长,而且起点不变性主要运用在两个完整封闭形状的匹配,在局部轮廓的匹配中实用性不强。

本文提出使用角点特征对模板轮廓段进行筛选,然后使用角点坐标对采样点进行锁定,再对局部轮廓提取 TCDs 特征矩阵,减少了计算量和计算步骤,具体方法如下。

之后根据采样点集L获得轮廓P的 TCDs 特征矩阵。首先提取轮廓P的质心 ,为了简化计算量,使用采样点的坐标来计算质心。计算公式如下:

图4 采样点分布Fig. 4 Distribution of sampling points

至此,TCDs 特征矩阵的提取基本完成。随后根据局部轮廓的角点信息在模板轮廓上提取疑似的轮廓段。由于本文的描述子算法简化了方向不变性,所以从一开始就要对局部轮廓进行方向上的判定。局部轮廓的起点和末点,其他点为局部轮廓的角点,(xi,yi)为对应角点ji在图像中的二维坐标。设参数F为:

图5 工件的局部轮廓Fig. 5 Partial contour of the workpiece

若F>0,则局部轮廓的遍历方向为逆时针;若F<0,则局部轮廓的遍历方向为顺时针;若F=0,则表示局部轮廓为一条直线。

获得局部轮廓的遍历方向后,便可以按照局部轮廓的方向在模板轮廓上生成疑似轮廓段。记模板轮廓为D、角点个数为M、局部轮廓P、角点个数为N,那么显然N≤M。这样模板轮廓就能分成M组,每组包含N个角点的疑似轮廓段。图 5 所示的局部轮廓上有 4 个角点,记轮廓起点A与第 1 个角点的距离为L1,轮廓末点B与最后 1个角点的距离为L2。在模板轮廓上选取任意角点为起点,并按照公式(6)确定的遍历方向,在模板轮廓上依次选取包含 4 个角点的轮廓段,并在轮廓段的第 1 个角点和最后 1 个角点处,分别在模板轮廓上顺延L1与L2的距离,获得模板轮廓的一个疑似轮廓段。然后依次按确定的遍历方向移动起始的角点,获得剩下的疑似轮廓段,组成该模板的疑似轮廓段集合,具体如图 6 所示。

疑似轮廓段集合按照上文方法提取 TCDs 特征矩阵,并与局部轮廓P的 TCDs 特征矩阵计算差异度,其中差异度最小的轮廓段便是局部轮廓P与该模板轮廓的匹配结果。

图6 模板轮廓疑似轮廓段Fig. 6 Template contour suspected contour segment

提取模板的疑似轮廓后,需要考虑一种特殊情况:当局部轮廓的L1、L2过长时,某些模板的疑似轮廓段的长度会超出整个模板轮廓的长度。如图 7 所示,显然这些疑似轮廓段不是最相似的。为了节省计算时间,本文直接计算疑似轮廓段的长度,若疑似轮廓段长度超出整个模板轮廓的长度,则可直接剔除。

图7 特殊的轮廓段Fig. 7 Special contour segment

图8 相似零件的匹配结果Fig. 8 Matching results of similar parts

图 8(a)中标红轮廓段为待检测的目标轮廓段,图 8(b、c)为两个形状类似但尺寸不同的模板轮廓匹配结果。其中,图 8(b)为正确的匹配结果,但目标轮廓段与图 8(c)的匹配结果也非常相似。为了正确区分不同尺寸的工件,本文根据轮廓的长度特征对两轮廓的计算公式加以修正。设轮廓P的长度为lP、轮廓C的长度为lC,那么修正后的轮廓相似度 为:

其中,δ为长度差异的控制系数,主要是为了控制长度差异对轮廓相似度的影响,一般δ的取值范围在[0, 1],主要体现形状轮廓相似的优先性。经过多次实验验证,δ取 0.1 时实验效果最为理想。本文的算法流程如图 9 所示。

5 实验结果

图9 算法流程图Fig. 9 Algorithm chart

图10 工件图像的拍摄环境Fig. 10 The shooting environment of the workpiece image

本文从检测速度和检测精度两方面来验证检测算法的性能。首先,选取 6 种形状和大小不同的工件,每种工件取不同角度、不同视角下的轮廓图各 11 张。图 10 为工件图像的拍摄环境。每张工件图中随机选取 6 段工件的局部轮廓,共提取出 600 张工件的局部轮廓样本,并给每一个工件使用不同视角的 3 张图片作为模板,取 3 张模板中相似度值最接近的轮廓段作为模板的匹配结果,具体流程如图 11 所示。

图11 匹配流程图Fig. 11 Matching flowchart

图12 局部工件轮廓的匹配结果Fig. 12 Matching result of partial workpiece contour

图 12 为实验匹配结果。其中,图 12 第 1 列标红的轮廓为待配结果,绿色框表示和待检测轮廓最相似的工件轮廓。对于待检测的部分轮廓,即便不是对应的正确工件,也能在相应的工件轮廓中找到最相似的疑似轮廓段,很好地体现了TCDs 描述子对形状的敏感性。可见,对于形状相似但大小不同的工件局部轮廓,本文算法也能正确完成识别。

图 13 为本文算法在堆叠工件图像的匹配结果。其中,不同颜色分别表示不同的识别结果。例如,工件轮廓标注为紫色,那就说明该工件被识别为下方为紫色的模板工件,并在模板工件上给出匹配的轮廓段和相似度。

图13 局部工件轮廓的匹配结果Fig. 13 Matching result of partial workpiece contour

在堆叠情况比较复杂时,如图 14 所示被标红的轮廓段为工件堆叠较为严重的区域,堆叠物体的轮廓线互相覆盖,局部轮廓段的角点位置和个数被改变,造成该轮廓段不能识别或者识别错误的情况。在轮廓线影响不严重的区域,一般忽略重叠轮廓线的影响,将重叠轮廓段作为独立的目标轮廓段进行匹配,匹配结果如图 15 所示。而对于堆叠物体的轮廓线影响较严重的图片,本文算法很难识别提取出来的局部轮廓段,这是本文算法的不足之处。

图14 复杂的堆叠工件图像Fig. 14 Complex stacked workpiece image

图15 复杂的堆叠工件匹配结果Fig. 15 Complex stack matching results

从公式(2)可知,对于一段待检测的局部轮廓,本文算法的采样点选取是通过对轮廓段进行角点分割,然后在角点分割段中均匀取样。这样的采样方法能充分利用角点间轮廓段平滑的特性,少量取点也能很好地描述轮廓。角点轮廓段内不同采样点个数对识别正确率的影响如图 16所示。

图16 采样点个数对准确率的影响Fig. 16 The influence of the number of sampling points on accuracy

从图 16 可知,当每个角点间的采样点数为 6 个时,识别率达到了较高值,且采样点个数最少。因此本文算法对轮廓的采样点个数为(n+1)×6(n为局部轮廓上的角点个数)。

表1 为不同局本轮廓匹配算法在单一模板的匹配时间,由于本文算法的采样点数量和轮廓内角点数量相关,而传统 TCDs 算法都为固定数目的采样点,为了保证算法比较的公平性,TCDs算法的采样点数目限定为(n+1)×6 个。从表1可以看出,与传统的 TCDs 轮廓匹配方法相比,本文算法的计算效率有明显的提升。

表1 算法计算时间Table 1 Algorithm calculation time

为了体现本文算法的识别精度,将传统TCDs 匹配算法、形状上下文(Shape Context)匹配算法、基于 Shape Context 描述子的 BP(Back Propagation)神经网络算法和本文算法,在不同遮挡比例下的识别率进行计算。根据上文所提到的,由于本文算法是根据目标局部轮廓的角点个数来形成采样点个数,所以 TCDs 匹配算法和 SC(形状上下文)匹配算法的采样点个数均为(n+1)×6 个,而 SC+BP 神经网络算法则使用固定的采样点个数进行网络的训练和识别,大小和本文算法的数量级相同。实验对比结果如表 2所示。从表 2 可知,本文算法在不同的局部轮廓比例的识别率均优于以上 3 种算法。在采样点数量较少的情况下,本文算法根据轮廓角点位置的采样方法对轮廓的描述精度有明显的提升。

表2 不同遮挡比例的识别率Table 2 Recognition rate of different occlusion ratios

6 结 论

本文针对工件被遮挡只能提取局部轮廓的问题,提出一种基于 TCDs 描述子的改进局部轮廓匹配算法。首先,利用局部轮廓的角点信息在模板轮廓上寻找到相对应的疑似轮廓,这大大缩短了传统 TCDs 算法在模板匹配上滑动匹配的计算时间。其次,在描述子的采样点上,根据轮廓的角点分布,在轮廓段的角点间均匀取样,充分利用了角点间轮廓段平滑的特性,大大减少了采样点的数量。而且,本文简化了传统 TCDs 算法解决起点不变性的步骤。最后,通过统一局部轮廓和模板轮廓的遍历方向,保证了局部轮廓和模板轮廓中疑似轮廓方向的一致性。通过对工件局部轮廓和模板轮廓疑似轮廓段的相似度比较,获得局部轮廓在不同模板轮廓的匹配结果,实现局部工件轮廓的目标匹配。实验结果表明,与传统的TCDs 算法相比,本文算法时间效率有明显的提升。在不同的局部轮廓比例和少量采样子的情况下,本文算法对局部轮廓的识别率均优于传统算法。其中,当局部轮廓的比例为 60% 时,本文算法的识别率依然高于 90%。但本文算法也存在不足之处:当堆叠物体的轮廓线影响较严重时,由于局部轮廓段的角点信息被破坏,算法难以识别该局部轮廓。

猜你喜欢
角点曲率轮廓
大曲率沉管安装关键技术研究
一类双曲平均曲率流的对称与整体解
带平均曲率算子的离散混合边值问题凸解的存在性
OPENCV轮廓识别研究与实践
基于实时轮廓误差估算的数控系统轮廓控制
半正迷向曲率的四维Shrinking Gradient Ricci Solitons
基于FAST角点检测算法上对Y型与X型角点的检测
高速公路主动发光轮廓标应用方案设计探讨
基于边缘的角点分类和描述算法
基于圆环模板的改进Harris角点检测算法