APP下载

基于HALCON的机械零件尺寸快速精密测量

2020-05-14高茂源王好臣丛志文王泽政李家鹏

机电工程技术 2020年3期
关键词:算子标定灰度

高茂源,王好臣,丛志文,王泽政,李家鹏

(山东理工大学机械工程学院,山东淄博 255000)

0 引言

目前企业中生产的机械零件的测量手段主要依靠轮廓仪,激光测量仪或三坐标测量机等测量工具,这些方法操作复杂,精度低,且仪器设备成本高。机器视觉技术发展迅速,被广泛应用于物体识别、缺陷检测、测量等方面,并发挥着重要的作用。将机器视觉技术应用于尺寸测量中已有很多案例,国内外学者也对此进行实验研究,并取得了一定的成果。陈舒萍等[1]利用机器视觉实现金属成形加工温度的测量,可以实时测量工件区域温度变化和工件轮廓尺寸的变化;万子平[2]将机器视觉应用于零件轮廓测量。Khalili等[3]利用视觉技术测量固体材料的裂缝尺寸。

利用强大的工业级图像处理软件HALCON结合机器视觉技术,可大大提高零件测量的效率,提高精确性与稳定性,实现零件尺寸的快速精密测量。HALCON软件包含1千多个算子,拥有广泛的机器视觉集成开发环境,可以快速实现图像处理的需求。本文针对机械零件的尺寸测量问题,提出一种基于HALCON的机械零件尺寸快速精密测量方法。通过相机标定获得其内外参数,利用HALCON对零件图像进行处理。零件边界采用HALCON中的直线拟合算子获得边界点的起止点坐标,而内部孔径采用导入的最小二乘算子拟合圆参数,获得内孔的直径尺寸,实现快速高效的图像处理与测量。

1 系统组成

测量系统由硬件和软件两部分组成,硬件部分由工控机和实验平台组成;软件部分采用HALCON进行图像处理并输出处理结果。

1.1 硬件部分

测量系统的硬件部分选用500万像素的工业CCD相机、25 mm焦距的工业镜头、图像采集卡、LED背光光源和工控机。测量流程为:相机采集零件图像传给工控机,工控机对所采集图像进行处理,返回并显示测量结果。测量系统的结构如图1所示。

图1 测量系统结构图

1.2 软件部分

图像处理软件使用德国MVte公司开发的HALCON。它由1 000多个独立函数以及底层的数据管理核心构成,整个函数库可以用多种编程语言访问,HALCON中包含各类滤波,形态学分析,校正等基本的几何以及影像计算功能,应用范围涵盖医学、遥感探测,到工业上的各类自动化检测[4]。HALCON还可以导入自定义封装算子,其程序也可以和C、C++或C#等多种语言联合编程。HALCON操作界面如图2所示。

图2 HALCON操作界面

2 尺寸测量

机械零件尺寸测量的基本流程为:首先利用HALCON软件对相机进行标定,获得相机内外参。通过相机采集图像,对图像进行预处理,提取零件区域并进行矫正;通过边缘检测得到零件图像的边缘,其边界利用HALCON的拟合算子进行直线拟合,内孔利用封装好的最小二乘算子进行拟合;最后根据相机标定结果,利用所得关键点坐标和拟合圆的半径的像素距离计算出零件的实际尺寸。基于HALCON软件进行图像处理的流程如图3所示。

图3 图像处理流程图

2.1 基于HALCON的相机标定

为保证零件测量的精度,并获得图像点和物体点之间的关系就要进行相机的标定。相机标定的实质就是获得世界坐标系与图像像素坐标系之间的转换关系。其中世界坐标系(XW,YW,Z W)与像素坐标系(u,v)的转换公式为:

式中:M1为相机内部参数,包括焦距f,单个像元的高d x、宽d y,横坐标值u0、纵坐标值v0这5个变量;M2为相机外部参数,包括平移矩阵T和旋转矩阵R。

通过相机标定确定其内外参数,实现像素坐标系到世界坐标系的转换。

相机标定板采用圆心点阵标定板,用相机拍摄标定板图像,每拍一张就要改变标定板的位置,角度和方向,在拍摄时要求标定板要涵盖图像视场大部分区域,第一幅标定图像中的标定板要直接放在测量平面上拍摄[5]。所拍摄的标定板图像如图4所示。

通过调用caltab_points()函数从标定板的描述文件中得到标定点在世界坐标系中的坐标值。从CCD传感器和镜头的说明书中得到相机初始内参[6]。标定点的像素坐标采用算子find_caltab()和find_marks_and_pose()得到。其提取步骤为:首先对标定图像阈值分割,分离内部区域与背景,然后利用Canny滤波器提取标定点边缘,利用线性最小化代数误差拟合椭圆获得每个标定点的像素坐标。最后利用算子camera_calibration()对相机进行标定,得到标定后的相机内外参数以及投影误差。

