王 华,何 航,邢春齐
(1.长春工业大学 机电工程学院,长春 130012;2.长春工程学院 研究生部,长春 130012)
在机械加工中,工件圆孔的中心坐标和半径的精确提取对于零部件的装配和定位具有非常重要的意义,传统的圆孔检测一般通过常规量具进行测量,比如游标卡尺等,使用常规量具不仅会带来较大的综合性误差和较低的测量效率。而对于一些测量精度要求较高的工件,一般会使用三坐标测量仪来测量[1],但是三坐标测量仪价格昂贵,体积较大,不适合随现场检测,测量速度缓慢,灵活性较差。视觉测量技术是以计算机视觉为基础的一种新技术,具有非接触、测量过程灵活、速度快、精度高等优点,在测量领域应用日益广泛。
双目立体视觉是建立在左右图像中对应点的视差基础之上[2],如何建立对应匹配点之间的联系是立体匹配中所要解决的一个重要问题。空间三维场景在投影的过程中,由于光照变化、镜头畸变、遮挡、干扰噪声等因素的影响,空间中同一点在图像上所反映出的特性会有所不同,尤其对于纹理信息不丰富的工件表面,其中一幅图像中平滑区域的像素点在另一幅图像中可能会有好几个类似的候选匹配点,实际中的立体匹配问题可以说是双目立体视觉最关键也是最困难的一步。本文提出了把线结构光与圆孔边缘的交点作为特征点的方法,有效避免了匹配困难的问题。
由于光照角度、测量材质、测量环境等因素的影响,采集的图像难免会有很多噪声,故首先采用中值滤波器对图像进行预处理,剔除大部分椒盐噪声。由于Canny边缘检测算子有效平衡了抑制噪声干扰和边缘点精确定位之间的关系,故本文采用Canny边缘算子对圆孔的边缘进行检测,边缘提取的效果图如图1所示。
图1 圆孔边缘点的提取
由于摄像机的透视投影畸变,圆孔在相机图像平面上的投影往往呈现为椭圆的形状。如果空间圆所处的平面与图像平面相交一定角度,空间圆孔中心在图像平面上的投影点与椭圆拟合出的中心位置会有一定的偏差。
最小二乘法椭圆拟合是一种常用的椭圆拟合方法[3]。设椭圆方程的一般形式可表示为:
其均方差和为:
为了防止出现零解,需对参数加一些限制条件:a+c=1,根据最小极值原理,对式(2)中的参数分别求偏导,并令每个导数值为0,即:
图2 工件圆孔边缘的椭圆拟合
如图3所示,针对粗糙的工件金属表面,激光条纹发生了漫反射,背景上的激光条纹比工件上的更宽,由于我们的目的是提取工件边缘特征点,因此我们只需将工件上的那一部分条纹中心提取出来。
图3 带有激光条纹的工件图
求取激光条纹中心的具体步骤如下:
1)从图像f(i,j)的第一行(i=1)开始,从左到右遍历图像像素,搜寻像素灰度值大于阈值T的点,记录其坐标值,将该行首个满足条件的点的列坐标设为C1。用K(i)代表条纹的宽度,初始化K(i)=0。
2)继续向右搜索,若其灰度值仍大于T,则宽度K(i)加1,即K(i)=K(i)+1。
3)当搜索完第i行之后,判断如果宽度K(i)小于3或大于6,则认定该点为噪声或是打在背景上的激光条纹,故将其排除。
4)按梯形法求出激光光强曲线采样面积:
其中,S(i)代表第i行的激光光强曲线采样面积。C1(i)代表图像第i行条纹区域的起点,K(i)代表图像第i行的激光条纹区域的宽度。
5)在条纹区域找出一点(i,j),使得该点左边条纹区域的面积SL小于S/2,即:
而该点(i,j)的邻点(i,j+1)左边条纹区域的面积SL+1大于S/2,即:
6)再对条纹中心(x0,y0)进行判断,如果:
根据上述方法获取条纹中心,还需要对条纹中心做进一步优化[4],设条纹中心初始坐标为(x0,y0),光条的宽度为K,则激光条纹中心的精确位置为:
用灰度的平方代替灰度值可以提高光条区域中像素灰度值对光条中心计算结果的权值,同时降低了由于背景光照不均匀或则光条不连续而造成的不利影响。通过以上方法提取出的条纹中心如图4所示。
图4 条纹提取的结果
条纹中心提取之后,采用最小二乘法对条纹中心进行直线拟合,得到直线方程,拟合的效果如图5所示。
图5 条纹中心的直线拟合放大图
联立条纹直线方程和椭圆方程,便可得到圆孔边缘特征点,然后根据两相机的内外参,把特征点的像素坐标转变成空间三维坐标,由于圆孔边缘特征点都处在同一平面上,首先对这些边缘点进行平面拟合[5,6]。设空间任一平面方程可以表示为:
将n个边缘点的空间三维坐标代入式(5)中,可得:
式中:
图6 空间圆结构图
上式可简化为:
式中:
n个空间圆上的点可获得n-1个如式(7)的方程组,再根据最小二乘法可得误差方程:
式(8)可简化为V=B.X=L,权阵P为单位矩阵,并为式(8)添加一个约束条件:圆心必在拟合出的空间平面上,即C.X-W=0,然后由附有条件的间接平差进行计算,推导出的法方程为:
式中,KS为约束条件的联系数向量。
求出最小二乘解为:
由此便可求得空间圆的圆心坐标,然后将各边缘点到圆心的距离的平均值作为空间圆的半径:
本文采用两台松下anpvc1210的工业相机和一个激光器来完成对图像的采集,相机的分辨率为1200×1600像素,镜头采用8mm焦距的日本Computar镜头,其中工件保持不动,通过激光器移动向工件上两个圆孔打出多条线结构光。
采用Halcon软件中的标定工具箱对两台相机进行标定,标定结果如表1所示,标定误差为0.13779个像素。
表1 相机标定参数
两相机之间的转换矩阵为:
提取每一条激光条纹中心,并拟合为直线方程,然后联立椭圆方程(1),求出两个圆孔边缘点的像素坐标,根据标定出的两相机内外参,求出边缘点的空间三维坐标,这些边缘点的空间分布如图7所示。
图7 空间圆边缘点的分布
根据空间圆的几何特性,对这些边缘点进行空间圆的拟合,通过式(10)求出的圆心坐标为:
求出各边缘点到圆心的距离,图8分别为大圆孔和小圆孔各边缘点到圆心的距离。
图8 大圆孔各边缘点到圆心的距离
图9 小圆孔各边缘点到圆心的距离
取这些距离的平均值作为空间圆的半径,然后将测量值与三坐标测量仪测出的数据进行比较,由于三坐标测量仪的空间探测误差,故可用三坐标测量仪测出的值验证该方法的测量精度。
通过表2可以看出,圆心距的误差比两个圆孔的半径的误差要小,这是由于光照环境的影响,圆孔边缘周围往往会留下阴影,进而会影响到圆孔边缘点的精确定位,提取出的特征点难以保证恰好处于圆孔边缘上,故该方法对于圆孔中心的定位精度会更高。
表2 误差分析
在双目立体视觉测量中,针对纹理信息不明显的圆孔边缘,特征点难以搜寻,或则是出现很多误匹配的问题,本文提出了把线结构光与工件边缘的交点作为特征点的方法,充分利用空间圆的几何特性拟合出圆孔的中心坐标和半径值,通过验证证明,该方法方便可行,灵活性高,对于圆孔中心的定位精度较高,该方法对于圆孔几何参数的测量具有借鉴意义。
[1] 周富强,张广军,江洁,等.空间圆几何参数的非接触高精度测量方法[J].仪器仪表学报,2004,25(5):604-607.
[2] 张广军.机器视觉[M].北京:科学出版社,2005.
[3] 闫蓓,王斌,李媛,等.基于最小二乘法的椭圆拟合改进算法[J].北京航空航天大学学报,2008,34(3):295-298.
[4] 赵博华,王伯雄,张金,等.粗糙金属表面光条中心提取方法[J].光学精密工程,2011,19(9):2138-2145.
[5] 张瑞峰,李士亮.基于线结构光的空间圆高精度测量算法[J].电子测量技术,2011,34(10):76-79,90.
[6] 李英硕,杨帆,袁兆奎,等.空间圆形拟合检测新方法[J].测绘科学,2013,38(6):147-148.