石磊,于正林
(长春理工大学 机电工程学院,长春 130022)
油封是一种封油的机械元件,油封在液压与气动装置中起到重要作用。油封主要的作用就是将需要润滑的传动机构与受力机构隔离开,防止漏油现象发生,同时能够防止泥沙、灰尘、水气等物质侵入运动部件。本文的研究对象是骨架油封,如图1(a)所示。顾名思义,骨架油封的骨架是起支撑作用的,固定油封外形,自紧螺旋弹簧自带收缩力,能够提供很好的自紧力,提高密封效果。骨架油封的唇口在密封中起到重要作用,将机器内部与外部隔离开,能够很好地阻挡外界杂质。图1(b)为骨架油封的结构示意图[1]。目前,工厂生产油封的过程中存在多种影响因素,导致油封可能存在缺陷。油封唇口作为重要的密封部位,如果存在缺陷会严重影响密封性能,甚至使油封失效。在凹缺、划痕、毛刺以及尺寸偏差等多种油封缺陷中,凹缺缺陷影响最大,因此,本文主要对唇口凹缺缺陷进行检测研究。目前,国内很多生产油封的厂家采用人工检测的方式对油封成品进行检查,这需要大量的员工在生产过程中依靠肉眼检测油封唇口缺陷等。虽然这种人工检测的方式能够检测出油封存在的缺陷,实现对油封质量的控制,但是依然存在很多的不足,急需一种新型的、简单有效的油封缺陷检测方法。
图1 骨架油封结构
多数油封生产企业的油封月产量多达数百万件,人工检测这种传统的检测方式难以满足生产效率的需求,导致公司运营难以完美衔接;油封自动化流水线生产过程中需要配备多名员工同时进行油封缺陷检测,这样是一种极大的人力资源的浪费,同时显著增加了生产成本;而且检测人员不间断的眼力劳动,容易出现疲劳导致漏检、错检的现象,会产生严重的后果;由于不同员工检测有不同的标准,无法实现完全统一,这也严重影响了最终成品的质量性能。因此,针对唇口缺陷,本文提出一种基于图像处理的油封缺陷检测方法。
骨架油封的尺寸划分细密,根据国家标准与实际生产相结合来看,中小型尺寸的油封在实际应用的占比比较大。所以本文将研究对象设定在Φ50 mm的中小油封。本文选择的检测对象为油封唇口内圆处的缺陷。针对油封设计检测系统结构框图如图2所示,首先由图像采集模块采集油封图像,油封由传送带送到CCD相机下方指定位置,油封和背景视差明显,上方采用LED光源,能得到具有较高品质和较高对比度的油封图像,将油封图像储存到图像采集卡中为后面的图像处理做准备[2]。这里选用LED灯作为光源是因为在机器视觉领域,LED光源相对于传统光源具有使用寿命长、形状自由度高、应答速度快和综合成本低等优点。机械运动机构由电机和传送带组成,由计算机控制机械运动,配合相机图像采集的节拍,完成工件的进给和图像采集的运动;采集的油封图像同步到计算机,运用MATLAB根据给定的算法对油封图像进行检测与判别,最后输出结果。
图2 系统结构框图
采集油封图像同步到计算机,根据图像缺陷检测流程进行检测,根据油封缺陷检测标准,油封唇口处不能存在人眼可见缺陷[3]。因此采用如下检测流程,框图如图3所示。
图3 油封缺陷检测流程
根据实际情况,由于环境和随机因素的影响,在采集到的油封图像中会存在大量噪声,带有大量噪声的图像无法直接处理,需要先进行图像预处理,包括灰度处理和滤波处理。相机采集的油封图像数据量庞大繁杂,不利于实验效果。需要进行灰度变换,将原图像转化为灰度图像,如图4(a)所示。
图4 添加噪声图像
在图像灰度化后,还需对图像进行滤波处理,因为采集油封图像时会受到各种外界因素的干扰,这些干扰因素会使图像产生大量的噪声及不必要的干扰信息。本文中油封图像是通过CCD相机采集,在生成图像时,环境湿度以及照明程度等因素都会使图像产生大量干扰信息;而且,在图像采集过程当中,由于机械运动的影响和试验环境的限制,像素抖动无法避免,这也会产生噪声增加干扰信息使图像质量降低;同时,图像采集过程中,采集系统的电源变化和系统的震动等都会增加图像中的噪声。如不去除这些噪声,油封图像的阈值分割和边缘特征提取会失真,那么检测结果将毫无意义,导致实验失败。因此,滤除图像中的噪声十分重要。根据生产实际,这里将在油封图像中加入高斯噪声和椒盐噪声[4],通过对其进行滤波处理并加以分析,以寻找最佳滤波方法。图4(a)为油封原灰度图像,图4(b)为加入高斯噪声的图像,图4(c)为加入椒盐噪声后的图像。
针对上图中的噪声图像,分别采用均值滤波和中值滤波对其进行滤波处理并加以分析。这里先分析滤波的处理特性。均值滤波相当于低通滤波,均值滤波是典型的线性滤波算法。就是计算周围像素点的平均值作为中心点的值,这种算法有一定缺陷,会丢失图像的细节信息,使图像变得模糊,对椒盐噪声基本无能为力,这一点是十分不利的。中值滤波法是一种非线性平滑技术,将图像的像素点看做一连串的数值,将他们的中值作为标准赋值给它附近数值及像素点。油封图像为非线性轮廓边缘,而且本成像系统底部背景与油封对比度高,上方LED光源给光,噪声点较少,应选用中值滤波。通过实验和分析表明,均值滤波处理后的图像如图5(a)所示,图像变得模糊,图像细节丢失,效果差强人意,不能很好地去除噪声点。而中值滤波处理后的图像如图5(b)所示,图像清晰,目标与背景有较高对比度,边缘轮廓信息保留完善,噪声基本消失[5]。
图5 均值滤波与中值滤波图像
实验结果表明,中值滤波法能够很很好地消除油封图像中的噪声,同时能够保留图像的细节信息,不影响后续的进一步处理。因此,本文采用中值滤波法对油封图像进行滤波处理。
中值滤波后的图像要进行二值化处理,二值化图像如图5(c)所示,并进一步进行腐蚀与膨胀处理。根据先验知识,图像先腐蚀后膨胀称为开运算,先膨胀后腐蚀为闭运算。根据本文图像特点,这里采用闭运算。
假设A为一幅二值图像,S为结构元素,则A对S的形态开运算为定义为式(1),闭运算定义为式(2):
在对油封图像的处理过程中,图像中的油封是检测的对象,在图像处理中通常称其为前景或感兴趣部分,而其余的部分则为背景,图像分割就是把感兴趣部分与背景分割开,将目标部分提取出来,对于图像中的其他要素则要尽量消除。图像分割是油封图像处理过程中十分重要的一步。目前,图像分割的方法有很多,如图6所示,但是每种方法都有各自的优缺点和特定应用场合,根据本文油封图像的特性,阈值分割最适合本实验。阈值分割技术是应用最广泛的图像分割方法,通过设定阈值对图像进行分割,十分简单快捷。本文也将使用阈值分割技术对油封图像进行处理,同时对几种阈值分割方法做简单分析比较,通过MATLAB软件进行算法的程序编写和运行,根据实验结果的比较分析,选择出适合本系统检测的分割方法。
图6 图像分割方法
阈值分割需要选定一个灰度值作为分界点,然后将图像中的像素点的灰度值与分界点灰度值做对比,将灰度值大于分界值的像素点设置为255,所有灰度值小于分界值的像素点设置为0。而起到分界值作用的灰度值则称为阀值。这样就将感兴趣部分和背景分割开了。
本文主要对基于灰度直方图的阈值分割和最大类间方差阈值分割,即Otsu法[6]进行了实验并加以比较。基于灰度直方图的阈值分割法简单易操作,首先将油封图像灰度化,通过MAT⁃LAB处理得到灰度直方图,如图7所示,图中横坐标为灰度级,纵坐标为像素点数。根据油封图像的灰度直方图可以发现存在两个波峰,选取两个波峰的均值作为阈值,根据此阈值对图像进行分割。可以发现两个峰值相差很远,波峰值分别为30和255,数值相差很大,能够计算阈值对图像进行阈值分割。但是在MATLAB实现过程中需要手动输入阈值,不满足实时检测的特性。最大类间方差法阈值分割效果如图8所示。用最大类间方差阈值分割法对油封图像进行二值化分割后,图像中的前景与背景的类间方差最大,本文油封图像中前景与背景对比度大,正好符合Otsu阈值分割法的要求。而且最大类间方差阈值分割法能够自动选取阈值,有很好的自适应性,不需要人为设置其它参数,能够对油封图像进行实时检测,适合自动化生产[7]。而且分割效果理想。因此本文采用Otsu法对油封图像进行阈值分割。
图7 灰度直方图
图8 Otsu法阈值分割图像
在对油封图像处理过程中,目标是检测油封唇口凹缺缺陷,这里可以提取边缘轮廓来对油封进行检测。本文采用链码表示法对目标油封图像的边界轮廓进行提取。
链码在图像处理等领域应用广泛,本文的油封图像边缘轮廓可用链码法提取,根据链码原理,须知一点坐标作为起始点,根据边界点的方向代码值可得下一像素点的坐标,以此方法能够很好地描述曲线边界轮廓。本文的油封图像轮廓刚好为圆形曲线,用链码来表达目标的曲线以及区域边界完全适用。
链码中心像素点的邻接方向有基本的上、下、左、右4个方向,同时也可以算上4个斜方向,细分成8个方向,因此,链码可分成4-方向链码和8-方向链码[8]两种。4-方向链码相对简单,8-方向链码对曲线边缘轮廓描述效果更好,本文选用8-方向链码法对油封图像进行边缘提取。根据8-方向链码原理,定义8个方向的方向码为0、1、2、3、4、5、6、7,如图9所示。根据起始点的坐标和链码的编程方向,可以用一组数列对其进行表示。这组数列被称为Freeman链码。在Freeman链码中,奇数码和偶数码代表不同线段长度,根据规定,奇数码的单位长度为2,偶数码的单位长度为1。
图9 8-方向链码示意图
根据本文油封图像的实际情况,这里采用8-方向链码法对像素进行描述,能够准确地表达中间像素点及其邻接点的信息。根据链码坐标偏移量的计算标准,设点A为边界上的一点,则链码A横坐标的偏移量记为dx(ai),纵坐标的偏移量记为dy(ai)。点A在8个方向的偏移量如表1所示。根据表1,只需知道一个边界点的坐标和其对应下一个点的方向码的值,就能够得到下一个点的坐标。举例说明,假设知道一个边界点O的坐标为(x,y),并且知道下一个边界点P的方向码值为1,就可以得到P点的坐标(xp,yp)为:
表1 链码值对应的坐标偏移量
根据前面所知的链码表示法,可以通过目标区域来描述任意一条曲线,根据其组成和坐标及链码值,可将曲线用链码表达式表示出来,其表达式如下:
在表达式(2)中:a1代表方向码的值,参照表1对其进行取值。图10为一个模拟8-方向链码提取边界的简单实例,通过图10可以知道基于链码法提取边界的基本过程。
图10 8-方向链码边界提取实例
图10中的A点为边界起始点,根据箭头方向可知编码方向为顺时针,图中每个箭头的起始点和终止点都代表边界点,知道起始点A的坐标并且通向B点的方向码为2,就可以得到B点的坐标,以此类推,后面每一个点的坐标都可以得到,通过不断地计算编码,最后回到A点,这时宣布编码结束。这时,根据得到的边界点和链码值,能够描述边界区域。在图10实例中的边界链码为224345456060200601。通过上面实例的描述,能够知道基于8-方向链码对边界提取的基本过程,这里想要实现这个过程,需要一个好的编码控制流程[9],如图11所示。根据图中所述流程,在MATLAB中编程运算,对油封图像进行边界提取。
图11 链码法遍历边界的流程图
在提取出目标油封边缘轮廓后需进行缺陷检测,本文主要对油封图像的外唇内圆的凹缺缺陷进行检测,其主要特征表现为轮廓凹缺,有明显的变形,而标准油封唇口内圆表现为圆形特征,及有标准的半径尺寸。因此,最简单有效的方法就是识别图像的圆心及圆形半径尺寸是否存在偏差,根据偏差来检测油封是否存在凹缺缺陷[10]。圆形拟合的方法中,最小二乘法有明显的优点,其精度高、速度快、拟合效果明显,适用于本实验的检测。首先运用最小二乘法对标准油封的圆心和半径进行拟合,定圆心为(A,B),半径为R,得出标准轮廓模版。然后将前面得到油封唇口内圆边缘像素点集进行逐点和轮廓模版求偏差,根据油封缺陷检测标准设定一个阈值,若对比偏差超过这一阈值,判定该油封存在凹缺缺陷,为不合格油封工件。采用公式(3)计算边缘点到圆心(A,B)的距离。
式中,(xi,yi)代表边缘点集;T(xi,yi)代表各点到圆心的距离。通过上式逐点计算出边缘点集到圆心的距离,再计算其与半径R的偏差,记为:
最后判断Δt是否超过给定的阈值,以次来判定是否凹缺缺陷。此方法可以快速识别油封是否存在凹缺缺陷,能够达到检测要求,同时能够提高油封检测效率。
本文的研究对象是骨架油封常见的表面缺陷,在实际生产中选取38×52×6的油封为样本。在MATLAB中运行算法对油封进行图像处理,实验结果如图12所示,图12(a)是油封原图像,图12(b)是采用链码法处理的图像,而图12(c)中的图像为运用Prewitt算子处理后的图像。可以看到链码法处理的图片边界轮廓清晰,细节保留完好,而Prewitt算子法提取轮廓细节部分丢失。得出结论,本算法能够实现对目标图像的边界信息进行描述,达到了预期的实验效果。而且从图中可以看出,链码法描述图像更加清晰可观。
图12 边界提取效果图
本文针对员工对油封缺陷进行肉眼检测时存在检测效率低、易遗漏、成本高等不足,对油封缺陷检测方法进行研究,通过对图像进行采集,进行灰度处理和中值滤波等预处理,经过Ot⁃su阈值分割得到目标图像,通过基于8-方向链码法进行边缘提取,采用最小二乘法拟合油封唇口圆形轮廓来识别油封唇口是否存在凹缺缺陷。实验结果表明,从图像的采集到确定检测结果整个检测快速完成,图像处理效果理想,可以达到预期实验效果,能够提高油封缺陷检测效率。