基于机器视觉的密封圈表面缺陷检测

描述

 

 

为了能让密封圈与密封部件之间实现完全的黏合,工业用的石墨密封圈表面必须平整光滑,严禁出现裂缝、暗纹等瑕疵。 通过机器视觉捕获的密封圈表面图像可能因种种因素呈现出光照不均匀、对比度低、噪声大,这时可以利用DSP捕捉图像,对图像特点进行分析,并通过中值滤波、二值化、图像缩小、哈弗圆检测法、区域生长等一系列图像算法来识别密封圈缺陷(如表面裂缝、模影、暗纹等)。密封圈表面缺陷检测系统将密封圈放置在合适的光源正下方,将工业智能相机搭载光源正上方。用相机模拟数据传输线或者以太网接口将相机数据传送到嵌入式系统中。这样密封圈的图像就采集到图像识别系统中了,我们就可以在该嵌入式系统内对该图像进行算法识别,判断所拍密封圈是否为合格产品。

以太网

经过反复的实验测试,在红色同轴光和红色环形光的照射下,相机采集到的图像瑕疵成像效果比较清晰。其中裂纹、暗纹等细瑕疵在红色同轴光下比较明显;模影等瑕疵在红色环形光下成像明显。两套检测系统共同使用,其中一套用红色同轴光源,另一套用红色环形光源,接上相应的光源驱动后,就可以对密封圈分2次进行检测。 图像经过智能识别系统处理过后,会出现合格与次品的两种结果,利用PLC通信,对密封圈分类装置进行电信号的通信。让其对密封圈进行筛选归类。在两套系统检测过程中,如果有其中任意一套将产品识别为不合格,那么在与密封圈分类装置通信时,该产品便为不合格产品。

检测系统的通信如图所示,系统采用4个IO通信口与检测平台建立联系。

以太网

通信IO口示意图 工件静止后,PLC给DSP拍照命令,out1高电平。 DSP处理完毕 DSP首先发生结果信号,DSP输出到in2高电平,再发生确认处理完毕信号,DSP输出到in1,OK为高电平,NG为低电平。 PLC接收到结果并不马上回复给 DSP,而是等到进料机械手到达时,移位寄存器记录并做30ms的延时后发出确认信号给DSP,确认信号发生的同时,要求DSP的确认信号同时有效。也就是DSP未收到PLC的确认信号之前要保持高电平状态,DSP 收到PLC的确认信号后需要把确认信号置为低电平。 系统在收到PLC的拍照信号后,检测系统便会将当前要检测的密封圈图像通过传输线从相机中写入到系统内存,如下图密封圈8比特BMP位图数据所示便是把从相机写入内存的数据以BMP8比特位图格式输出的图像。

以太网

密封圈8比特BMP位图数据 可以发现密封圈表面是呈浅色圆环状的,在密封圈表面的左边有一道黑色的缝,这就是我们需要检测到的瑕疵。 考虑到不同种类的瑕疵在不同的光源下的清晰度不同,所以该系统用的是两套不同的光源,一个是红色同轴光源,另一个是红色低角度环形光源。 同轴光源有内部的光学镜片经过特殊的位置设置,使得光源的发光光路可以与相机成90°直角。间接地起到了棱镜的使用效果。在该同轴光源的照射下,密封圈上比较细的裂纹都清晰可见。下图是该同轴光源下的成像效果:

以太网

环形90度水平低角度光源,该光源LED后部基板与水平面成90度,因此LED颗粒变成水平方向,光源通常为1排LED颗粒,水平照射后可以实现对于光滑表面的裂痕和表面凹凸造成的细微缺陷形成很好的反光效果。如下图低角度环形光源几何原理所示:

以太网

在低角度环形光源的照射下,密封圈上的暗纹可以清晰可见。下图便是密封圈在该环形光源下的成像效果:

以太网

由于密封圈表面的瑕疵往往都很细小,容易受到图像噪声的干扰。如果图像传输的过程中掺杂了过多的噪声因素,无疑增加了识别算法的困难程度。所以为了避免产生过多的噪声。只能选用抗噪性良好的相机。密封圈表面瑕疵检测算法算法处理流程如下图

