基于机器视觉的发光字符的缺陷检测方法研究
2022-11-01李晋鑫沙玲
李晋鑫,沙玲
(201600 上海市 上海工程技术大学 机械与汽车工程学院)
0 引言
在工业生产中,许多产品包含大量字符信息,在字符中存在一些字符缺陷,如字符不清晰、字符漏印、字符笔画漏印、字符相对位置偏移等[1],目前在发光字符产品检测中,大多数是依靠人工检测,不仅耗时耗力[2],而且存在漏检等情况。不同于字符识别,字符检测同时存在缺陷样本量不足等问题,而且相关研究相对较少[3]。对此,本文开展了基于机器视觉的发光字符的缺陷检测研究。
1 字符检测系统的构建
构建字符检测系统要考虑图片画质清晰度、图片中待检区域与背景有高对比度和待检字符工件受外界光照影响,同时要满足图片的精度和视野要求。本文中,字符检测系统由工业相机、工业镜头、图像采集卡、工控机和旋转机械臂等组成[4-6],如图1 所示。
2 字符检测
字符检测的方法是利用模板匹配,主要分为2个阶段,第1 阶段是制作模板,包含有对标准字符的预处理过程;第2 阶段是模板匹配,包含有对待检测字符的预处理以及模板差异检测过程。具体流程如图2 所示。
2.1 制作标准字符模板
由于字符种类繁多且字符的缺陷种类不确定,如图3 所示有字符笔画的丢失、字符漏光和字符之间的相对位置偏移等等。因此考虑将字符分类处理,同一类字符使用同一种字符模板,用模板匹配检测算法实现字符的检测。模板匹配分为多种情况,最为方便的是单模板匹配,模板制作速度和匹配速度是最快的,为了获取一个标准的字符模板,需要在做每种类型字符检测时先使用一张理想的字符图片做模板,但是在获取图片时字符表面会有细小杂点、字符边缘处也会有噪声干扰或者光学字符亮暗不均等,都会影响字符的提取以及检测。为了屏蔽这种干扰,获取图像之后先对图像进行预处理,以消除干扰的影响,保留字符部分。字符模板图像预处理的流程如图4 所示,包括RGB 图像灰度化、噪声滤波、动态阈值提取阈值、图像二值化,边缘轮廓提取。
2.1.1 RGB 图像灰度化
为了简化图像模板的信息,将RGB 图像转化成灰度图像,如图5 所示。彩色图像的一个像素点是由红、蓝、绿3 个变量表示,要给这3 个变量赋值,改变单个像素点的颜色[7]。根据人眼的适应性确定了RGB 三个分量的系数。RGB 图像转化为灰度图像的公式为:
2.1.2 噪声滤波
获取灰度图之后在字符表面会有大小不等的黑色椒盐噪声如图6(a)所示,使图像质量下降。为了抑制该类噪声、改善字符图像的质量,提高后续字符的提取精度,将图像去噪处理。噪声的灰度与噪声周围的灰度有明显的对比度,但是字符边缘与背景也会有很大的对比度,如何消除噪声的同时最大程度减小对字符边缘的影响,这是关键所在。平滑字符图像如果使用均值滤波去噪,使噪声和边缘同时模糊,消除噪声的同时字符图像也会变模糊,如图6(b)所示。频域低通滤波去噪不仅计算量大、计算时间长,而且在降低噪声的同时使图像模糊尤其是边缘和细节处信息损失,如图6(c)所示。使用中值滤波能很好地消除字符的噪声,同时很清晰地保留字符边缘和细节信息,如图6(d)所示。比较以上3 种去噪效果,最终采用中值滤波进行去噪处理。
2.1.3 基于阈值的字符提取
实际检测中,由于电压电流不同,一些字符发光亮度较小或者较大,导致阈值提取字符时灰度值选择范围较广,会使字符提取受到背景的影响,为了使阈值算法能兼容所有批次的字符提取,选择使用动态阈值分割算法。动态阈值分割法是根据图像的不同区域亮度分布,计算其局部阈值,所以对于不同区域,能够自适应计算不同的阈值[8-9]。首先使用图片尺寸大小的掩膜对图像进行均值滤波,然后对平滑图像中的各灰度值与平滑前的灰度值进行比较。当平滑前的灰度值在平滑后的灰度值+t 以上时,赋予对应的输出图像的像素灰度值为255;在以下时,对应的输出图像像素值为0。如式(2)所示,像素值为255的像素点即为字符区域。图7(b)是通过动态阈值得到的字符区域。
2.1.4 灰度图像二值化
由于字符的每个像素点灰度值都不一致,且在字符边缘处灰度梯度值不明显,对提取字符边缘有很大影响。使用二值化处理灰度图像,首先将字符所在的整个矩形区域转化为二进制字节图像,将前景像素和背景像素的灰度值均设为0,输入原灰度图像的灰度值大于生成的二进制字节图像灰度值,在二进制灰度区域以最大灰度值255 绘制字符,如图8 所示,使字符边缘处的灰度梯度值最大。
2.1.5 边缘轮廓提取
由于字符边缘会存在微小的形变,如图9 字符边缘锯齿状,导致检测精度不够,因此需要在二值化之后对字符边缘平滑处理,然后再将字符区域转化为轮廓。由于字符图像进行了二值化,1 阶导数的梯度非常明显,因此使用灰度值的1 阶导数的方法来检测边缘[10]。Canny 边缘检测算子利用高斯函数的1 阶微分性质,把边缘检测问题转换为检测准则函数极大值的问题,能在噪声抑制和边缘检测之间取得较好的折中,因此使用Canny 算子做边缘检测,提取的字符边缘如图10 所示。
为了进一步提高边缘精度,先将Canny 边缘检测所得的每一个封闭的边缘轮廓线通过计算得到轮廓线对应的每一点的坐标,再通过所得的一系列像素坐标创建一个多边形区域。创建的多边形区域是由轮廓路径所定义的像素点组成,其中在每两个像素点之间使用线性内插,得到字符边缘处变形微小,相对于锯齿状边缘更为精确。如图11 所示为字符边缘检测局部图。
2.2 字符检测
2.2.1 基于灰度值的模板匹配
经过预处理后的字符模板需要与待检测的字符进行模板匹配,为了减小待检测字符的噪声、杂点等影响模板匹配分数,需要先将待检测字符做相同的预处理过程。获取预处理后的待检测字符后进行模板匹配。模板匹配是直接利用整幅图像的灰度信息建立两幅图像之间的相似性度量,然后采用归一化积相关的搜索方法寻找使相似性度量值最大的变换模型的参数值[11]。归一化积相关灰度匹配使用的相似性度量公式如式(3)。
实现步骤如图12 所示。
模板匹配结果如图13 所示。基于灰度值的模板匹配所得结果中包含匹配分值,经过200 件缺陷样本的测试匹配分值得出,最小的匹配分值为0.5。如果匹配分值小于0.5,则判断字符为不合格字符;如果匹配分值大于0.5,则进入差异模板检测。
2.2.2 仿射变换
由于字符工件在机构中位置有微小的偏移,使得字符模板与待检测字符位置不在同一坐标系中,模板差异检测前提为字符要处于同一坐标系中,因此首先需要通过仿射变换的平移变换使待检测模板与差异模板处于同一坐标系下,然后再进行差异模板检测。仿射变换的步骤如下:首先提取得到待检测字符中心横纵坐标;然后利用字符模板的中心横纵坐标与待检测字符中心横纵坐标确定一个仿射变换矩阵,如式(4);最后对所寻找出的区域使用仿射变换矩阵得到变换后的图像,如式(5)。
2.2.3 模板差异检测
由于灰度值模板匹配之后不能准确地判断待检测字符匹配分值大于0.5 的字符是否合格,因此需要进行模板差异检测。待检测字符与模板字符进行比较,超过待检测字符的阈值的区域返回到空间域中。返回的多个区域被看作一个区域进行连通性分析,然后根据区域的面积特征对区域进行选择。通过大批量字符缺陷测试,得出在字符中缺陷最小的像素面积为539,由此判断高于539 的像素面积为不合格字符。如图14 是通过差异模板检测的字符缺陷结果。
3 结果分析
通过工业相机分3 组采集了900 张图片,并且在拍照环境的光照稳定、相机相对于工件位置不变的条件下,测试算法的检测准确率和检测速度。从表1 可以看出,平均正确率为99.8%,漏检率为0,过检率为0.2%。使用中值滤波很好地消除噪声的干扰,提取边缘后使用线性内插法消除模板边缘锯齿状,提高了检测精度。在检测时间上,使用基于灰度值的模板匹配和差异模板检测,减少检测时间的同时,提高了检测精度。对于不同种类的字符,通过制作灰度模板都可以稳定地判断。综上所述,基于机器视觉的发光字符缺陷检测方法能够满足工业检测的需求。
表1 检测结果Tab.1 Test results
4 结论
实验结果表明,本文提出的基于机器视觉的发光字符缺陷检测方法可以准确地检测缺陷字符,相比于传统的人工检测缺陷字符,基于形状模板匹配与模板差异的字符缺陷检测在检测精度与效率上有了很大的提高,从而提高发光字符产品的质量。该研究方法对类似发光字符这种具备相似缺陷特征的项目提供了解决方案,有助于提高发光字符缺陷检测的自动化程度。