1. 引言
Hutchinson [1] 等将视觉伺服按照目标值输入法的不同,分为位置基准法和特征基准法。其中,特征基准法在图像空间直接进行反馈控制,利用提取的视觉信息获得被识别目标在图像空间上的特征量,与期望的图像特征量形成误差,使用任务函数法控制机器人运动。特征基准法因为不需要对图像进行解释,故实时性好;不必计算目标对象和机器人末端执行器的位姿,故对机器人机构学模型的精确度具有很高的容忍度。Chaumette [2] 等推导了最易提取的点、线和圆特征的雅克比矩阵。此后Chaumette提出了将图像矩 [3] 应用到视觉伺服,采用基于二阶矩的方向和两个不变量矩,实现了对姿态的视觉伺服控制。Lin [4] 等结合先验知识定义了4个最低矩不变量,实现了图像追踪。基于图像矩的视觉伺服,利用全局描述子与期望图像矩进行匹配,鲁棒性强 [5] 。近年来,有叶国强 [6] 等结合学习特征,毛优新等 [7] 结合神经网络将图像矩用于视觉伺服,在应用方面则有具有代表性的需要实现眼注视任务的喷雾机器人等 [8] 取得了实验验证。
为了将基于图像矩的视觉伺服技术广泛地应用于各种作业环境下,必须寻找一种适用于复杂环境的图像分割算法,从而有效地计算图像矩。为此,本文针对堆叠工件图像特点,给出了一种图像信息提取算法。利用基于Canny边缘检测为梯度函数的分水岭算法分割出目标的区域,然后利用强度分层算法,以切片的形式得到各个工件的二值图像。最后举例计算工件的相关特征矩,提取目标工件数量、位姿信息。该方法能够为堆叠目标下的图像矩提供参考,不同于单个的目标检测,能够提高视觉信息的获取效率。
2. 分水岭分割(Watershed Segmentation)
S. Beucher [9] 等最早提出将分水岭算法用于图像处理,因其在图像边缘检测中独到的思想,独立于其他的分割算法。分水岭算法可以得到单一像素宽度的连续的边界,能检测出图像中粘连物体的微弱边缘并形成连续封闭的分割边缘,特别适用于堆叠工件的图像分割。但是,传统的分水岭算法存在过分割问题,严重干扰了目标工件的真实边缘提取。高丽 [10] 等人提出在梯度图像低频部分标记局部极小值,然后将标记的极小值叠加到原始梯度图像形成标记图像,由此设计了一种结合频域低通滤波和H-minima技术的改进分水岭算法。虽然过分割现象得到明显抑制,但存在边缘定位不准和弱边缘提取困难等问题,不利于进行相似目标在堆叠情况下的边缘检测。为了解决这类问题,本文采用Canny算子 [11] 进行边缘检测代替传统的梯度图像,并通过标记局部极大值来得到更好的前景标记。
2.1. Canny边缘检测(Canny Edge Detection)
Canny边缘检测算子对于不同类型的边缘,均具有良好的性噪比,优异的定位性能、对单一边缘产生多个相应的低概率性和对虚假边缘相应的最大抑制能力。这些性能对具有重叠工件的工件堆图像的边缘提取有很好的效果。其流程图如图1所示。
Figure 1. Flowchart of canny operator
图1. Canny算子流程图
针对工件堆图像中出现的重叠边缘,Canny算法具有较高的性噪比,
(1)
其中
是区间为
的滤波脉冲相应,
为边缘函数,
为高斯噪声均方根。由此可知,信噪比越大,提取边缘的精度越大。Canny算子不但能够准确检测出图像真实边缘,而且不会检测出非边缘点。
为了便于提取工件的位姿信息,需要准确定位工件的边缘信息,
数值越大,定位精度将越高。Canny算子检测出的边缘点能够极大程度接近实际边缘的中心越大。
(2)
因为工件是堆叠放置的,所以会形成遮挡、阴影等不利于边缘检测的因素,进而导致相关工件的边缘距离较小,Canny对单个边缘的检测出现多个响应的概率很低,使得其能够很好地抑制虚假边缘响应对边缘检测的影响。检测算子的脉冲响应导数的零交叉点平均距离
满足公式(3),就能够保证单边缘只有一个响应。
(3)
输入的图像经过二维高斯函数
平滑处理后,会变得更加平滑,噪声也能够得到较好的抑制。式中
是平滑参数,当其较小时,虽然对噪声的鲁棒性能、对图像的平滑能力都较低,但是却有较高的边缘定位精度;当
较大时,高斯平滑模板也会随其增大,随之而来的就是运算量的大幅度增加和边缘位置的大幅度偏移,进而
的值应该在1.0和2.0之间。梯度计算,能够完成对平滑后数据阵列的梯度方向
和梯度幅值
的计算。可以采用2 × 2领域一阶偏导的有限差分计算,如式(4)、(5)所示:
(4)
(5)
其中
和
分别是原图像被滤波器
和
沿行、列作用的结果。
Figure 2. Comparison of four edge detection algorithms
图2. 四种边缘检测算法的效果比较
将使用Canny算子处理后的工件堆图像与Sobel算子、Roberts算子、Prewitt算子分割的图像进行效果对比分析。图2所示为上述3种边缘检测算子和Canny算子处理后的工件堆边缘检测效果图。Sobel算子、Roberts算子和Prewitt算子对工件的边缘检测效果都很差,几乎没有封闭的区域;Canny边缘检测各工件区域边缘效果非常好,不但精准检测出了各个工件的边缘,而且形成了连续封闭的区域,为下一步分水岭分割提供了有效的分割函数。
2.2. 标记局部极大值(Marked Local Maximum)
传统H-minima技术 [12] [13] 存在因h值取值过小而造成虚假种子点不能有效抑制而造成过分割;取值过大而造成欠分割的矛盾。方红萍 [14] 等提出一种自适应H-minima的改进分水岭算法,有效改善了分割性能。摄像机获取的原始图像比较复杂,图中灰度极值点比较多,不利于选择种子像素。为此,使用形态学中的基于重建的开闭操作 [15] 来清理图像。
开闭操作可以去除较小的非目标结构的特定图像细节,同时保证用于描述工件信息的全局不失真。基于开闭的重建操作是腐蚀后再进行形态学重建。设原始图像
及模板图像,对每一个像素
满足
。定义用结构元素B对像素
的腐蚀如下:
的每个像素与B的领域具有相同的形状和尺寸,选择该领域中的最小值并将其赋给的中心像素,迭代公式为:
(6)
结果如图3所示,左图为局部极大值检测的结果,右图是将其叠加在原始图像上的效果。
Figure 3. Local maximum labeling results
图3. 局部极大值标记结果
基于上述处理,使用MATLAB软件中的watershed函数对图像进行基于分水岭的图像分割,结果如图4所示。右图中位于顶端的工件均被检测出来,并且背景也被很好的分离出来。左图为灰度化图像,是下一步强度分层的输入图像。
Figure 4. Watershed segmentation results
图4. 分水岭分割结果
3. 强度分层(Intensity Stratification)
强度分层是由Papakostas等人 [15] 提出的。这一方法的思想是把图像按照切片的形式进行分解。一个切片是具有相同灰度值的像素集合。原始图像可以看出由切片及其对应的灰度值的乘积再累加求和:
(7)
其中L是灰度级(通常L = 256)并且切片
只包含灰度级为k的像素,即
(8)
通过这一方法,把计算灰度图像矩这一问题转换为二值图像矩的计算。每一个切片是一个二值图像,并且可以确定每一个切片
的矩:
(9)
把分割好的图像分解成切片如图5所示,根据
是灰度图像的第K个强度切片,计算出最适合机器人抓取的工件的深度及中心坐标。
Figure 5. Binary image and feature parameters of workpiece
图5. 工件二值图像及特征参数
4. 基于边界的图像矩计算(Image moment Calculation Based on Boundary)
在离散域,对边界的离散化和线积分的计算的不同会使每一种方法各不相同。Philips [16] 提出使用离散格林定理而不是使用连续情况下的离散化形式。该方法在没有使用如何逼近的情况下得到了准确的结果。Philips使用连续域格林定理的不同表达方法来设计算法:
(10)
其中,
和
是具有连续偏导数的任意函数。按照该定理的离散化形式,Philips证明了离散矩可以由边界像素表示如下:
(11)
其中
和
分别是右手边和左手边边界。它们定义如下:
式(12)定义了区域的形心。该坐标用于唯一地检测目标工件在图像平面上的位置。
(12)
式(11)中矩
的值取决于目标工件在图像平面中的位置。因此常常要用到所谓中心距,其定义为
(13)
若区域是不对称的,可以用对应于最大矩的主轴和轴X之间的夹角
的形式来表示R的方向。该角度可用以下方程计算
(14)
以参考文献 [4] 为例,为了实现四自由度机器人的末端执行器定位作业,计算出图4中工件的相关图像矩特征集:
5. 结论(Conclusion)
1) 通过对比Canny算子和3种经典边缘检测算子的边缘检测效果,发现Canny算子边缘检测效果最好,可以作为分水岭分割的分割函数。
2) 利用基于重建的开闭操作得到最佳的种子区域,并进行分水岭分割。结果表明,该方法可进行有效的图像分割。
对分水岭分割后的工件图像进行强度分层,计算其图像矩特征集,获得用于四自由度机器人的抓取任务的视觉信息。
基金项目
江苏省研究生科研与实践创新计划项目(SJCX18_1052),国家自然基金(61803186)。
参考文献