图4 标定图像

通过标定获得相机内部参数如表1所示,其中k为畸变系数,外部参数如表2所示。

表1 工业相机内部参数

表2 工业相机外部参数

为确保标定的准确与稳定性,在标定完成后不能更改相机的位置,否则将重新标定。通过标定后获得相机的内外参数,就可将零件的图像尺寸转换为实际尺寸。

2.2 图像去噪

在HALCON软件中调用open_framegrabber( ) 与grab_image_start()算子采集零件图像。调用rgb_to_gray()算子对图像进行灰度化处理。在图像获取和传输过程中会受到噪声污染,不利于图像处理与分析[7],使用中值滤波算子median_image()和高斯滤波算子gauss_image()消除零件图像的椒盐噪声和高斯噪声。处理后的图像如图5所示。

2.3 零件区域特征提取

为了获得零件的特征,将零件区域与背景区域分开,需要对零件图像进行图像分割。图像分割采用阈值分割法,阈值分割根据图像像素灰度幅度进行分割,划分为不同等级,通过设定灰度阈值提取零件区域。如下式所示:

图5 去除噪声后的工件图像

设g(x)为阈值运算后的二值图像;T为根据图像的灰度直方图确定的阈值;1为目标图像的值;0为背景图像的值。按照式(2)进行二值化,就可以将零件区域分割出来。

在HALCON中利用灰度直方图工具确定合适的阈值。通过对滤波后的零件图像进行二值化,将零件区域分割出来。采用算法为:threshold(G-rayImage, Regions, 0, 114)。由上可知,零件图像的灰度值介于0~114之间,背景图像的灰度值大于114。然后使用算子connection (Regions, Connected-Regions)分为不同的连通域,利用面积特征提取零件区域。处理后的图像如图6所示。

2.4 图像区域转正

为了快速高效的进行零件测量工作,确保测量精度,需要将采集到的零件图像仿射变换至水平位置。仿射变化的表达式为:

图6 提取的零件区域

式中:A为仿射变换矩阵,由线性部分和平移部分组成。

仿射变化主要包括平移变换和旋转变换。平移变换使得图像所有像素点按所要求的偏移量水平、垂直移动;而旋转变换则使得图像绕着某一点旋转一定角度[8]。平移变换与旋转变换的表达式分别为:

式中:x0,y0分别为坐标平移量;θ为旋转角度。

在HALCON中进行仿射变换采用的算法如下:

orientation_region (ConnectedRegions, Phi)

vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)

affine_trans_image (GrayImage, ImagTrans, Hom-Mat2D,′cons-tant′,′false′)

首先调用orientation_region算子计算图像偏转角度;然后利用vector_angle_to_rigid算子得到图像变换到水平位置的二维矩阵;最后利用affine_trans_image算子将二维矩阵作用到零件图像将其转换至水平位置。区域转正后的图像如图7所示。

2.5 图像边缘提取

为确保零件测量结果的精确性,需要得到零件图像的亚像素数据,即零件图像边缘。在HALCON中亚像素边缘用XLD(Extended Line Descriptions)表示。边缘是图像的非常重要的特征,图像周围像素灰度值发生变化的像素点为图像边缘上的点,即灰度值导数最大的区域。边缘检测就是通过计算灰度值变化的导数,来提取图像中灰度值空间方向梯度大的边、线特征的过程[9]。用梯度可以很好地反映图像的边缘位置,梯度对应一阶导数,对于一个连续图像函数f(x,y)梯度表示为:

图7 区域转正

通过边缘检测将零件图像边缘提取出来。边缘检测采用Canny算子,基本思想是首先对图像选择一定的高斯滤波器进行平滑滤波,然后采用非极值抑制技术处理,进而得到图像边缘[10]。其步骤如下:

第一,用环形二维的高斯滤波器G(x,y)平滑图像f(x,y),得到平滑图像fs(x,y)。

第二,计算平滑图像的每个像元点的梯度幅值M(x,y)和方向α(x,y),利用梯度幅值和方向计算出每点的边缘强度和方向。

第三,对梯度幅值进行非极大值抑制,为确定边缘保留局部梯度最大的点,而抑制非极大值,即将非局部最大值点设为0,细化边缘。

第四,设置低阈值T1和高阈值T2,通过图像的边缘像素与设置的高低阈值进行对比来检测边缘和连接边缘。

