刘志毅,杨桂华,唐卫卫
(桂林理工大学机械与控制工程学院,广西桂林 541004)
工件广泛应用于工业机器人、汽车和数控机床等产品的零部件连接、固定和保护中,其加工精度包括尺寸精度、形状精度和位置精度。对于机械加工业来说,不断提高零件的精度,不但有助于延长零件的使用寿命,更为后续使用提供安全保障。当前大多数工厂利用千分尺、X射线和三坐标测量机等对工件进行尺寸精度测量。由于人的视力和测量方法不同,千分尺测量精度会受到影响;而X射线和三坐标测量机的测量误差很小,但价格高昂。在“中国制造2025”发展战略下,研发一套测量精度高、成本低的识别系统具有一定的现实意义。
本文作者采用德国MVtec公司研发的Halcon机器视觉算法库来完成工件测量中的图像处理。Halcon代码简练,运行速度快,大大降低了视觉项目开发周期和难度,用户可以灵活地开发机器视觉系统,在缺陷检测、目标识别、测量等领域都有着很大的用武之地。潘乐昊等为确定微波炉食材的加热时间,提出了基于Sobel边缘检测算法的微波炉内食材体积测量方法,把体积作为食材加热时间的一个重要参考值。刘杰、李智超利用机器视觉技术,基于Canny算法和辅助直线测量物体定位和轮廓尺寸,以及孔径尺寸,取得一定成效。然而当检测目标形状和纹理特征较复杂情况下,仅仅采用Sobel算法和Canny算法进行边缘检测,效果受到很大影响,并且最小二乘法拟合边缘时受噪声干扰较大,测量精度也受到影响。相比于文献[3-5],本文作者采用8个方向模板的改进多项式插值算法提取工件的亚像素轮廓,并采用Hough变换完成工件的二维尺寸测量,效果显著。
系统硬件结构框图如图1所示,硬件设备如图2所示。采用Eye-to-Hand结构,将相机固定在最佳角度位置,系统包括传送模块、视觉识别模块、信号处理模块和运动控制模块。
图1 系统硬件结构框图
图2 系统设备示意
传送模块包括传送带、电机、伺服驱动器和红外传感器。伺服驱动器通过输出开关量控制电机启动和停止,通过输出不同频率来控制电机转速。红外传感器若检测到工件,则触发工业相机拍取工件图像。
视觉识别模块包括相机、镜头、光源和图像采集卡。镜头将工件光像呈现在相机的图像传感器上。光源作为照明设备,根据不同的光源以及打光方式,使得采集到的图像更容易处理。采集卡从相机中获取数据并转化为PC机能处理的信息。
信号处理模块为PC机。PC机中需要安装Microsoft Visual Studio 2015软件开发平台和Halcon机器视觉算法库,PC机对拍取的图像信息进行处理,完成图像去噪和图像增强,并对工件进行测量。此后,求出质量不合格的工件中心世界坐标,并将该坐标通过TCP/IP通信发送给STM32主控制器。
运动控制模块包括STM32主控制器、机械臂、吸盘和气动装置。吸盘安装于机械臂执行器末端,STM32控制器控制机械臂移动到工件中心位置,此时气动装置电磁阀打开,吸盘吸取工件,STM32控制器控制机械臂移动至工件放置位置,气动装置电磁阀关闭,放置工件,从而完成不符合要求工件的分拣。
1.2.1 功能需求分析
选用3种常见类型工件作为目标,分别为四方平垫、长形自攻钉和长形铁片,对其进行直线和圆的亚像素精度测量。此外,系统还能测量其他多种类型工件,能够灵活配置,且适用性强。每个工件的尺寸测量精度需小于0.25 mm。为了能够尽可能多地分类识别出目标工件,视野大小为30 cm×30 cm。为了能够让机械臂安全吸取工件,工作距离设为40 cm。每一个工件测量时间需控制在1 s以内。
1.2.2 相机选型
根据需求对相机进行选型,相机分辨率公式为
(1)
式(1)中:为相机分辨率;为方向相机所能看到的最大长度;为方向相机所能看到的最大长度;为系统精度。因144万×3=432万,为保证系统图像采集像素,故选择市面上已有的500万像素的相机Basler。通过查询Balser相机手册和官方资料,得到相机靶面尺寸5.70 mm×4.28 mm,C接口。
1.2.3 镜头选型
得到相机的像素和靶面尺寸后,对镜头进行选型,放大倍数计算公式为
(2)
式(2)中:表示放大倍数;表示芯片大小;表示视野大小。焦距计算公式为
(3)
式(3)中:表示焦距;表示工作距离。通过公式计算可得,文中选择焦距为8 mm、分辨率大于500万的远心镜头。
1.2.4 光源选型
系统采用背光源,背光源安装于目标物体的下方。当光线照射时,经过工件的遮挡,相机可以获得工件其他区域信息,从而可以得到产品的清晰轮廓,非常适用于产品的轮廓测量。拍摄效果如图3所示。
图3 背光源拍摄效果
如图4所示,二维测量包括提取工件的边缘、提取亚像素轮廓、选择感兴趣轮廓、将感兴趣轮廓分割为直线或圆、将分割后的轮廓进行直线或圆拟合五个部分。
图4 工件测量算法流程
Canny边缘提取算法包括4个步骤,步骤如下:
(1)采用高斯滤波器对图像进行平滑滤波,高斯函数的公式为:
(4)
再将高斯滤波器与原图像进行卷积,公式为
(,)=(,)⊗(,)
(5)
式(5)中:(,)为原图像;(,)为卷积后图像。
(2)一阶微分表示变化率,可以用一阶差分代替一阶微分来表示图像灰度值的变化情况。采用一阶差分卷积模板,模板为
(6)
将模板与高斯平滑后的图像进行卷积,公式为
(7)
最后,计算梯度的幅值,公式为
(8)
方向为
(9)
以左上角为起点,边缘部分保持灰度值不变,求解梯度的过程如图5所示。
图5 计算梯度的过程
(3)求得图像的梯度之后,在生成的梯度矩阵上进行非极大值抑制。即以梯度矩阵中的某一点为中心点(,),将梯度方向近似为4种梯度方向的组合,如图6所示,标号0~3分别对应0°、45°、90°、135°四个方向;当梯度方向在0°与45°之间时,梯度方向近似为0°方向,比较中心点(,)与沿着梯度方向的两个相邻像素的梯度值,若中心点(,)梯度值最大,则保留,否则置0。但是在实际的图像中,像素点是离散的,中心位置(,)的梯度方向两侧的点不一定存在,而且边缘梯度方向不一定沿着0°、45°、90°、135°四个方向,所以必须通过插值法来得到中心位置沿梯度方向两侧的值。
图6 梯度方向
①如果|(,)|>|(,)|,则该中心点的梯度方向更接近于轴。图7中,、、、表示该位置的幅值,以左上角为原点,图7(a)表示(,)与(,)的方向相同,图7(b)表示(,)与(,)的方向不同。
图7 梯度方向接近于y轴
该情况下的插值公式为
(10)
=+(1-)
(11)
=+(1-)
(12)
式中:为权重;、为插值得到的结果。
②同理,当|(,)|<|(,)|时,梯度方向接近于轴,如图8所示。
图8 梯度方向接近于x轴
该情况下的插值公式为
(13)
=+(1-)
(14)
=+(1-)
(15)
最后,若(,)处的梯度幅值分别大于、,则该点处的幅值保留,否则置0。
(4)采用双阈值算法提取边缘和平滑边缘,设定两个阈值和对非极大值抑制后的图像进行处理。高阈值分割得到强边缘图像,含有较少的假边缘,但边缘可能不连续或不够平滑,此时,通过低阈值得到弱边缘图像来连接边缘,当强边缘的8邻域内包含弱边缘点,则将弱边缘点与强边缘点连接,达到平滑边缘的目的,因此,阈值越小,提取的边缘信息越多。
检测到的边缘结果如图9所示,可见:Canny算法通过高斯滤波能够很好地去除噪声,并且通过非极大值抑制和双阈值算法可以很好地去除假边缘,解决了Sobel算法存在较多假边缘的问题。
图9 Canny算法边缘检测结果
亚像素轮廓使得图像的分辨率得到提高,更加精确地测量出工件的尺寸。利用Canny算法得到工件的边缘后,改进的多项式插值算法采用8个方向模板与Canny算法得到的边缘图像做卷积运算,求出亚像素坐标。方向模板如图10所示。
图10 8个方向模板
边缘图像经过卷积运算并求取梯度幅值和方向,设Canny算法得到的像素级边缘点坐标为(,),该边缘点相对应的梯度幅值为,根据二次多项式公式得到亚像素坐标为
(16)
(17)
提取到的亚像素轮廓如图11所示。
图11 亚像素轮廓
得到的亚像素轮廓通常由各种形状(直线、圆弧、椭圆弧和矩形等)组成,为了便于测量,将亚像素轮廓分割为直线和圆弧形状,通过求得直线的长度和圆弧的圆心和半径完成多类型工件的二维测量。算法步骤如下:
步骤1,设定一个最大直线距离。
步骤2,用直线段递进逼近轮廓,得到轮廓上离垂直距离最远的点,并将该距离设为。
步骤3,比较与的大小,若小于,则用直线段近似代替轮廓,该段轮廓处理完毕。
步骤4,若大于,则将轮廓分割为和,重复步骤2、3。
步骤5,当所有的曲线递进逼近结束后,用近似圆去拟合相近的轮廓段,若圆到轮廓段的最大偏差比两个轮廓段相对应的值还要小,则用近似圆取代相对应,经过多次迭代直到没有对象。
将亚像素轮廓分割为直线和圆弧的结果如图12所示。
图12 分割轮廓
由于分割得到的亚像素轮廓不一定都是感兴趣轮廓,可以通过以下特征从输入轮廓中选择感兴趣轮廓。
(1)轮廓长度。设定两个阈值和,选择长度大于小于的所有轮廓,对于其他长度的轮廓都不被返回。
(3)关闭。设定一个阈值,只选择轮廓起点和终点之间的距离小于或等于的轮廓。
(4)打开。设定一个阈值,只选择其起点和终点之间的距离大于的轮廓。
感兴趣轮廓如图13所示。
图13 感兴趣轮廓
由于噪声和光照的影响,获得的感兴趣工件亚像素轮廓点通常是离散的。因此,为了能够对工件进行二维测量(测量出直线的长度和圆形的圆心半径),需要通过拟合来获得连续的轮廓。常用的直线和圆拟合方法为Hough变换检测方法。
Hough变换适用于检测、定位和解析像直线、圆和椭圆这种规则的形状。下面分别介绍直线检测和圆检测。
(1)直线检测
在图像的-坐标系中,经过点(,)直线的表达式为
=+
(18)
式中:为直线的斜率;为截距。假如将看做自变量,看做因变量,则表达式变为
=-+
(19)
这样,便将-坐标空间转化到-坐标空间,如图14所示。假设原图像中一点(,)与点(,)共线,则在-坐标空间中,点(,)相对应的直线与点(,)相对应的直线相较于一点(,),通过判断图像-坐标系上的点相对应-坐标空间中的直线是否相交于一点,若相交于一点,则证明这些点在图像-坐标系上共线。设定一个二维累加数组(,)=0,将-坐标空间的每一个自变量值代入表达式(19)来计算出因变量,每计算出一个值,在相对应的数组(,)中加1,表达式为(,)=(,)+1,所有点计算完毕后,找出最大数组(,),该数组所对应的、便为图像-坐标系中共线离散点最多的直线方程的参数。根据这个特点,给定图像-坐标系中的离散边缘点,通过Hough变换便能够确定连接这些离散边缘点的直线方程。
图14 直角坐标的Hough变换
(2)圆检测
同样,Hough变换也能够对圆进行检测,通过将离散轮廓点从图像空间转化到参数空间来确定圆的参数。在图像-坐标系中,已知圆的表达式为
(-)+(-)=
(20)
式中:、分别表示圆心坐标值;为半径。将图像-坐标系转换到三维立体空间中,(,)和为未知数,表达式为
(-)+(-)=
(21)
这样:便将图像-坐标空间转换为--坐标空间,原图像中的每一个离散点(,)对应--坐标空间的一个圆锥体,如图15所示,在图像-坐标系中同一个圆上的离散点在--坐标空间所对应的圆锥体必定相交于同一点。
图15 参数空间
设定一个三维累加数组(,,)=0,将--坐标空间的每一个自变量、值代入表达式(21)来计算出因变量,每计算出一个值,在相对应的数组(,,)中加1,表达式为(,,)=(,,)+1,所有点计算完毕后,找出最大数组(,,),该数组所对应的、、便为图像-坐标系中共圆离散点最多的圆形方程的参数。根据这个特点,给定图像-坐标系中的离散边缘点,通过Hough变换便能够确定连接这些离散边缘点的圆形方程。Hough变换方法拟合直线和圆的结果如图16所示。
图16 Hough变换方法拟合的直线和圆
多线程并行处理器接收到红外传感器的电平信号,通过TCP/IP通信触发相机进行拍照,将拍取的工件图像进行显示,实现工件的二维尺寸测量;在图像窗口显示尺寸大小,最后求出工件的世界坐标,通过运动控制器完成不符合质量要求的工件吸取。测量系统软件设计结构如图17所示。
图17 测量系统软件设计结构
为了验证系统对多类型工件测量的准确性和稳定性,选取不同规格的四方平垫(0类)、长形自攻钉(1类)和长形铁片(2类)3种类型的工件,通过不断地更换工件和改变各个工件位置及角度来拍取图像,共拍取50张图片作为测试集。
系统对工件采用Hough变换方法来拟合直线和圆得到的测量值在系统中显示如图18所示。各个类型工件的测量值与千分尺测量值进行对比,如表1—3所示。
图18 工件测量系统界面
表1 长形铁片的Hough变换测量值与千分尺测量值的一组数据对比 单位:mm
表2 四方平垫的Hough变换测量值与千分尺测量值的一组数据对比 单位:mm
表3 长形自攻钉的Hough变换测量值与千分尺测量值的一组数据对比 单位:mm
对50个测试集工件测量完毕后,求得的Hough变换测量值与千分尺测量值的平均误差为0.042 mm,测量工件平均耗时32.543 ms,能够满足工业要求。在测量过程中,测量误差是不可避免的,误差主要来源于光学镜头的误差、噪声的干扰、硬件结构的安装误差、算法的误差等。
为了克服传统检测存在的弊端,研究了基于机器视觉的多类型工件测量系统,对系统的相机参数、照明、图像处理和工件尺寸测量进行了重点研究,并利用Halcon与C++联合编程实现了多类型工件二维尺寸测量系统,对这一测量系统进行了实验验证,获到了良好的测量效果,有效地提高了测量的效率与精度。