以太网

捕捉源图像 首先在相机里直接采集到的数组信息并不是灰度图。因为相机除了灰度信息外,还带有颜色上的分量。在图像处理中,颜色分量起不到太大的作用,我们可以将它去掉。直接保留图像的灰度信息。对于大部分的模拟相机,单位像素是以2像素4个数字保存的,如下图相机中图像灰度值保存的位置所示,表示相机捕捉到的图像的8个像素,每个像素包含的信息都是用黑色的粗框围成的,每个2像素包含4个数据,以横向2像素为1单位,其中蓝色和绿色数据表示颜色信息,每个像素的红色数据为灰度信息。因此要通过特定公式提取灰度值。

以太网

相机中图像灰度值保存的位置 图片预处理 由于图像在传输线中传输的时候不可避免会出现干扰,所以提取出的灰度图像要进行滤波处理以便减小干扰。传统的滤波方法是中值滤波和均值滤波,可以不同程度地减少噪声干扰,但是这些方法也存在一些问题,可以看到这些噪声的特点和瑕疵边缘的特点近似,进行去噪的同时也模糊了瑕疵的边缘。这不利于对瑕疵的识别。因此要克服这个问题,对这两种经典方法进行了改进,把这种干扰降到最低。 分角度的中值滤波法可以适应瑕疵具有线性特征的特点,在二维的滑动窗口中,过中心点分别在0度,45度,90度,135度方向形成4个一维子窗口,分别对4 个子窗口求中值,然后取其最小值作为中心点的值。具体算法如下图分角度中值滤波示意图所示,分别统计二维滑动窗口中绿色、蓝色、灰色、紫色部分的灰度分布。

以太网

分角度中值滤波示意图 二值化 从密封圈8比特BMP位图数据中可以观察到,密封圈表面的颜色是比周边颜色要亮出许多的。为了要尽快找到要检测的目标区域。粗略二值化时可以采用全局二值化法。

以太网

目标提取 图像二值化后,已经去掉了大部分背景的干扰,因此在密封圈二值图的基础上可以继续进行目标提取过程。对于算法系统,目标提取实际上就是提取密封圈的圆环的过程。传统的找圆算法是哈弗圆检测法找圆。哈弗圆检测法找圆的速度很慢,但是可以在哈弗圆检测法上进行了优化。具体算法步骤如下: 由于哈弗圆检测法要遍历整张图像,所以图像内存越小,遍历的速度越快,所以我们可以尝试将图像缩小后再处理。系统采用缩小16倍图像(长宽各缩短4倍),再在缩小的图像上进行哈弗圆检测法找圆,为了尽可能保留原图的信息,缩小时先申请一个缩小图像内存,构建一个4×4的二维活动窗,当窗里的灰度值为0的个数等于或超过8个时,缩小图像相对应的点的灰度值为0,反之,缩小图像相对应的点的灰度值为255。如下图所示图像缩小过程。

以太网

以太网

二值图缩小16倍图像 优化哈弗圆检测法找圆心 为了要快速找到圆心,首先要通过学习模式,让系统掌握要搜索的圆环的外半径和内半径,之后在图像上遍历各个点,对每个点往 24 个方向上扫描,如下图优化哈弗所示,每隔15°遍历。

以太网

密封图表面提取 在二值图中确定内圆心与外圆心的位置后便可以根据外半径和内半径的长短,进行动态计算,取出最适合的内半径与外半径的值,进行匹配。

以太网

密封图目标捕捉 瑕疵提取 我们知道密封圈在图像上的位置后,就可以对原灰度图进行更细致的分区域二值化,以便找到瑕疵位置。 OTSU法二值化是由日本学者大津提出的一种自适应阈值确定方法,其原理是统计出图片内的灰度直方图,根据直方图的波谷位置分布来确定合适的阈值。其横坐标表示像素的灰度级别,纵坐标表示该灰度出现的像素个数,通过人工观察输入阈值的方法,来实现阈值分割图像的目的。如下图 OTSU法确定阈值示意图所示,该曲线为图像信息的灰度直方图分布。红线所示位置所对应的图像亮度值便是OTSU法计算出的阈值。