在HALCON中利用edges_sub_pix(GrayImage,Edges,′Canny′, 0.6, 20,40)算子提取零件图像的亚像素边缘。所得到的图像边缘如图8所示。

获得零件边缘轮廓后,就可以对边界和内孔的孔径进行拟合。

2.5.1 直线拟合

调用HALCON中select_shape_xld()算子,利用XLD的特征直方图,利用宽度这一特征范围将孔径边缘剔除,只保留零件外轮廓。若提取零件其中一条边需要将零件的XLD轮廓分割为直线或者圆弧线段。调用segment_contours_xld()算子进行分割,分割后的轮廓由全局轮廓属性cont_a-pprox确定。轮廓对照如表3所示。

图8 零件亚像素边缘

表3 轮廓对照表

将零件轮廓分割完成之后调用get_contour_global_at-trib_xld(ObjectSelected,'cont_approx',Attrib)算子得到每段轮廓的属性。若Attrib=-1则属于直线段,然后就可以利用直线拟合算子fit_line_contour_xld()拟合边界直线,并获取起止点的坐标值,通过获得的坐标值可以得到零件在图像中的尺寸,通过转换关系可以得到零件的实际尺寸。边界拟合效果如图9所示。

图9 直线拟合

图10 圆拟合

2.5.2 圆拟合

由于拍摄不稳定和现场环境等因素,导致孔径处图像在边缘提取时有时无法获得近乎完整的圆形轮廓,所以在调用select_shape_xld()算子提取圆形轮廓时,只能提取部分圆弧,不利于圆的拟合,这时就需要对提取的圆弧进行共圆联合,调用union_cocircular_contours_xld()算子对圆弧进行共圆联合。

对孔径处圆形拟合时,采用最小二乘法进行圆参数拟合,并将程序封装为算子导入至HALCON中,进行拟合时直接调用即可。最小二乘法常用于曲线拟合,在拟合圆形时即使出现边缘缺失,也不会影响圆心定位和检测。

圆方程可表示为:

用最小二乘法拟合圆时要求所优化目标函数的误差平方和最小,目标函数为:

式中:(xi,yi) ,i=1,2,3为圆弧上特征点在图像坐标系中的坐标;n为参与拟合的特征点数。

为获得一个最小化问题的直接解,同时避免了平方根,将目标函数改写为:

由最小二乘法原理可知,需要求解A,B,C使E取极小值。故A,B,C应满足:

求解方程(17)~(19)得到圆心坐标(x0,y0)和半径r的拟合值为:

通过调用自定义圆拟合算子对零件孔径边缘进行拟合得到圆心坐标(x0,y0)和半径r。圆拟合的图像如图10所示。

3 实验结果及分析

通过直线拟合得到零件边界的起止点坐标,在HALCON中调用image_points_to_world_plane算子将直线起止点的图像坐标转换为世界坐标,调用求两点之间距离的算子distance_pp()获得零件的实际边长。设x代表实际尺寸,p代表图像中1个像素距离,通过得到的HALCON标定板圆形标志的像素坐标和世界坐标,结合相机标定的结果可得每个像素对应的实际尺寸为0.000 11 mm,从而求出孔径r的实际尺寸。测量结果如图11所示。

利用高精度测量设备测量零件的实际尺寸,并与视觉测量结果进行对比并计算误差如表4所示。

图11 测量结果

表4 实际值与测量值对比

从表中可以看出,利用视觉测量的零件尺寸和实际尺寸相差很小,并且每个尺寸的误差都在±0.02 mm之内,满足误差允许范围,准确性和实时性满足工业生产的检测需求。

4 结束语

本文利用机器视觉技术对机械零件进行尺寸测量,利用HALCON软件对零件图像进行处理,采用拟合的方法获得零件的尺寸,实验表明测量结果满足精度要求。该方案可实现快速,准确、实时的非接触式尺寸测量,可应用于实际生产中,提高零件的生产效率,对一些简单机械零件的尺寸测量具有一定的指导意义。

猜你喜欢

算子标定灰度
与由分数阶Laplace算子生成的热半群相关的微分变换算子的有界性
一类截断Hankel算子的复对称性
采用改进导重法的拓扑结构灰度单元过滤技术
拟微分算子在Hp(ω)上的有界性
Heisenberg群上与Schrödinger算子相关的Riesz变换在Hardy空间上的有界性
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
使用朗仁H6 Pro标定北汽绅宝转向角传感器
CT系统参数标定及成像—2
CT系统参数标定及成像—2
基于匀速率26位置法的iIMU-FSAS光纤陀螺仪标定