1. 引言
零件表面网格特征点三维坐标的测量在板金属应变测量与逆向工程中的应用越来越重要,传统的用三维坐标测量机来获得零件表面网格节点三维坐标的测量方法虽然测量精度高,但存在对测量环境要求高、测量效率低等缺陷,不满足现场测量的需求。视觉测量技术具有测量效率高,适应现场测量等显著优点,单目视觉测量方法应用于三维零件的非接触坐标测量,能够在很大程度上减少工作量,同时具有较高准确度的测量结果。视觉测量技术有利于零件表面网格节点的准确提取,而节点的提取是准确测量的前提。
通常基于灰度图像的特征提取算法有Harris角点检测算法 [1] 、SUSAN角点检测算法 [2] 以及SIFT算法 [3] 等。其中使用Harris算法进行特征点检测是一种简单可行的点提取方法。图像中的特征点主要指图像中灰度值变化剧烈的点,该像素点和周围的邻近点有着明显的灰度差异。采用上述理论提取到的特征点如图1所示,一方面由于采集到的图像具有一定的噪声,即使采用图像平滑滤波的操作也不一定能将噪声完全消除,因此采用Harris特征点检测算法受噪声的影响较大,另一方面网格的线条具有一定的宽度,两条曲线相交,交点处由很多的像素点组成,使用Harris算法提取到的是曲线相交处的四个角点,不符合论文主要提取网格节点的目标。本文将用曲线相交法提取网格节点。
Figure 1. Harris extracted feature points
图1. Harris提取的特征点
2. 网格节点的提取
2.1. 图像处理
对于机器视觉系统来说摄像机所采集到的图像只是一些灰度值不同的像素点,为了能够从图像中得到有用的信息,要求对图像进行处理。图像采集过程中,外界条件和摄像机本身的结构等因素均会造成图像存在噪声和成像不均匀的现象,为了能够保证图像信息的准确性、易提取性,需要提前对图像进行平滑滤波、二值化、灰度直方图计算、前景与背景分割等处理操作。图像中一般含有的噪声,其中均值滤波和中值滤波是两种比较简单的消除噪声的方法。
均值滤波主要采用的是平均领域灰度值,然后替代的方法,用像素邻域(2n + 1) × (2m + 1)窗口内像素的平均值替换原图像中的该像素值,均值滤波在平滑噪声方面比较理想,但是会使图像的清晰度受到影响。
中值滤波在算法上比较简单,与均值滤波不同,它是一种非线性的消除噪声的方法。中值滤波是根据排序的理论获取移动窗口的中值,然后替换图像中像素点的值,能够有效抑制噪声,还可以平滑图像,消除比较严重的噪声点 [4]。
中值滤波在一定程度上解决了图像清晰度受损的问题,能够做到既去除噪声又保持原有的图像清晰度 [5]。在Halcon图像处理软件中算子median_image(Image : ImageMedian : MaskType, Radius, Margin)可以直接对图像进行中值滤波。
2.2. 曲线相交法
本文主要研究的是基于平移的三维坐标测量,由于网格线条具有一定幅值,因此交点处应该是一系列的像素点,并不是唯一的。为了能够提取曲线相交处的交点中心,因此需要对线条进行处理。基本思路是提取出网格线的亚像素精度,然后合并在同一条直线上的网格线,对网格线进行水平和竖直方向的分别排序,提取出网格线的交点即是网格节点坐标。网格节点提取的具体步骤如图2所示。
2.2.1. 提取网格线
图像采集得到的曲线均具有一定的幅值,使用骨架化的方法获得曲线的亚像素精度的中心线。Halcon中lines_gauss(Image : Lines : Sigma, Low, High, LightDark, ExtractWidth, LineModel, CompleteJunctions:)算子能根据曲线的幅值提取出曲线的亚像素精度的中心线也是曲线的骨架,提取到的网格曲线骨架如图3所示。
2.2.2. 合并网格线
由图3可以看出,提取出的网格曲线是分段离散的,为了方便提取网格曲线的交点,需要将位于同一曲线上的网格曲线合并成一起组成完整的曲线。Halcon中现有的union_collinear_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift, MaxAngle, Mode:)算子通过设置距离、偏离量、偏离角度、模式等参数可以较好的完成网格线的合并,合并后的网格曲线骨架如图4所示。
2.2.3. 网格线排序
Halcon中存在的sort_contours_xld( )排序函数能够按行坐标或列坐标的大小进行排序,但是无法实现曲线在水平和竖直方向分别排序。本文中的水平方向指的是平均方向与水平轴的夹角在−45˚到45˚之间的曲线,其余方向的曲线均是竖直方向。根据角度的分类新编算子sort_rows_contours_xld( )和sort_cols_contours_xld( )能够实现水平线和竖直线的分别排序,最终网格曲线排序结果如图5所示。
2.2.4. 网格点提取
在进行曲线回归的计算时,get_contour_xld算子可以得到曲线的像素个数及曲线上每个像素的像素坐标。使用如式(1)所示的曲线方程式作为像素点所形成直线的回归原形。
(1)
一方面根据拟合到的曲线方程求得曲线的交点,另一方面根据交点具有相同的像素坐标的特性,通过设置一定的约束条件寻找曲线上具有相同像素坐标的点,最后将得到的交点进行顺序编号,网格节点提取结果如图6所示。
Figure 6. Results of grid node extraction
图6. 网格节点提取结果
3. 实验结果和分析
通过对圆柱标准零件,平面标准零件以及非标准零件进行平移试验,来验证理论的可行性及实验结果的精度。
3.1. 标准零件的平移实验
3.1.1. 圆柱零件的平移实验
所用零件为标准的圆柱形零件,外表面半径平均值为40.50 mm,方网格的边长平均值为5.0 mm,实验步骤及结果如下:
1) 首先摄像机采集平移前后的圆柱形零件,获得的图像如图7所示。
Figure 7. Image before and after translation
图7. 平移前后图像
2) 对圆柱形零件进行图像处理并进行网格节点的提取及编号,结果如图8所示。
3) 对实验结果进行精度分析,试验中所采用的圆柱形零件半径为40.50 mm,所以行方向的网格节点具有有共圆性,通过对圆拟合可得出圆半径和实际测得的圆半径做比较进行精度分析,网格点圆拟合结果如图9所示。试验中采用的网格是边长为5.0 mm的正方形,网格节点在列方向上具有共线性,通过判断竖直方向的节点距离与实际距离的差值可以得出实验的测量精度,最终结果数据如表1所示。
Table 1. Precision analysis of 3D coordinates of grid node
表1. 网格节点三维坐标的精度分析
3.1.2. 平面零件的平移实验
所用零件为标准的平面零件,方网格的边长平均值为5.0 mm,平移距离为19.66 mm,实验步骤及结果如下:
1) 首先摄像机采集平移前后的平面零件,获得的图像如图10所示。
2) 对平面零件进行图像处理并进行网格节点的提取及编号,结果如图11所示。
3.2. 非标准零件的平移实验
标准零件主要是为了验证理论的可行性及实验结果的精度,非标准零件的实验与实际工况更加接近,可以用来验证理论方法具有实际工程应用的意义与价值。实验中使用的贴有方网格的非标准零件如图12所示。实验过程中,将非标准零件平移20 mm,选取其中的一部分感兴趣区域进行实验,感兴趣区域中包含119个网格节点。具体实验步骤如下:
1) 首先摄像机采集平移前后的非标准零件,获得的图像如图13所示。
2) 对非标准零件进行图像处理,使用算子draw_region (ROI, WindowHandle)选取其中一部分的感兴趣区域ROI,ROI如图14所示,然后进行网格线的提取、合并、排序,最后进行网格节点的提取及编号,结果如图15所示。
3) 在Matlab中进行三维坐标的计算及将三维坐标重建,重建结果如图16所示,由于非标准零件的形状不规则,原本规则的网格纸印制到板料上,在零件成形的过程中网格形状发生改变,平面、距离等发生改变,因此不易进行精度分析的操作。
4. 结论
根据网格节点的特点,使用一种新的基于几何运算的网格节点提取方法。通过二值化、均值滤波,中值滤波等进行图像处理,将图像处理软件Halcon引入到网格节点三维坐标测量中,大大提高了效率和准确度。在测量过程中,根据单目视觉的非线性模型得到了准确的标定结果,采用新的网格交点的提取,舍弃以往的受灰度值影响较大的特征点提取的算法,通过进行曲线的骨架化操作,精确地提取出网格线的中心线,进而求出网格线的交点。最后对不同的实际零件进行实验,根据实验结果验证了基于平移方法的可行性,为研究基于一般运动的零件的三维坐标测量提供理论基础。