基于像素邻域的传动轴亚像素边缘检测
2019-01-18,,,
,,,
(南京理工大学 机械工程学院,南京 210094)
轴类零件在机械设备中有传递动力的作用,机械设备的使用性能直接受到轴类零件几何尺寸精度的影响[1]。因此,生产企业对轴类零件的加工制造和检测精度提出了较高的要求。对于轴类零件,接触式测量方法可能引起零件表面的损伤和工件变形。随着数字图像处理理论和方法的不断发展和完善,利用机器视觉测量方法对轴类零件进行检测已经切实可行[2],并且该方法精度高、无接触、实时性好。因为边缘是图像最基本的特征,包含了被测物体的尺寸和位置信息,所以图像边缘检测是机器视觉测量的重要基础。目前,传统的像素级边缘检测算法已经满足不了检测精度的需要。亚像素边缘检测算法一般分为3类:曲线拟合法[3]、插值法[4]和矩方法[5]。2011 年,陈静等[6]提出了一种三次多项式拟合的图像边缘检测算法,该算法的计算时间较少。2008年,HERMOSILLA等[7]将ENO(基本无振荡)插值与梯度检测算法结合起来进行边缘检测。Bin等利用低阶径向数及其矩量的旋转不变性,提出了一种基于OFMM(正交傅里叶-梅林矩法)的方法。
2013年,TRUJILLO-PINO等[8]提出基于局部区域效应的高精度边缘检测算法,该方法利用边缘点所在邻域的灰度信息计算边缘的亚像素位置,在理想图像的边缘检测中的精度非常高,可以完全地检测出边缘信息,包括位置、方向以及曲率等,并提出了对于低噪声图像的改进模型,但该方法对高噪声工件图像的边缘检测效果不佳。为此,对于高噪声图像,可以在基于邻域的亚像素边缘检测算法的基础上,通过迭代、复原算法来获得更精确的亚像素边缘。此外,采用文献[8]的方法进行边缘检测时,需要人为反复设定并调整阈值,降低了工作效率。笔者对此进行了改进,利用大津阈值(Otsu)算法[9]自动检测,得到最优梯度阈值。文献[8]在求取亚像素位置时,直接用曲线的截距有一定误差,故采用改进算法。
1 算法原理
1.1 基于像素邻域获取亚像素边缘
一条边缘将如图1所示像素分为像素值为A和B的两部分,为符合一般边缘的性质,将这条边缘近似为多项式y=a+bx+cx2,坐标系的原点在像素(i,j)的中心,假设a,b,c和A,B的值未知。而在一幅真实的图像中,像素(i,j)邻域像素的灰度值是可以读取的,可以根据实际像素值估算出A和B的值,从而求得边缘参数a,b,c。
图1 理想边缘线示意
对于像素(i,j),基于最初的假设,其像素值表达式为
(1)
式中:Pi,j为像素(i,j)在边缘线下方的面积。
当x=0处的曲线斜率在0~1之间时,为了准确获得边缘的亚像素位置、边缘的方向、曲率以及边缘两侧灰度值的变化,用以像素(i,j)为中心的5×3邻域来计算各个参数的值。设SL,SM,SR为所选区域左列,中间列和右列像素值的总和,在一幅真实的图像中,像素(i,j)邻域像素的灰度值是可以读取的,可以根据实际像素值估算出A和B的值以及SL,SM,SR的值,从而求得边缘参数a,b,c。
由式(1)的原理可得
(2)
式中:L,M,R表示左列、中间列和右列边缘下的面积。
(3)
联立方程可解得边缘曲线参数
(4)
用区域对角3个像素值来估计A和B的值,因为与中心像素的距离不同,所以取的3个像素值对中间像素的影响程度不同。需要根据实际图像的品质来设置合适的标准差,从而建立高斯函数,计算各像素所占的权重,设3个像素的权重分别为α,β,γ,则
A=βFi,j+2+γFi+1,j+2+αFi+1,j+1
(5)
B=βFi,j-2+γFi-1,j-2+αFi-1,j-1
(6)
若直接采用曲线的截距计算亚像素坐标的位置,则在如图2所示的情况下,S1位置已不在像素内,所以用S1作为亚像素位置已不合理。边缘曲线方程已知,原点和S2的连线与曲线在S2位置的切线垂直,可以根据此关系求得S2的坐标。
图2 亚像素位置计算原理示意
当边缘斜率在-1~0之间时,分别用左下角和右上角的3个像素值估计A,B的值,所以边缘斜率在-1~1范围时,A,B的通用表达式为
A=βFi,j+2+γFi+m,j+2+αFi+m,j+1
(7)
B=βFi,j-2+γFi-m,j-2+αFi-m,j-1
(8)
式中:当斜率不小于0时,m取1;当斜率小于0时,m取-1。
1.2 Otsu自适应梯度阈值检测
Otsu法也称为大津阈值法或最大类间方差法,该方法利用图像的灰度值,以目标和背景的类间方差为测度准则,取最佳阈值时,两部分之间的差别应该是最大的。前景和背景之间的类间方差如果越大,就说明构成图像的两部分之间的差别越大。当部分目标被错分为背景或部分背景被错分为目标时,都会导致两部分差别变小;当所取阈值的分割使类间方差最大时,就意味着错分概率最小,则此时的阈值为最佳阈值。
记T为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0,背景点数占图像比例为w1,平均灰度为u1,图像的总平均灰度为u,g为前景和背景图像的方差,则有
u=w0×u0+w1×u1
(9)
g=w0×(u0-u)2+w1×(u1-u)2
(10)
联立上面两式可得
g=w0×w1×(u0-u1)2
(11)
当方差g最大时,可以认为前景和背景差异最大,此时的灰度T是最佳阈值。Otsu算法不需要其他先验知识,且计算简单快速,至今仍是最常用的自动阈值处理方法。
在亚像素边缘检测前,需要用sobel梯度算子检测属于边缘的点。文献[8]中的算法人为设定并反复调整梯度阈值,笔者将Ostu算法与sobel算法相结合得到梯度值,估计最佳全局梯度阈值。
1.3 噪声引入
当对带噪声的图像进行边缘提取时,文献[8]的方法是用模板和图像卷积进行滤波处理。滤波对边缘估计的影响如图3所示。假设K为一个简单的高斯核,G为原图F和K卷积后的图像,将会用G的信息来计算F中边缘的信息。这时中间灰度的区域会变大,则用图3(c)中的区域计算边缘特征。
图3 滤波对边缘估计的影响
1.4 改进的算法
当图像的噪声太大时,1.3节的算法将不能准确地检测出亚像素边缘。为此提出图像重构方案,该方案通过迭代,逐渐修改图像去除噪声,并且用保存在构建的子图像中的值计算图像的边缘特征。算法如下:首先,使用3×3模板平滑原始图像G0;其次,将1.1节的边缘检测器应用于该图像G0。在检测到边缘的那些像素点邻域后,使用获得的边缘特征值生成一个恢复的子图像。然后,将所有子图像组合起来生成一个完整的合成图像F1。在F1图像中计算的边缘特征值对噪声的敏感度低于在初始图像F0中检测到的值对噪声的敏感度,因此边缘特征更准确。
为了结合所有生成的子图像的信息,创建了两个新的完整图像,边缘图像为C,其每个像素值表示包含该像素的子图像的数目;强度图像为I,每个像素值表示每个像素的累积强度。首先,将两个图像设置为0,并将图像F0平滑以获得图像G0;其次,对于在G0中检测到的每一个边缘像素,创建一个子图像,并且更新C和I中的值;最后,图像C中的每个像素(i,j)都是按照如下方式处理的。
(1) 值为0的像素表示该像素远离任何边界的像素,在本例中,F1(i,j)=G0(i,j)。
当噪声很大时,图像F1虽然比F0好,但噪声可能还是太大。在这种情况下,可以将恢复算法的一个新的迭代应用于F1来获得F2。在n次迭代后,获得了一个图像Fn,在此基础上对边缘特征的估计更简单。
原算法是对图像平滑时采用均值滤波,笔者采用高斯加权滤波和迭代算法相结合的方法进行改进。
2 试验结果及分析
试验采用如图4所示测量系统,使用大恒水星MER-500-14GM-P型工业相机拍摄,相机分辨率为2 594像素×1 944像素。由于待测工件为长轴类,采用型号为LTS-2PFT15756的条形平行背光源,对于齿轮轴轮廓,采用平行光可以减少虚边现象,提高成像品质,系统用激光位移传感器获得摄像机到工件的距离。拍摄的齿轮传动轴灰度图如图5所示,待测几何量为齿轮轴的4段不同的轴径。
图4 硬件测量系统外观
图5 系统拍摄的齿轮传动轴灰度图
图6 改进算法和像素邻域亚像素边缘检测算法的检测效果
2.1 亚像素边缘检测
图6(a)和6(c)是用基于像素邻域的噪声边缘检测算法得到的亚像素边缘,图6(b)和6(d)是用文中改进算法得到的亚像素边缘,截取两个区域进行对比,可见图6(b)和6(d)的边缘更平滑和连贯,而图6(a)和6(c)的边缘不连续。初步可知,文中改进算法能得到更好的边缘检测效果。
2.2 轴径的测量
在测量径向尺寸时,先用前文提出的亚像素边缘检测算法得到齿轮轴的亚像素边缘。文中的检测目标是阶梯轴,为了简化算法,在测每部分的轴径时,选择该轴径所在的ROI(感兴趣区域)范围,则在截取的区域只存在测量轴径时要用的两条边,并且这两条边缘关于齿轮轴的中轴线对称。
ROI区域设定之后,测量算法如下所述。
(1) 根据选择的ROI区域,以其中轴线为界,将ROI区域分为上下两子ROI,待测边缘分别存在于两个子ROI中。
(2) 用最小二乘法原理,分别将两子ROI中的边缘点进行直线拟合。
(3) 求两直线的距离。求两条平行线A1x+B1y+C1=0(L1)和Ax+By+C=0(L2)间距离的公式,如式(12)所示。
(12)
式中:(x,y)为直线L2上的一点。
但是,在实际测量试验中,拟合出来的直线总存在一定的夹角,很难得到理想状态的平行线,因此用ROI区域与一条拟合直线的两端点求出两端点的中心坐标,再将该中心坐标代入公式,得到两直线的距离。改进算法和像素邻域边缘检测算法轴径测量结果分别如表1,2所示。
表1 改进算法齿轮轴径测量结果
表2 像素邻域边缘检测算法齿轮轴径测量结果
2.3 试验结果分析
对齿轮轴在同一位置拍摄3张图片,对每个轴径得到的3次测量结果求平均,两种方法测量齿轮轴径的相对误差如图7所示,图7中带圆圈的折线表示原始亚像素边缘检测算法的相对误差,其值在0.2%~0.5%之间;带*的折线表示改进算法测量结果的相对误差,可以看出其测量结果比较稳定,相对误差控制在0.2%以内。试验验证了改进算法具有更高的定位精度。
图7 两种方法测量齿轮轴径的相对误差
3 结语
对于TRUJILLO-PINO等提出的基于邻近区域像素灰度构成模型的边缘检测算法,提出了不同于TRUJILLO-PINO算法的梯度阈值判断方法。用Otsu算法自动求取最佳阈值,避免了人工设定和反复调节带来的误差,提高了工作效率。对于文中获得的齿轮轴图像,应用改进的迭代重构算法,使获得的边缘更加平滑和连贯,提高了定位精度。