陈岚萍,刘寒寒,马正华
(常州大学 信息数理学院,江苏 常州 213164)
工业生产中,对工件的尺寸、精度的要求会直接关系到机械的使用寿命、运动性能等,还会关系到环境污染、能源消耗问题。传统的手工测量方法不仅依赖操作人员,还会造成操作者劳动强度大的问题,从而造成误差大、生产效率低等问题。面对大批量、精度要求高的产品,研究低成本、高精度、高效率、低消耗的自动检测系统是解决这个问题的关键[1]。
目前,利用机器视觉技术进行检测已经成为国内外研究的热点,它能实现对工件的实时在线自动检测,可以减小人为误差、提高生产效率和检测精度。视觉检测技术有很多检测方法:自适应开关中值滤波算法[2]、基于插值理论的精确定位细分算法[3]、基于二维小波降噪的亚像素图像处理方法[4]、基于公共特征的图像拼接算法[5]、分形插值和小波变换结合的亚像素级边缘定位检测方法[6]等。这些方法与传统的算子相比,检测精确度、准确度都有很大的提高,但是计算复杂度高。基于Blob分析的织物缺陷检测方法[7],对织物图像进行图像分割、形态学处理、特征提取、特征参数计算等,计算简单、易于实现,克服了这一问题,但是在光照不均情况下,该算法的检测效果不是很好。为了解决这一问题,本文提出一种基于Lanser算子的亚像素边缘检测与基于亚像素的形状选择函数相结合的方法,能实现对工件的基本参数更快速、更准确的测量。
本文提出基于Lanser算子的亚像素边缘检测与基于亚像素的形状选择函数相结合的方法,从而准确确定普通工件目标检测对象,提高目标检测的准确度与精确度,减少目标检测的时间。
传统用来描述物体轮廓的每个点之间是一个像素间距,数字图像中最基本的单位是像素,像素越高,分辨率越大,图像越清晰。实际工业应用中,需要比像素分辨率更高的精度,这时候就需要提取亚像素精度数据。亚像素边缘检测技术是在不改变系统硬件条件下,通过软件的方式来提高边缘检测的精度,使图像分辨率低于1个像素的图像处理技术[8]。
XLD(extended line descriptions)代表亚像素精度的边缘轮廓和多边形,可以理解为扩展线的描述。本文采用基于Lanser算子的亚像素边缘检测,从而提高边缘检测的精度。
学者Canny[9]提出理想边缘检测器应满足3条准则,他将这3条准则组合成一个最优化的准则,并通过变积分方法解决了这个问题。Canny边缘检测器与高斯滤波器一阶导数近似,在二维图像(x,y)中,其表达式为
(1)
(2)
Deriche边缘检测器修正了Canny边缘检测器不能以递归方式计算的不足,其表达式为
(3)
(4)
若要使得Canny滤波器与Deriche滤波器的效果类似,则需满足
(5)
上述两种边缘检测器,Canny边缘检测器具有各项同性和旋转不变形,却不能用递归方式计算,故其运行时间由σ的平滑程度决定。Deriche边缘检测器能以递归方式计算,其运行时间不受α的影响,运行速度快,但它是各项异性的,其边缘幅度依赖于图像中的边缘角度,边缘检测的精度会降低[10]。
Lanser[11]证明了Deriche边缘检测器的各项异性是可以修正的:假设在Deriche边缘检测器的梯度方向为φ时,得到边缘幅度为A,该梯度方向下边缘幅度真实值为A′,则A′与A有如下关系
A′=V(φ)A
(6)
式中:V(φ)为原始振幅方向灵敏度失真补偿系数,x(φ)、y(φ)分别为V(φ)的X轴方向、Y轴方向的失真补偿系数
(7)
式中
(8)
φ与V(φ)的关系如图1所示,通过计算得到每个梯度方向φ对应的V(φ)值。
图1 φ -V(φ)关系
图1中
(9)
在光照不均时,从图像中提取的亚像素精度轮廓还是不能完全去除伪边缘或者不必要轮廓,为了消除这些不必要特征,必须从分割结果中选出某些轮廓,从而确定需要测量的特征。
在提取需要测量的特征之前,因为有噪声、物体本身断裂等原因,很多边缘是共线但是断裂的,我们需要先合并XLD,本文主要用到共线轮廓合并和共圆轮廓合并。
亚像素轮廓可以分为两种:①闭轮廓:首尾相交;②开轮廓:首尾不相交。
XLD特征主要包括以下4个特征:①基础特征:XLD面积(area)、中心、宽高、左上角及右下角坐标;②形状特征:圆度(circularity)、矩形度(rectangularity)、紧密度/粗糙度(compactness)、长度、凸性、离心率/偏心度、膨松度(bulkiness)、外接圆半径、外接矩形的方向及两边长度等;③云点特征:云点面积中心及方向、等效椭圆半轴及角度等;④几何特征:二阶矩等。
本文为了准确地提取目标边缘轮廓,按照基于亚像素的形状选择函数对圆度特征、凸包特征、紧密度特征等实现目标边缘轮廓的提取。
最小二乘法拟合是平面拟合中最常用的拟合方法,以直线为例,由于采用的平方距离,所以与直线距离远的那些点在最优化过程中会有非常大的权重,因此最小平方直线拟合法对于一些大的离群值是不具有鲁棒性的。针对这一问题,本文采用鲁棒性拟合。
鲁棒性拟合[12]的核心为了减轻远离点的影响,从而取消离群值或者赋予离群值很小的权重。以直线为例,Tukey权重函数方法就是一种为距离远的点选定了其距离值而不是平方距离值参加运算的鲁棒性方法。定义Tukey权重函数ω(δ)为
(10)
式中:δ为点到直线的距离;τ为削波因数。
距离δ大于τ的点为离群值,拟合直线时被忽略;其余点的权重在0-1之间。削波因数τ代表的是一个距离,可以依据数据自身推出削波因数,通常可以基于点到直线的标准偏差来实现。为了得到数据中的离群值,所以不能使用常规标准偏差,而必须使用针对离群值的鲁棒的标准性偏差。式(11)被用来计算这个鲁棒的标准偏差σδ,削波因数τ被设置为σδ的一个小倍数,本文设置τ=2σδ
(11)
引入权重函数后,使用多次迭代来定义权重。具体流程是:第一次迭代中使用权重ω(i)=1,i=1,……,n,即使用标准的直线拟合得到一条近似直线,并通过此计算出每个点到直线的距离δ(i),再根据式(11)得到鲁棒的标准偏差σδ,从而得到削波因数τ,最后根据式(10)得到权重,并作为下次迭代使用的权重;再按照相同的步骤重复迭代过程;最终迭代结束,获得理想的边缘轮廓,鲁棒性拟合结束。
本文的研究路线如图2所示。
图2 研究路线
本文基于Halcon软件平台搭建机器视觉检测系统,如图3所示。实验中采用计算机为3.70 GHz处理器的PC机,光学镜头为远心镜头。工业相机为1394相机:德国AVT stingray F125b,内置图像预处理功能,分辨率为1292×964,像素为120万,帧率可达30 fps;采用1/3的CCD传感器,面阵相机,型号为SonyICX445。图像采集卡为德国AVT 1394,具有好的画质,高速的传输速度。光源选择LED(发光二极管),它采用直流供电,亮度取决于电流大小,容易控制;发光功耗小、发热小、发光效率高 。
图3 机器视觉检测系统
使用算子read_image()读取相机获取的普通工件原始图像,如图4所示。
图4 待检测目标工件图像
在实际测量环境中,利用相机的内参数,根据针孔成像原理从相机坐标得到的物理坐标满足不了高精度的需求,系统标定通过计算每个像素对应的实际物理尺寸,会让标定后的检测更加便捷,能满足精度要求高、生产效率高的测量环境。实际物理尺寸d1(mm)与像素数d2(pixel)之间存在的比例关系,称作标定系数,即单个像素实际物理距离d(mm/pixel)
d=d1/d2
(12)
在复杂背景下,为得到图像中的物体信息,我们必须进行目标图像与背景的分离,即目标提取,从而提取图像中与感兴趣物体相对应的区域。使用算子gen_rectangle2()、reduce_domain()、crop_domain()获得目标对应区域,如图5所示。
图5 目标工件检测区域
为了准确地提取亚像素边缘,本文提出基于Lanser算子的亚像素边缘检测与XLD特征选择相结合的方法。
首先通过算子edges_sub_pix(ImagePart, Edges, ′lanser2′, 2, 20, 40)对目标进行粗略检测,如图6所示。其中,′lanser2′ 为二阶Lanser滤波器;2表示高斯平滑系数,该参数越小,平滑越强大;20和40表示梯度值,即边缘的梯度,也可以理解为低阈值和高阈值。
图6 目标粗略检测
然后对轮廓进行XLD合并,通过合并临近轮廓的亚像素,将端点很近的轮廓连接起来,算子union_adjacent_contours_xld(Edges,UnionContours,10,1,′attr_keep′)得到如图7(a)所示的轮廓。Edges为输入的亚像素轮廓,UnionContours为合并后的轮廓,10为两个轮廓的绝对距离,1为两个轮廓相对距离比值阈值,′attr_keep′为各轮廓属性值是否被忽略,这个参数表示保持原来的属性。
图7 目标精确检测
最后通过基于亚像素的形状选择函数算子select_shape_xld()对图7(a)先进行面积area特征(取200~19000)得到图7(b)边缘轮廓;再进行凸包convexity特征(取0.99~1)得到图7(c)边缘轮廓;最后进行紧密度compactness特征(取1~1.5)得到图7(d)边缘轮廓。
为了对目标进行拟合、特征计算,那么就要目标轮廓进行分割和分类,从而得到轮廓数目与轮廓处理的顺序。先通过分割函数算子segment_contours_xld(),轮廓分割方式选择′lines_circles′(使用直线段和圆(弧)分割)。再通过算子sort_contours_xld()依据轮廓的相对位置对轮廓分类。最后通过算子count_obj()计算连通域个数,本文由计算得到8个连通域。
本文通过for循环对8个连通域进行拟合和特征计算,最终目标轮廓如图8所示。
图8 最终目标轮廓
先通过算子select_obj()选择轮廓,再通过算子get_contour_global_attrib_xld()根据其轮廓特性确定目标轮廓的拟合方向(当轮廓的属性参数Attrib为-1,表示该轮廓适合拟合成直线;当轮廓的属性参数Attrib为0,表示该轮廓适合拟合成椭圆;轮廓的属性参数Attrib为1,表示该轮廓适合拟合成圆)。
最后通过基于Tukey算法的鲁棒性拟合得到最终目标轮廓。若Attrib=1,用算子fit_circle_contour_xld()进行亚像素拟合圆,并用算子gen_ellipse_contour_xld()对该拟合参数进行亚像素圆的创建;若Attrib=-1,用算子fit_line_contour_xld()进行亚像素拟合直线,算子gen_contour_polygon_xld()对该拟合参数进行亚像素直线的创建。
本文将基于Blob分析算法检测的结果与基于本文算法目标检测的结果进行比较分析,得到如图9所示的检测结果。
图9 基于不同算法的检测结果
对同一幅图像进行两种检测算法得到的检测结果进行重新编序,如图8所示,标号排序后的检测结果见表1。
目标系统标定下得到每个像素对应的实际几何尺寸为0.2 mm/pixel,通过计算,得到如表2所示的目标检测结果的实际测量数据。
对表2进行比较,可知基于本文算法检测的时间优于基于Blob分析算法检测的时间;基于Blob分析算法的检测与目标基准边缘之间的偏差较大,基于本文算法检测获取的边缘与目标基准边缘十分吻合。由此可见:针对光照不均边缘,基于Blob分析算法的检测的图像边缘点与实际边
表1 目标特征检测结果
表2 工件实际测量数据
缘之间有像素级偏差;而本文算法利用基于Lanser算子的亚像素边缘检测的特点,具有较好的噪声抑制能力、定位精度和准确度。
本文通过Halcon软件,应用机器视觉技术,实现了对工件目标特征尺寸的检测与测量。与传统检测方法相比,机器视觉检测方法具有非接触、精度高、速度快的优点。与其它视觉软件相比,Halcon具有可视化、快速、稳定、操作方便等特点。本文检测系统对测量环境的要求低,具有较强的自适应能力和稳健性,极大地提高了检测效率。基于Lanser算子的亚像素边缘检测与基于亚像素的形状选择函数相结合的方法很好地处理了光照不均等复杂环境下检测的效率、精度、准确度等问题,因此该方法是可行的。