基于图像深度信息集的Hough圆检测方法*
2018-06-07朱福康孟凡杰
朱福康,刘 毅,孟凡杰,丛 明
(1.大连理工大学 机械工程学院,辽宁 大连 116024;2.营口金辰机械股份有限公司,辽宁 营口 115000)
0 引言
在机械制造行业中,零件装配是产品出厂前的基本工作之一,其中轴孔装配是最常见的配合形式。随着工业4.0时代的到来,机械装配也由自动化向智能化方向发展,越来越多的机构研究使用视觉系统和工业机器人完成零件装配工作。
在轴孔装配工作中,如何通过机器视觉完成对待装配工件上圆孔的识别和定位是整个装配过程的关键。霍夫变换(Hough transform)于1962年由Paul Hough首次提出,而后经推广和改进广泛应用于图像中直线和圆形的检测[1]。传统Hough变换最大的优点是识别效果的鲁棒性,即对图像的质量和噪声不是特别敏感[2]。但该算法的实现会占用大量的计算机内存、花费很长的计算时间,使得传统Hough变换在实际应用中几乎无法实现[3-4]。
因此,国内外专家学者不断对传统的Hough变换算法进行改进,做了大量的研究工作。Xu L等[5]提出了随机霍夫变换算法(randomized Hough transform),通过对图像空间中的点进行随机抽样以及参数空间中的动态链表结构解决了传统Hough变换计算时间长、内存开销大问题,在处理背景简单的图像时表现出了很好的性能。蒋联源[6]对随机Hough变换进行了改进,优化了样本点和待选圆的确定算法,结果表明该算法具有很强的鲁棒性和良好的检测精度,检测速度明显优于原算法。Victor AR等[7]采用遗传算法寻找最优候选边缘点,避免了一些伪边缘点参与后续运算,缩小了搜索空间,结果表明该方法较传统Hough圆检测提高了检测的速度和精度,检测结果可以达到亚像素级别。上述方法虽从理论上解决了传统Hough变换的一些缺点,但在实际工程应用中仍存在一些问题,如:当存在多个相似的圆时会同时检出,无法单独识别出特定的圆;图像背景复杂时容易出现错检和漏检等。
针对上述问题,本文提出了基于图像深度信息集的Hough圆检测方法。该方法利用待检测圆孔所在平面的图像深度集对该圆孔的彩色图像进行相应的像素级数据预处理,屏蔽掉与待检测圆孔所在平面无关的像素信息,大大减小了后续圆孔检测的计算复杂程度,再利用Hough梯度法即可准确检测出该圆孔的相关参数信息。实验结果表明:基于图像深度信息集的Hough圆检测方法,克服了现有的Hough变换方法无法单独识别特定的圆以及容易出现错检和漏检现象等缺点,适用于复杂背景下特定圆孔的检测。
1 Hough圆变换算法原理
我们已知圆在二维图像坐标系下的解析表达式为:
(x-m)2+(y-n)2=r2
(1)
其中,(x,y)是像素坐标变量,(m,n)为圆心坐标,r为圆的半径。
图1 圆在参数空间中的映射
根据Hough变换的原理,图像坐标系下的一个像素点映射到参数空间中表现为一个锥面。如果将图像坐标系下所有的像素坐标按此映射关系变换到参数空间中,将在参数坐标系下形成一个圆锥面簇,若源图像中存在圆形,那么属于同一个圆周上的像素点在参数空间中会交于一点,如图1所示。通过统计找到累加器中的局部最大值集合,如果存在多个圆锥面交于一点(mi,ni,ri),那么就说明源图像中存在圆形,其中(mi,ni)就是这些圆形的圆心坐标,ri为圆的半径,单位为像素。
2 基于图像深度信息集的Hough圆检测
图2 基于深度信息集的工件圆孔检测
在机械零件装配行业中,存在大量的回转体结构,往往一个单一的工件上就会存在很多的通孔、沉孔以及圆形工艺凸台,若直接对相机获取的源图像进行Hough圆检测则会将图像中所有的圆检测出来,无法直接获得待装配的圆孔信息且计算量巨大。对此,本文提出了一种基于图像深度信息集的Hough圆检测方法,具体实现流程如图2所示。
2.1 图像预处理
对图像样本的数字化处理采用开源计算机视觉库(Opencv),深度图像数据存储为CV_16UC1格式,彩色图像数据存储为CV_8UC3格式[8]。下面以8位3通道(CV_8UC3)彩色图像为例说明如何对图像进行像素级处理。如图3所示,一个3×2个像素大小的RGB图像在Mat中的存储形式实质上就是一个3行2列的矩阵,每列又包含了蓝、绿、红三个通道。(Opencv中以BGR顺序存储)。
图3 8位3通道RGB图像在Mat中的存储方式
如果我们想访问像素矩阵中某个像素对其进行读取或重新赋值,就要用到如下寻址表达式:
Addr(M(i,j))=M.data+M.step[0]×i+M.step[1]×j
(2)
图4 磁流体密封装置彩色图像
图5 磁流体密封装置深度图像
其中M.data是起始位置的地址,即左上角蓝色块的地址,step[0]表示每一行像素的数据大小,step[1]表示一个像素的数据大小(以8bit数据块为一个单位),i和j分别代表像素矩阵的行和列的下标(矩阵索引下标从0开始)。
图6 图像预处理算法流程图
假设我们想访问最后一个像素M(2,1),那么M.data+M.step[0]×2+M.step[1]×1 就指向最后一个像素。本文中,我们利用3D相机采集到的对齐的彩色和深度数据流样本如图4、图5所示,其中黑色圆孔为待装配轴承孔。
根据深度图像中待装配轴承孔所在平面的深度信息获取到该平面上所有像素的坐标,然后将该坐标集对应到彩色图像中,对彩色图像进行像素级处理,屏蔽与待检测轴承孔无关的像素信息,具体算法流程如图6所示。
图7为经图像预处理后的待装配工件的彩色图像,用于后续的检测。
图7 图像预处理效果图
2.2 Hough梯度圆检测
对于圆周上每一个非零像素点,沿其局部梯度矢量方向的直线必过圆心。若忽略一定的误差,那么沿圆周上任意两个不在同一条直线上的点的梯度方向直线的交点就是该圆的圆心,连接圆心和上述两点中的任一点之间线段的长度即为半径[9-10]。具体实现步骤如下:
(1)将待检测图像转为灰度图并对其进行高斯平滑处理。
(2)对图像应用Canny算子[11]进行边缘检测,针对边缘图像中每一个非零像素点计算其局部梯度。
(3)将梯度方向上的点放入累加器中累加并记录每个非零像素的位置坐标。
(4)找出累加器中的局部峰值,并将这些峰值降序排列,如果这个峰值受到边缘图像非零像素充分的支持,那么就会被认定为圆心,由圆心到边缘上任一点的距离即为半径[12]。
关于步骤(2)中局部梯度的计算,假设被作用的图像为M,我们分别对其x和y两个方向求导(使用3×3的内核进行卷积):
(3)
(4)
之后使用如下两个公式计算出梯度的幅值和方向:
(5)
(6)
3 实验结果分析
图8 图像采集与处理软件
根据上述原理,本文利用Microsoft Visual Studio 2010、Opencv2.4.9、Intel RealSense R200相机搭建了图像采集与处理系统(软件界面如图8所示),并对三轴磁流体密封装置上的轴承孔进行了检测实验。
图9为利用传统的Hough梯度法得出的检测结果,共检出了2个圆,其在图像坐标系下的圆心坐标和半径分别为[(199,115),40]、[(197,116),99],但并没有检测出待装配的轴承孔。图10为采用基于图像深度信息集的Hough圆变换的检测结果,共检出了1个圆,其在图像坐标系下的圆心坐标和半径为[(202,116),11],得到了待装配轴承孔在图像坐标系下的相关参数信息。
由对比分析可知,若对源图像直接使用传统Hough梯度法,会倾向于检出所有同心圆中最大的圆形,并不能得到需要检测到的圆形,继而无法得出待装配轴承孔的相关参数信息,不能满足实际工程需要。而基于图像深度信息集的Hough圆检测可以依据待装配圆孔所在平面的深度信息快速提取与该孔有关的像素坐标,屏蔽与检测目标无关的像素,再利用Hough圆变换得到该圆孔的所需参数,以便引导工业机器人进行下一步的装配工作。
图9 传统Hough圆检测
图10 基于图像深度信息集的Hough圆检测
4 结束语
本文以三轴磁流体密封装置上的轴孔自动装配为研究对象,提出了一种基于图像深度信息集的工件圆孔检测方法,并开发了图像采集与处理软件验证该方法的可行性与优点。利用图像深度信息以及彩色图和深度图二者之间的对应关系对待检测图像进行像素级预处理,然后结合边缘图像的梯度信息进行Hough变换,既保留了传统Hough梯度法的鲁棒性,又弥补了传统方法的缺点和不足,使其可以更好地应用于轴孔自动化装配工作中。实验结果表明,该方法可以直接准确地获得待装配轴承孔的相关参数信息,满足实际工程需要。
[参考文献]
[1] Djekoune AO, Messaoudi K, Belhocine M. Incremental Hough Transform: A New Method for Circle Detection[A]. In Computational Intelligence [C]. Springer International Publishing,2016.
[2] Lo RC, Hsu HC. A Circular Band Extraction Method Based on Extended Hough Transform[J]. International Journal of Pattern Recognition and Artificial Intelligence, 2016 ,30(8):1655021.
[3] Zhou B, He Y. Fast Circle Detection Using Spatial Decomposition of Hough Transform[J]. International Journal of Pattern Recognition and Artificial Intelligence,2017,31(3):652-657.
[4] 叶峰,陈灿杰,赖乙宗,等. 基于有序Hough变换的快速圆检测算法[J]. 光学精密工程,2014,22(4):1105-1111.
[5] Xu L, Oja E,Kultanen P. A new curve detection method: randomized Hough transform (RHT) [J]. Pattern recognition letters,1990,11(5):331-338.
[6] Jiang LY. Efficient randomized Hough transform for circle detection using novel probability sampling and feature points[J]. Optik-International Journal for Light and Electron Optics, 2012,123(20):1834-1840.
[7] Victor AR,Carlos H,Garcia-Capulin,et al. Circle detection on images using genetic algorithms[J]. Pattern Recognition Letters, 2006, 27(6): 652-657.
[8] Kaehler A,Bradski G. Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library[M]. O'Reilly Media, Inc,2016.
[9] 崔继文,谭久彬. 基于梯度信息的随机Hough变换圆轮廓测量技术[J]. 红外与激光工程,2006,35(S4):419-424.
[10] Su L, Yan M, Yin Y. Small surface target detection algorithm based on panoramic vision[A]. InControl Conference (CCC) [C].IEEE,2016:3967-3972.
[11] Razak NA, Liong CY, Jemain AA, et al. Firing Pin Impression Segmentation using Canny Edge Detection Operator and Hough Transform[J]. Journal of Telecommunication, Electronic and Computer Engineering (JTEC),2017,9(1):6-23.
[12] 毛星云,冷雪飞. OpenCV3编程入门[M].北京:电子工业出版社,2015.