蒲 玲,曾鹏飞,苏 震,郝永平
(1.沈阳理工大学 机械工程学院,辽宁 沈阳 110159;2.沈阳理工大学 辽宁省先进制造技术与装备重点实验室,辽宁 沈阳 110159;3.中国兵器工业新技术推广研究所,北京 100089;4.沈阳理工大学 CAD/CAM技术研究与开发中心,辽宁 沈阳 110159)
随着近年来测量技术的飞速发展,齿轮测量已经由传统的机械式、机电结合式发展到如今以计算机、机光电等技术相结合的高自动化测量技术[1]。其中机器视觉在齿轮检测方面的应用主要包括了齿轮表面的残缺检测、齿轮的尺寸参数检测等。目前机器视觉技术以高稳定性、非接触、高精度、低成本等优点逐渐获得国内外制造业的关注度[2]。但在目前的齿轮齿宽的检测过程中,系统只对分度圆与轮齿渐开线的交点进行检测,而忽略了整个渐开线齿廓部分的误差。
本文主要采用CMOS为主板芯片的工业摄像头,结合光学测量、图像处理等技术,实现了图像的采集、预处理、亚像素边缘提取、检测等功能,针对整个齿轮进行检测,并对于每个轮齿的齿廓边缘进行检测,根据轮齿轮廓与标准渐开线轮廓进行比对计算误差,从而获得更加精确的误差信息,最终判断其合格性。
首先在摄像头的选取方面,本文主要选取了CMOS工业摄像头作为主要相机,因为相比于CCD相机来说,CMOS相机具有成本低、性价比高等优点[3],光源则采用视觉距离无限远、照度均值在3万勒克斯、稳定性好的环形LED光源,并且通过相机、光源的同轴进行照明的方式对齿轮进行检测,从而确保光线产生的误差达到最小。然后通过CMOS相机将图像采集到计算机中进行图像处理及数据分析。本文主要以某钟表机构中的齿轮作为主要检测对象,因为该齿轮对精度要求较高,适合本次实验。
1.2.1 软件介绍
本文主要使用Python及OpenCV作为图像的主要处理软件。OpenCV拥有一个强大的计算机视觉库,其中很多高效的模块化函数可以用来搭建齿轮检测的处理系统。通过对图像的双边滤波函数对图像进行滤波,通过Canny算子进行边缘检测以及改进的Devernay亚像素边缘检测可以获得高精度的齿轮边缘数据。然后再通过数据处理以及与理论图像及理论边缘参数进行对比从而得到齿轮的相关参数以及参数误差。主要过程如图1所示。
图1 主要过程图
1.2.2 预处理
相机标定的目的有两个:其一是将世界坐标系换算到图像坐标系中,从而可以从图像中获取真实世界的距离信息;其二是由于相机本身和镜头产生的一些误差,造成一些不可避免的畸变,这类畸变主要包括径向畸变和切向畸变[4],而这些畸变可以通过相机标定的方式进行校正,从而减少对图像的误差。本文主要采用张正友标定法,利用12×9个格子且每个方格长1.5 mm的棋盘格(见图2)进行标定。
图2 棋盘格
1.2.3 滤波
将图像灰度化之后,通过Gamma校正提高图像边缘对比度[5],以提高边缘轮廓,从而提高精度,其次通过调节亮度而增强图像的质量。由于图像在传输过程中容易产生光子噪声、暗电流噪声等,会对后续的测量造成误差。本文选用的是双边滤波函数,它是一种非线性滤波器,其特点是既可以保持边缘又可以实现降噪平滑的效果。其权重同时结合了像素的欧氏距离和范围域中的辐射差异。在对图像边缘区域进行滤波时,随着像素变化的增大,像素范围域的权重也随之增加,从而保持了边缘信息[6]。因为双边滤波函数的上述优点,故取代了传统只考虑位置因素的高斯滤波,从而获得更高的滤波效果。
1.2.4 边缘检测
对已经滤波后的图像进行阈值处理,其目的是将齿轮零件与背景进行分类,为后续边缘检测做准备。本文采用的是otsu’s方法的最佳全局阈值处理,相比于基本全局阈值处理,该算法不受图像的亮度和对比度的影响[7]。为了分别获得齿轮的外侧和内孔二值图像信息,通过利用形态学处理中的孔洞填充方法对齿轮的二值图像进行填充,并利用最大连通域的方式排除大型的杂质(见图3箭头处),从而获得齿轮的外侧二值图,再利用原本的二值图像做差值计算出齿轮内孔的图像。
图3 含有杂质的齿轮二值图像
在边缘检测方面选用的是CANNY边缘检测(见图4),CANNY边缘检测算法作为经典的边缘检测算法不仅有着优秀的边缘检测能力,而且还有着很好的抑制噪声的能力。其主要是对Sobel等算子的进一步优化。首先是选用高斯算子对灰度图像进行滤波,然后Sobel算子计算图像的梯度幅度和方向,之后根据角度对各个灰度梯度进行非极大值抑制,选取灰度梯度最大的位置作为边缘点,最后通过双阈值算法将计算出的边缘进行筛选[8]。该算法既能够有效地抑制噪声,还能准确地定位出边缘的位置。
图4 Canny边缘检测图
1.2.5 亚像素边缘检测
目前的像素级精度不能达到齿轮检测的精度要求,故可以利用亚像素边缘检测将原本像素级的精度提高至亚像素级。亚像素检测的方法有很多,例如矩方法、三次样条插值法、拟合法。本文选用的是优化的Devernay亚像素检测法[9]。原本Canny边缘检测利用的非极大值抑制只有像素级别,从而导致原本利用灰度梯度最大值而选取的边缘点可能不是该灰度梯度中的最大值,故引用Devernay亚像素校正法对其灰度梯度定位到最大值处η。为了减少计算量,原文中采用计算量更少的三点来对二次方程进行拟合。║g(A)║为A点的灰度梯度,η为距离Canny边缘点的位移补偿,其计算式如下:
(1)
而传统的Devernay算法误差较大,根据有限向计算梯度值所带来的误差,假设梯度满足二次曲线规律所带来的误差等,故通过分别使用水平和垂直方向上的插补来去除部分误差,以及利用边缘点链来对边缘轮廓进行合并处理。改进的Devernay亚像素检测图如图5所示。
图5 改进的Devernay亚像素检测图
1.2.6 数据处理
如需获得轮齿轮廓,首先需要确定齿轮的圆心位置,然后通过以圆心为中心将齿轮轮廓转换成极坐标的形式,并在此基础上对轮齿轮廓进行判断。
第1步是圆心的确定,先通过质心检测粗略计算出圆心的位置,根据此圆心位置对齿轮轮廓进行极坐标转换。对转换成极坐标形式的齿轮轮廓数据(见图6)进行线性拟合,然后通过拟合数据三点确定圆心的位置,从而获得精确的圆心坐标。
图6 以圆心为中心,经过极坐标转换后的
第2步是获取轮齿轮廓。齿顶圆直径、齿根圆直径都可以通过获得极大极小值方式来获得。根据齿数将经过极坐标转换的数据以及极大值极小值点进行分类,从而获得每一个轮齿的边缘轮廓。通过单个轮齿轮廓与理论轮齿轮廓作横坐标方向的差值(见图7)获得单个轮齿轮廓的误差数据(见图8)。
图7 检测单个轮齿中一边的轮廓与理论数据
图8 单个轮齿边缘轮廓与标准渐开线轮廓之间的误差图
1.2.7 测量结果分析
本文选取3个同一种类型齿轮作为试验样本(见图9),齿轮参数数据见表1。
表1 图像检测数据
由表1中数据可知齿轮齿顶圆直径、齿根圆直径以及齿数为26。通过本文的轮齿轮廓检测方法可知每一个轮齿轮廓的误差数据(见表2)。由于齿数过多,表2只列出前5个轮齿的数据。通过对3个齿轮的检测,以及通过每个轮齿轮廓误差值对齿轮的合格性进行判断。
表2 单个轮齿检测数据
通过数据可以看出,本文采用的轮齿轮廓检测相比于传统齿宽检测在单个轮齿的合格性检测方面更准确。
本文通过搭建检测平台可以检测单个轮齿轮廓的误差进而辨别出齿轮是否合格,随后可以通过该齿轮的合格性合理筛选出合格的齿轮。由于时间和能力有限,机器视觉中依旧存在诸多例如光源大小产生的误差、滤波出现的误差等,但机器视觉在未来关于齿轮检测的研究中有着检测速度快、精度高、人工成本低等优点,具有很好的工业应用前景[10]。