程 鑫,刘一鹏,彭 程,夏一恒
(1.武汉理工大学 机电工程学院,湖北 武汉 430070;2.湖北省磁悬浮工程技术研究中心,湖北 武汉 430070)
工业生产中通常使用螺钉对零部件进行紧固接合,特别在机动车辆中,涉及大量采用螺钉紧固的关键零部件。漏装或误装螺钉会造成零部件损坏,甚至可能严重影响车辆安全,造成严重的安全事故或人员伤亡[1-2]。因此在生产过程中,需要高效率、高精度对螺钉装配情况进行识别。
传统的螺钉识别方法大多依赖人工操作,漏检、误检等情况难免发生,受人为因素影响较大,识别精度和效率受限,无法满足现代工业生产要求[3]。随着数字图像处理技术的发展,机器视觉识别已经应用于多种工业环境,该方法凭借其识别的快速性和准确性,取得了良好的效果[4]。非接触式识别的特点更进一步确保了工件的安全,防止了识别过程中可能发生的意外情况。
文献[5]通过对线性特征的有效匹配进行螺钉定位,采用全局阈值和自适应阈值结合的方法对螺钉区域进行分割提取,研发了一套针对小批量大规模设备的识别系统,但由于采集缺失等原因需要复检。文献[6]选用HSV(hue, saturation, value)颜色空间来减小外界干扰,提出了一种基于特征颜色边缘检测的定位算法,极大地提高了算法的速度和精度,但该方法并未应用到工业环境中,实际效果未知。文献[7]基于梯度信息和先验知识,改进了Hough变换检测方法,在保证精度的同时,提高了检测速度,但受外界因素影响较大。文献[8]采用粗定位和精定位结合的螺钉定位方法,提出了一种基于几何特征的图像匹配方法;文献[9]基于颜色信息和纹理特征对电表螺钉进行定位和识别,算法有较强的前瞻性。文献[8]和文献[9]在识别准确率上得到了极大提高,但是系统较为复杂,数据库的建立难度较大,且应用成本昂贵,不适用于小型企业生产应用。
笔者针对实际生产中水泵标准化、批量生产的特点,结合先验知识和识别需求,设计了一种螺钉在线识别系统。该系统采用特征颜色、边缘检测、霍夫变换相结合的方法进行螺钉的定位和识别,受外界因素影响较小,可以实时检测工件并反馈给用户,减少返工件和损坏件的产生,在保证识别精度和速度的前提下,减小系统成本,对于中小型企业的生产应用提供了指导意义,可以有效提高生产效益。
螺钉识别系统硬件部分由光源、PC(peoper computer)机、CMOS(complementary metal oxide semiconductor)相机、显示屏、过渡工装等组成,如图1所示。软件部分由图像处理程序和用户界面组成,其软件系统流程如图2所示。
图2 软件系统流程图
实际的水泵生产为流水线型生产,具有较强的衔接性、连续性,对识别的精度和速度具有较高要求。在检测工件时,将待测工件置于过渡工装,CMOS相机和光源位于工件上方特定位置。通过相机实时获取工件图像信息并传送给PC机,基于特征颜色的边缘检测进行目标定位,霍夫变换进行目标识别,最终的识别结果将实时显示在用户界面。根据实时反馈的识别结果,用户将对被测工件进行正确的处理,其系统流程如图3所示。
图3 螺钉识别系统流程图
在水泵生产过程中,由于工厂环境和图像采集设备的影响,使得获取的图像存在各种噪声和失真。这都会对后续的图像处理造成不良影响。为了改善图像质量,提高识别系统的速度和精度,需要对图像进行预处理。
经典的图像滤波方法分为线性滤波和非线性滤波,其中线性滤波是算术运算,包括方框滤波、均值滤波等。非线性滤波是逻辑运算,包括中值滤波、双边滤波等[10]。直接使用经典滤波方法进行图像处理时,会在消除噪声和保护图像细节之间难以平衡。笔者采用自适应中值滤波对工件图像进行滤波处理。
自适应中值滤波和中值滤波都是基于排序统计理论的[11],其基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让其接近周围的真实值,从而剔除孤立的噪声点,达到良好的滤波效果。它同样会使用到一个矩形的滤波窗口Sxy。常规中值滤波器中这个窗口的大小是固定的,无法兼顾降噪和保护图像细节;自适应滤波是在常规滤波的基础上,通过不断变换窗口的大小来实现降噪的同时,最大限度地保护图像细节。该方法步骤如下:
(1)将彩色图像分离成3个通道。
(2)设置初始滤波窗口尺寸Sxy和最大窗口尺寸Smax。
(3)根据噪声区域的状况,进行A层、B层滤波。合并3个通道得到输出图像。
其中A层、B层滤波方法如下:
定义Zmin为Sxy中的最小灰度值。Zmax为Sxy中的最大灰度值。Zmed为Sxy中的灰度中值。Zxy为坐标(x,y)处的灰度值。
A1=Zmed-Zmin
A2=Zmed-Zmax
B1=Zxy-Zmin
B2=Zxy-Zmax
(1)
A层:若A1>0且A2<0,跳转至B层,否则增大Sxy,如果增大后Sxy≤Smax,重复A层,否则输出Zxy。
B层:若B1>0且B2<0,输出Zxy,否则输出Zmed。
自适应滤波流程如图4所示。
图4 自适应滤波流程图
A层用于判断当前窗口得到的中值Zmed是否为噪声。如果是噪声,则增大窗口,直到找到一个非噪声的中值或者在窗口尺寸达到最大值时,输出Zxy;如果不是噪声,转入B层。B层用于判断Zxy是否为噪声。如果是噪声,输出Zmed;如果不是噪声,输出Zxy。通过A、B两层逻辑关系达到窗口自适应的效果,从而在降噪的同时兼顾保护图像细节。自适应滤波效果如图5所示。
图5 自适应滤波效果图
直方图均衡化是一种简单有效的图像增强技术,可以改善图像的视觉效果,提高清晰度。HSV颜色空间是一种将RGB(red,green,blue)颜色空间中的点在倒圆锥体中的表示方法。相对于RGB空间,HSV空间能够非常直观地表达色彩的明暗、色调以及鲜艳程度,受外界条件影响小。经过式(2)的转换,可以将H、S、V 3个分量量化,有效减少光照影响。
(2)
式中:H1为色相的中间变量;R、G、B分别为红、绿、蓝的颜色值;H、S、V分别为色相、饱和度、明度的数值。
在实际生产中,由于工艺的需求,打装螺钉的电批会预先蘸取印泥。根据这一特征颜色,将滤波后的图像转至HSV颜色空间并对V通道进行直方图均衡化,可以增强图像对比度,降低光照条件对图像的影响,改善图像失真效果,在一定程度上克服外界条件的干扰,提高目标定位算法的精确性和快速性。
直方图均衡化效果图如图6所示,在预处理后的图像中,由于工艺中印泥的存在,左侧已打装的螺钉相比于其他螺钉能有效区别于工件壳体,为基于特征颜色的边缘检测定位方法提供了依据,克服了由于螺钉和工件壳体颜色接近而对算法造成的干扰。
图6 直方图均衡化效果图
目标的准确定位对于目标的识别以及图像的理解与分析起着十分重要的作用。结合实际生产中蘸取印泥的特点和预处理之后图6显示的结果,笔者采用基于特征颜色的边缘检测方法进行螺钉定位。利用Open CV中的inrange函数和先验知识对图6进行目标分割,将目标点的H、S、V传入Matlab进行范围估定,结果如图7所示。
图7 目标分割及范围估定
通过反复实验得出H、S、V3值的最佳取值范围为H:175~180;S:40~65;V:200~220。利用上述范围获取目标点坐标,实现了在确保精确的前提下尽可能捕捉到更多目标点的效果。根据坐标划分ROI(region of interest),进一步提高图像处理速度。
图像的边缘是图像的最基本特征,边缘检测可以利用图像中灰度值的变化提取图像边缘轮廓信息并消除不相干的信息。常用的边缘检测算子有:Canny算子、Sobel算子、Roberts算子等[12]。
Sobel算子是一阶导数的边缘检测算子。它根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象从而检测边缘[13]。算法实现过程如下:
(1)借助高斯滤波器或者其他滤波器对原图像进行平滑。
(2)通过横向Sx和纵向Sy的3×3矩阵模板与灰度后的图像A作平面卷积得到Gx和Gy,进而得到梯度幅值图像。
(3)选取合适的阈值G以提取边缘。
(3)
在本文所研究的工业环境中,目标螺钉和工件灰度差别较小,环境干扰较大,且对检测速度有一定的要求。Sobel算子计算速度较快,对灰度渐变和噪声较多的图像处理效果较好,适合本文特定的工业环境。因此,笔者调用Open CV中的Sobel函数对ROI进行边缘分析,提取待测目标的轮廓信息。影响Sobel函数检测结果的参数主要是ddepth和ksize,即输出图像深度和Sobel核的大小。经过对比实验,最终选择ddepth=CV_16S和ksize=3作为本文中Sobel函数的最优参数进行边缘检测,对比实验结果如图8所示,ROI及边缘检测结果如图9所示。
图8 对比实验
图9 ROI及边缘检测
Hough变换是一种特征检测,主要用于辨别目标物的特征,在累加空间中进行“投票”来决定检测结果[14]。
Hough变换的核心思想是将图像的空间域转换到参数域,是一种区域边界形状描述的算法。Hough变换利用点与线的对偶性,将原始图像空间的给定曲线通过曲线表达形式变为参数空间的一个点。采用统计计算的方法,根据对数据的统计结果,求出最优解,即图像的边缘形状和参数信息,常用于检测直线、圆、抛物线等。
平面内圆的一般方程为:
(4)
式中:(a0,b0)为圆心;r0为半径;(xi,yi)为圆上任一点坐标。
在Hough空间中圆的参数方程为:
(a-xi)2+(b-yi)2=r2
(5)
式中:a,b,r为参数。
图10中,平面空间内圆上的任意一点(xi,yi)映射在参数空间中对应一个三维直立圆锥。这些圆锥面相交于一点(a0,b0,r0)。该点即为平面空间中圆的参数[15]。
图10 平面空间和参数空间
Hough变换的鲁棒性较强,在检验已知形状目标方面具有受噪声及曲线间断影响小的优点,而在实际生产中,水泵的技术参数已知,符合算法需求。因此笔者调用Open CV中的HoughCircles函数进行目标识别,其函数流程如图11所示。
图11 HoughCircles函数流程图
基于先验知识,在已知目标参数大致范围的条件下,Hough变换较为精确地识别出了待测目标,识别结果如图12所示。
图12 HoughCircles识别结果
笔者选用的CMOS相机为深圳林柏视科技公司生产的G200,参数如表1所示。
表1 相机参数
CMOS相机拍摄的图像经过算法处理后得到的目标尺寸是以像素为单位的,需要对识别系统进行线性标定,建立图像尺寸与实际目标尺寸的对应关系。首先选取已知尺寸为dmm的标准量块,然后对相机采集的量块图像进行图像处理得到量块的像素尺寸d1pixel。那么系统的标定系数k=d/d1。
误差是实验中无法避免的,为了尽可能降低误差带来的影响,通常需要核定标定系数。笔者通过对标准零部件的多次标定实验,求出一组标定系数,以平均值k=0.082作为最终的标定系数,以提高标定精度,降低实验误差。多次标定实验数据如表2所示。
表2 标定系数
识别系统软件采用C++语言在Qt Creator平台上结合Open CV库进行开发。实验结果如图13所示。
图13 实验结果
为了进一步研究本文识别系统的性能,根据上述方法对一批工件进行图像处理实验,得到每个螺钉头部直径的像素尺寸d1pixel,根据标定系数k换算成本文算法的测量值dk2mm。将dk2mm和人工测量的头部直径真实值dkmm进行对比,并比较这批工件中平均每个工件的人工测量时间t和本文算法时间t1,以及螺钉的识别概率p,验证本文方法的有效性,测量值与直实值对比如表3所示、时间对比及识别概率如表4所示。
表3 测量值与真实值对比
表4 时间对比及识别概率
从实验结果可知,本文方法的检测结果良好,对目标有较好的识别效果,适用于本文特定的工业环境,实际检测中速度较快,满足生产的要求,且误差在±0.10 mm以内,进一步验证了本文方案的可行性。
在实验过程中,误差是无法避免的,影响本文实验结果的因素为:①外界环境。实验过程中外界噪声和光线的影响虽然已经通过算法进行了一定的抑制,但并不能完全消除。②实验设备。CMOS相机本身以及各部分硬件安置的平行度误差。
为了提高生产效率,笔者实现了在工业生产条件下对水泵中螺钉的检测识别工作。针对实际生产环境和工艺特点,搭建了软硬件系统平台,对一批工件进行了实验验证,并对系统性能和误差来源进行了进一步实验分析。证明了本文方案是行之有效的,可以在一定程度上提高识别精度和速度,满足实际生产需求,具有一定的实际意义。