李 执,闫 坤,傅 琪,刘 威
(桂林电子科技大学信息与通信学院,广西桂林 541004)
在现代化生产中,常需要对工件进行尺寸测量,判断产品是否符合生产标准。而对于多孔金属工件,若采用人工测量方法,需要分别对圆孔、直线测量,效率和精度低。传统生产主要采用人工测量方法,测量范围有限,精度也受主观因素影响,无法满足大批量、高强度、高精度的测量要求。随着计算机技术和图像处理技术的发展,基于机器视觉的识别与检测方法应用越来越广泛。它可以实现对测量目标的非接触、实时的自动检测,具有效率高、精度高、客观可重复、自动化等特点。
当前,机器视觉技术也广泛运用于尺寸测量检测。马平等通过Canny算法与分段序贯最小二乘法拟合求交点的交点检测方法,实现了对大尺寸工件的测量[1]。邢雪亮等针对航空铆钉尺寸检测进行了详细研究,设计了基于阈值分割和分水岭算法结合的尺寸测量算法,但检测准确度较低[2]。刘斌等通过分层匹配算法实现目标定位,利用统计模板信息来精确定位边缘并建立局部测量坐标系实现了对丝网印刷样板尺寸的测量,但计算复杂度较高[3]。任永强等在研究柴油机缸套尺寸测量问题时,提出了基于RANSAC(随机抽样一致性)拟合缸套亚像素轮廓的内外径尺寸检测方法[4]。李民等针对黑晶面板测量问题,提出了基于霍夫直线检测及最小二乘法曲线拟合的测量方法,但精度较低[5]。边缘点的检测和拟合是提高尺寸测量精度的根本,因此,本文提出了基于测量卡尺工具的边缘点检测方法对边缘进行精确定位,再通过基于Tukey权重函数的拟合方法,实现了对工件快速、非接触、准确的测量。
本文以多孔金属工件为研究目标,测量目标分别为圆半径、直线长度、圆弧两点长度。多孔金属工件如图1所示。算法流程分为4个步骤,如图2所示。
图2 系统流程图
(1)图像获取。分别采集同一光源及背景、工件不同摆放角度的图像。
(2)图像预处理。首先对图像灰度化处理,然后进行图像平滑去除噪声等干扰,通过图像增强来突出工件的细节,最后采用阈值分割方法将目标与背景分离。
(3)图像分析。具体步骤为:通过特征提取初步定位工件整体轮廓,然后进行轮廓处理,将整个工件的轮廓分割成圆、直线、圆弧3部分,再结合卡尺工具法精确检测定位工件不同区域的边缘点,然后对边缘点进行拟合得到圆、圆弧、直线轮廓。
(4)尺寸测量。通过前面的图像处理后,分别对工件中圆孔直径、直线长度及圆弧进行测量并输出结果。
图像预处理是图像识别与分析的基础[6-7],通过去除原图像的无用信息(如背景、噪声干扰等),从而加快检测速度。采集的图像包含色彩信息,为了去除颜色干扰,将彩色图像经过灰度化后转化成灰度图。原始工件图像会受到噪声污染,不利于后续的工件定位,因此需要进行滤波平滑处理,经实验验证,选择掩膜模板大小为3×3的均值滤波,可以达到较好的去除噪声效果。为了增加前景与背景的差异,下一步是对图像进行增强处理[8],增强细节信息,突出轮廓边缘。 最后通过阈值分割算法将待测目标与背景分割出来。预处理结果如图3所示。
(a)灰度化
(b)图像增强处理
(c)阈值分割后图像
通过阈值分割和特征提取后,可以初步获得工件的整体轮廓,同时存在干扰轮廓,不利于后续的测量。因此,首先对轮廓进行平滑、分割、合并、筛选处理,确定测量目标。为了提高分割准确性,这里采用基于Ramer算法的图像轮廓分割,其主要原理为利用近似思想,用多边形去迭代逼近轮廓,将轮廓切分成连续的几何图形,近似原理如图4所示。
图4 Ramer算法近似原理
具体实现步骤如下:
(1)设定固定阈值参数D0;
(2)循环遍历轮廓上的点,其总数记为M;
(3)选定一个参考点作为起始点;
(4)连接起始点与第M/2点作为逼近线段l0;
(5)计算轮廓线上的点与l0的距离,其最大距离记为D;
(6)若D>D0,则以最大距离点与线段l0起点和终点连接组成新的两条逼近线段l1和l2替代l0。
(7)继续迭代计算与轮廓点的距离,直至所有线段距离都满足小于约束条件D0。
(8)若某一段轮廓上的点基本满足直线方程y=kx+b,则被分割成直线;
(9)若不满足直线分割,则依次比较轮廓内所有相邻的逼近线段,并用圆弧去近似;
(10)若圆弧近似的最大误差小于逼近线段的平均误差,则用圆弧去替代相邻的逼近线段,轮廓被分割成圆弧;
(11)若圆弧为闭合多边形,则轮廓被分割为圆。
为了提高分割的准确性及效率,在Ramer算法原理基础上,设定2个不同的阈值参数分2步逼近分割轮廓[9]。首先,以一个较大的固定阈值参数D1进行第一次轮廓逼近。然后再用一个较小的固定阈值参数D2进行第二次轮廓逼近。其中,D1、D2需满足条件:D2 图5 轮廓分割结果图 轮廓分割完毕后,为了精确定位分割后轮廓,引入全局轮廓分割参数S对轮廓进行分类[10],S为Ramer算法分割返回值,根据S值的大小把轮廓分成圆(S=1)、圆弧(S=-1)、直线(S=0)。轮廓分割处理具体流程如图6所示。 图6 轮廓分割处理流程图 轮廓分割初步定位了测量目标 ,全局轮廓分割参数S对轮廓进行了分类。为了提高测量精度及边缘点定位的准确性,本文采用基于卡尺工具的边缘点检测算法[11],可以快速得到边缘信息,这里卡尺工具主要用于直线和圆的检测。其具体步骤如下: (1)获取待测量目标的基本信息。圆:直径R与中心坐标O(x,y);直线:2个端点坐标la(x1,y1)、 lb(x2,y2)。 (2)在直线或圆轮廓产生等距、等大的测量矩形来依次检测定位边缘点的位置。 (3)确定每个测量矩形所检测到的最佳边缘点。先通过高斯滤波器对边缘进行平滑,如式(1)所示: (1) (4)再计算测量矩形内像素点的梯度幅度值,由以下公式得到: (2) (3) 其中: (4) 式中:(u,v)为像素点位置;A(u,v)为边缘点的梯度幅度值;θ(u,v)为边缘点方向;f(u,v)为原像素点灰度值。 (5)最后根据非极大值抑制法所确定的像素点即为最佳边缘点[12]。 卡尺工具检测边缘点的优势在于:通过产生大小、距离都一致的测量矩形来检测垂直于矩形的梯度幅值最大的边缘点,用设定好的测量矩形数目依次得到最优边缘点,最后拟合所有检测到的边缘点即可得到更加精确的边缘轮廓,减少了遍历的时间,提高了检测效率。边缘点的检测由卡尺工具所使用的测量矩形大小所确定,测量精度由测量矩形数量所决定,数量越多检测到的边缘点越多,精度越高。卡尺工具边缘点检测结果如图7所示。 (a)直线边缘点检测 (b)圆边缘点检测 卡尺工具精确检测到了边缘点,要获得直线和圆轮廓,还需要对边缘点进行拟合。常用的最小二乘法[13-14],其原理是使得样本点与近似拟合曲线函数的偏差平方和最小。对于样本数据中干扰较小时,最小二乘法可以达到较好的拟合效果。若数据样本中存在较多、较大离群值时,该方法拟合出来的结果可能会出现较大的误差。因此,本文提出了基于Tukey算法的拟合方法[15],减小或消除异常值(离群值)的影响,从而提高拟合精度与稳定性。其原理是对于样本数据点(文中的样本点为边缘点)设定不同的权重ωi。以直线为例,对于距离直线较近的点,权重ωi设为1,距离较大的点,权重设为ωi<<1,通过不断的迭代计算所有样本点的权重值,从而消除离群值。Tukey权重函数定义如下: (5) 式中:γ为点到直线的距离;η为削波因数。 由式(5)可知,距离较大的离群值被消除了,即当γ>η时。距离小于η的权重值在(0,1)区间随距离的大小变化。权重函数中削波因数η表示距离,其值的确定若直接根据经验值设定,可能会产生较大的偏差,且稳定性不强。因此,需要根据不同的情况拟合需求来设定,一种常用的削波因数η值的确定方式是根据一维高斯分布标准方差来自适应设定。假设所有待拟合的数据点为一个样本集,每个数据点到拟合直线的距离是随机分布的,标准方差是衡量数据偏离中心的一个指标,根据标准方差即可确定较大的离群值,为了得到样本集中的离群值,不能直接使用标准方差来确定削波因数。为了增强鲁棒性,根据下面推导求出鲁棒的标准方差: 假设样本集中求得的距离满足高斯分布: (6) 标准方差为 (7) 式中:μδ为距离的期望值;削波因数一般为γδ倍数,一般取η=2γδ。 基于Tukey权重函数的拟合可以消除离群值的影响,得到更精确的拟合结果。其具体实现步骤是:首次迭代设定权重ωi=1,再根据最小二乘法拟合得到标准直线,并计算所有边缘点到直线的距离γi,若求出的距离较小,则权重设为1,否则设为0,通过不断的迭代得到所有不同距离点的权重值,从而求出削波因数,最后得到最终的拟合结果。卡尺工具得到了精确边缘点,再经过引入权重函数的Tukey算法的拟合,可以得到较理想稳定的边缘轮廓。直线和圆的拟合结果如图8所示。 (a)直线拟合结果 (b)圆拟合结果 通过上述流程将采集的图像作为输入,便可得到相应的测量结果。但得到测量尺寸长度的单位是像素,为了得到其真实尺寸,不能直接使用测量得到的像素尺寸,通过标定的方法,将像素坐标与常用的坐标进行转换[16],以此得到每个像素对应的物理尺寸,最后通过换算计算得到实际长度。具体方法是:假定已知物体真实物理尺寸L(mm),其在同等拍摄条件下(相机型号、分辨率,拍摄距离都一致)测得的总像素为P(pixel),则可以得到转换系数K: (8) 式中K为每个像素点的真实物理尺寸,mm/pixel。 通过转换系数即可求出测量目标对应的真实物理尺寸。最后通过标定得到的转化系数K为0.25 mm/pixel。 对于多孔金属汞工件测量目标主要有圆半径、直线长度以及圆弧,这里圆弧的测量主要为弧线两点之间的距离。其测量方法为:首先求出圆弧的最小旋转外接矩形,再根据旋转外接矩形的角度、中心点坐标来计算得到旋转矩形的长半轴,即为圆弧两点之间的距离,如图9所示。 图9 圆弧两点测量方式 在进行实验验证前,首先用相应标记将测量目标进行标号,其中Ai表示圆弧,Ci表示圆,Li表示直线,根据本文设计的算法得到测量结果,测量过程主要步骤如下: (1)通过相机采集金属工件图像。 (2)图像经过预处理、边缘点检测、拟合等算法处理得到各测量目标的像素尺寸。 (3)通过转换系数K将像素尺寸转换成实际物理尺寸。 测量结果如图10所示。 图10 测量结果图 整个金属工件中的圆形、直线、圆弧的测量实验数据如表1所示。 表1 金属工件测量结果 由表1实验数据可知,发现直线L1的测量结果和实际尺寸相差较大,绝对误差为0.205 mm,根据对图像的分析,发现误差来源于:在对轮廓L1进行卡尺工具的边缘点检测时,用直线拟合的方法代替了原曲线轮廓,与实际有偏差。除此之外,本算法测量精度整体比较高,绝对误差控制在0.01 mm之内,如图11所示,误差主要来源于硬件机械平台误差及算法误差。其中硬件误差主要来源于相机,若拍摄物体非处在镜头中间及镜头的景深范围内,远离镜头部分可能会出现成像不清晰、边缘模糊现象,从而出现定位不准确造成的误差。同时镜头本身会有畸变,若不进行畸变校正,可能也会造成一定的误差。算法误差主要由2方面造成:第一是在进行边缘点拟合时,得到的结果与实际物体轮廓存在一定偏差;第二是在进行系统标定时,可以选用精度更高的标定板,进行标定时,标定板摆放于镜头各位置,求出更精确的转换系数K。 图11 测量绝对误差图 由测量误差折线图可以发现,测量存在一定的误差,最大误差的绝对值为0.205 mm,小于标定的一个像素0.25 mm的尺寸,满足亚像素精度要求,且具有较高的稳定性。 工件尺寸的测量是工业上常用的自动化生产技术,为了提高测量精度及测量的稳定性与鲁棒性,本文提出了基于卡尺工具的边缘点检测,结合Tukey权重函数的曲线拟合方法的尺寸测量方法。通过Ramer算法的轮廓分割将测量目标整体轮廓自动分割成圆、圆弧和直线,全局轮廓分割参数S对轮廓进行分类,解决了轮廓定位问题,最后结合卡尺工具完成精确测量。实验证明,本文方法的测量误差在1个像素尺寸以内,误差范围在合理范围内,精度可以满足测量要求,具有较强的稳定性与适应性。后续进一步研究验证在复杂环境下算法的稳定性及测量精度,使算法更具自适应性。2.3 基于卡尺工具的边缘点检测
2.4 基于Tukey算法的拟合
3 实验分析
4 结束语