以太网

密封圈圆环的内外半径和圆心位置确定后,则可以在取区域过程中只对圆环表面上分布的像素点进行分区域统计。OTSU统计的区域划分如下图所示 

以太网

分区域OTSU法示意图 对蓝色区域的a~h一共8个区域分别进行直方图统计,每个区域都求出相对应的阈值。当像素值与阈值之间的灰度差距大于人为设定的参数时,就说明该点与周围像素环境之间存在着明显的不同。可将该点的灰度值赋值为0,否则该点赋值为255。 最终得到的新二值图像内存数组,该数组的亮度信息如下图所示。

以太网

OTSU 二值图 可以在上图中看出,瑕疵的信息因为局部二值化的关系而被很好地保留了下来。 瑕疵特性参数计算 瑕疵特征的提取主要包括瑕疵面积、长度和宽度的计算等。为了要提取出这些信息,可以用区域生长法来完成。 区域生长法提取 普通的区域生长法是8连通法。就是对一个点的上,左上,右上,左,右,下,左下,左下,右下一共8个方向进行遍历扫描,如果在该遍历方向上也存在与当前遍历点的像素值相同的点时,就将该2个点看作都是属于同一个瑕疵上的像素点。但是考虑到当前系统中捕捉到的瑕疵往往是属于狭长的缝。在使用 8 连通法提取狭长缝隙的信息时就很有可能就会造成缝的“断裂”,导致将一条缝的信息分为了2块或多块连通区域信息来处理。为了避免这一现象,可将区域生长法做一定改进:采用可调节的全方位拓展法求区域生长,如下图:

以太网

全方位拓展法求区域生长  瑕疵的判断 虽然根据全方位拓展法求得了瑕疵数组。但是并不是所有的瑕疵都会影响产品的合格与否。所以还要通过计算各个瑕疵的特性,排除掉一些无关紧要的瑕疵。对于一般密封圈表面来说,一些很小的点瑕疵,极短的缝瑕疵,以及位于圆环表面的瑕疵都对密封圈的使用没有任何影响。所以我们要通过计算,将这些瑕疵排除在外。 1. 瑕疵面积的计算法:当瑕疵面积小于人为设定的参数时,我们就对该瑕疵判断为合格。反之,则判断为不合格。 2. 瑕疵长度的计算法:计算瑕疵长时,基于瑕疵的线性特征,首先对瑕疵做细化操作,得到单像素宽的瑕疵骨架曲线。瑕疵的长度实际上就是骨架图像骨干点之间的长度之和。骨化后的图像是一个单像素宽度的连通性好的骨干图像。可以分别求取相邻像素之间的长度,然后把所有的相邻像素之间的距离求和即为所得。(总长度即为所有相邻像素之间的长度之和。) 当瑕疵长度小于人为设定的参数时,我们就对该瑕疵判断为合格。反之,则判断为不合格。 3. 瑕疵宽度的计算法:计算瑕疵宽时,仍然对瑕疵做细化操作后,骨架各点所在的瑕疵的位置的宽度反映出瑕疵各段的宽度。由于骨架曲线是单像素曲线,则一个骨架点与相邻点的其他两个骨架点相接,分别求出与相邻点的斜率。则每个斜率的垂线与瑕疵边缘相交两点,两点的连线的大小即为宽度值。比较这两个宽度值其中较小的为这个瑕疵的宽度。 当瑕疵宽小于人为设定的参数时,我们就对该瑕疵判断为合格。反之,则判断为不合格。 检测结果如下,左图为相机采集到的密封原图,通过算法处理后的结果为右图,可以看到,所有位于密封圈表面上的瑕疵都被检测出来了:

以太网

密封圈灰度图                                                         算法最终的处理结果

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分