汽车玻璃黑边区域划痕的视觉检测技术
2020-03-25赵毅武
,赵毅武
(1. 福建工程学院 信息科学与工程学院, 福建 福州 350118;2. 福耀集团(上海)汽车玻璃有限公司, 上海 201814 )
在汽车玻璃制造领域,如何提高玻璃缺陷检测的效率与准确率,一直是亟待解决的问题。特别是汽车玻璃黑边区域的划痕检测更是长期依赖大量的人工进行,由于检测人员的主观性,使得检测结果准确性和稳定性无法得到保障,而且在线生产检测需要工作人员快速抽检,导致误检率、漏检率居高不下。
目前,国内对于玻璃的缺陷检测已经有一定的研究,如宋迪等[1]利用 Gabor 滤波器与各向异性纹理抑制的方法进行划痕的提取。李晨、杨甬英等[2]设计了一种基于滤波差分的双阈值弱划痕提取算法来加强检测效果。此外吴珊、 陈斌等[3]针对划痕方向影响检测效果的问题,提出改进的线检测方法,但是对于玻璃弱化痕的检测效果并不是很好。王静颖[4]采用边缘检测算子来进行划痕的提取,但是对于一些对比度较低、边界模糊的划痕容易出现划痕丢失的问题。武跃华[5]利用小波变换法来得到划痕图像,但是基于小波变换的划痕检测算法存在计算量大等问题导致满足不了工业生产的实时性需求。王昌书[6]对手机曲面玻璃缺陷进行了研究,提出了基于卷积神经网络的缺陷分类方法。上述方案均是针对透明玻璃的缺陷检测,没有专门针对玻璃黑边区域的进行划痕检测。针对汽车玻璃黑边区域划痕检测的精确性和实时性等要求,本研究提出了汽车玻璃黑边区域划痕视觉检测方法,并以汽车角窗玻璃为实验对象说明算法的实现过程。
1 划痕检测装置
划痕检测装置包含前端CCD工业相机、辅助光源和后端的计算机,如图1所示。前端主要实现图像的采集,后端是进行图像处理和划痕识别。辅助光源采用条形光源低角度入射方式,因为低角度入射光源更易于凸显表面划痕,确保采集所得的图像质量。本研究采用的分辨率为500万像素的相机采集汽车角窗玻璃图像如图2所示。
图1 划痕检测装置Fig.1 Scratch detection device
图2 汽车角窗玻璃原图Fig.2 Original image of the car quarter glass
2 划痕检测算法及过程
2.1 图像的预处理
预处理的目标是减小玻璃图像中的不相关信息,抑制甚至消除图像中的干扰因素,凸显玻璃的划痕信息,以便后续划痕的检测与识别。
2.1.1 灰度值调整处理
经过多次实验比较发现,将采集平台的背景设置为灰色能够采集到更清晰的划痕图像,但这也造成灰度化后玻璃的透明区域与油墨区域在色域上有一定的相似度。若直接进行二值化处理将会丢失大量的划痕信息,因此需要采用图像灰度值调整算法来改善图像质量。本文采用灰度值拉伸的方法来凸显玻璃划痕,原理就是将待测图像中某个灰度值范围内的所有像素点映射到另一个灰度值范围,以加强图像的对比度[7]。本文采取的是映射参数为0.75的非线性映射,将待测图像内灰度值低于30的像素值调整为0,把大于200的像素值调整为255。
2.1.2 图像的平滑处理
图像在采集过程与传输过程经常存在噪声,从而影响划痕的检测,因此需要采用合适的平滑算法来抑制噪声。目前最常用的滤波方法主要是中值滤波、均值滤波、维纳滤波等。其中,维纳滤波也称为自适应滤波,是一种基于最小均方误差准则的滤波方法,主要是根据局部方差值来进行滤波的调整适应,确保输出与期望输出之间的均方误差为最小。因此它可以实现对图像噪声的自适应滤除,对于方差较小的区域,滤波效果较好,能够充分保留细节。而玻璃划痕的后期识别需要比较多的细节信息,因此采用维纳滤波方法实现玻璃图像的平滑处理。
维纳滤波首先根据公式(1)计算出像素局部区域的平均值μ,然后计算出像素的局部区域的方差σ2,如公式(2),最后用公式(3)计算出每一个像素点通过维纳滤波器后的灰度值b(n1,n2)。
(1)
(2)
(3)
式中,η为每个像素点的M×N的邻域,a(n1,n2)为领域中的某个像素点的灰度值,v2为图像中噪声的方差。实验证明,维纳滤波不仅能够较好地保留划痕信息,而且具有良好的降噪效果。
2.1.3 图像的锐化处理
维纳滤波处理会导致划痕与边界信息在一定程度上变得模糊,因此需要增加锐化处理来加强划痕及边缘信息,但是同时也会导致噪声变大,增加后续图像处理的难度,因此选择锐化算法需要考虑加强细节的同时要尽量小噪声。
锐化算法的选择关键在于算子的选择,常用的锐化算子有Sobel算子、Prewitt 算子、Laplacian算子等。其中Sobel算子、Prewitt 算子是基于一阶导数的锐化算子,会产生较宽的边缘,细节的响应较差;Laplacian算子是基于二阶微分的锐化算子,对于细节的响应程度更好,但是对于噪声的增强也会更强。由于玻璃划痕图像包含较多的细节,因此选择二阶微分Laplacian算子来进行锐化操作。经过Laplacian算子锐化后的图像只有在边缘和划痕等灰度值突变区域才会加强,灰度值平滑区域则近乎于黑色,这也造成玻璃平滑区域的一些信息丢失,会增加后续图像处理的难度。为了解决这个问题,采用了高提升滤波来保留更多的图像信息。高提升滤波是先进行图像锐化操作,再将图像的锐化结果与原图相加,达到保留更多玻璃图像信息的目的。经过灰度拉伸,维纳滤波和Laplacian算子锐化预处理后,可获得如图3所示图像。
图3 预处理后的汽车角窗玻璃图像Fig.3 Reprocessed image of the car quarter glass
2.2 图像分割
图像分割是将感兴趣目标区域从整幅图像中分离出来,这是划痕检测的关键步骤之一。由于玻璃图像在采集过程中使用了灰色背景,导致图像中的其他区域与玻璃黑边区域在色域上有一定的相似度,若直接二值化处理,会混淆黑边区域和其他区域的信息,因此需要通过图像分割算法将黑边区域提取出来,再转为二值图。区域生长分割算法具有计算简单、能够将具有相同特征的连通区域分割出来、能够提供很好的边界信息和分割结果的优点[8],这非常符合玻璃黑边区域划痕提取的需求。
2.2.1 区域生长分割算法的实现
区域生长分割是依据选择好的生长初始点的特征以及设置的生长条件,利用形态学对图像信息进行合并得到相应的分割结果[9]。即通过计算生长初始点的像素f(a,b)和f(x,y)相邻像素之间的灰度值之差D,如公式(4)所示。
D=|f(x,y)-f(a,b)|
(4)
若D小于阈值T,说明这两个像素点灰度值相似,把这两个像素值合并形成一个新的生长点;否则保持不变。将图像区域中所有像素点的灰度值与特征值作比较,若是二者的灰度差值落在设定的差值范围内(0,0.2)(double类型数据),则将该像素点合并,同时置1,否则置0,最终实现玻璃黑边区域的分割,剔除背景。
2.2.2 区域生长分割算法的优化
(1)生长点的自动获取
传统的区域生长分割种子点是无法自动获取,只能通过鼠标点击获取,为了使传统的区域生长分割算法能够用于划痕的自动检测,设计了种子点自动获取的算法。通过分析玻璃黑边区域划痕图像中满足条件的生长点的特征,发现生长点的灰度值均落在40~70。根据生长点的灰度值特征,设定自动获取生长点的方法是从图像的原点开始遍历寻找生长点,当有像素点的灰度值落在40~70,且其8邻域的像素点也满足该条件时停止遍历,并将该像素点作为生长初始点。
(2)双阈值分割
在黑边区域的提取过程中发现采用单一阈值的分割方法难以有效地将目标区域从背景中分离出来。若是阈值设置过低,会出现过分割的现象。过分割对于较细小的区域会有更好的表现,但是会导致边轮廓信息的丢失。若是阈值设置过高,会出现欠分割的现象,欠分割能够有很好的轮廓效果,但较细小的区域信息会丢失。为了保留更多的图像信息,采用双阈值切割,即通过设置高低两个阈值同时进行图像分割,通过大量的实验,最终确定低阈值设置为0.17,高阈值设置为0.35能够获得较为理想的效果。最后再将不同阈值切割后的图像信息叠加在一起作为最终的结果,以便得到保留更为完整的玻璃划痕信息,分割结果如图4所示。
图4 黑边区域分割效果图Fig.4 Frit band segmentatin effect
2.3 划痕的检测与标记
划痕的检测需要先通过形态学算法对划痕进行处理,去除边界、灰尘干扰等无关信息。接着进行断裂划痕的重新连接,最后再通过获取连通域的方法将检测出来的划痕进行标记。
2.3.1 划痕信息处理
(1)边界信息的去除
利用区域生长分割算法提取出来的黑边图像不仅包含有划痕信息,还包含了油墨区域的边界信息,这些信息对后续的划痕检测容易造成干扰,因此需要将其去除。采用掩膜算法即通过掩版对分割图像的掩盖实现边界信息的去除。为了避免掩膜算法对实时性产生较大的影响,掩板制作只在生产伊始才进行。双阈值分割后所获得的图像分别利用掩膜算法处理后,再将两张图像所保留的信息进行叠加,只剩下划痕信息和灰尘信息。
(2)灰尘信息的去除
由于划痕检测处于工业现场,即使经过清洗的玻璃也难免会沾上粉尘,因此在进行划痕检测之前需要剔除这一方面的干扰。由于划痕与灰尘在图像中的表现形式都是连通域,但灰尘通常比划痕更为细小,因此可以通过去除较小连通域的方法去除灰尘干扰。经过实验选择连通域面积阈值为8,去除小面积区域后剩下的信息就是要检测的划痕信息了。
(3) 断裂划痕的连接
由于干扰点的影响,利用区域生长分割算法可能会导致划痕出现断裂[10-11],如图4所示。实际玻璃中的划痕一般都距离较远,因此有理由认为分割后所获得的划痕图像中距离较近的划痕区域应该属于同一划痕。为了得到保留较好的划痕图像信息,方便后续划痕的标记,通过数学形态学的膨胀与细化来重新连接距离较近的划痕,连接后的效果如图5所示。
(a) 连接前
(b)连接后图5 划痕的连接Fig.5 Connection of scratches
2.3.2 划痕的标记
通过上述处理后能获得划痕信息,为了便于复检人员能够快速地确定划痕所在的区域,还需要将检测到的划痕信息在原图像中进行标记。由于划痕表现形式为连通域,因此可以通过8领域连通区域标记算法直接获取划痕区域,并计算该区域的最小外接矩形,同时用红色将这个外接矩形显示在原图像的相应区域,实现划痕信息的标记,标记结果如图6所示。
图6 划痕标记Fig.6 Scratch marks
3 实验与结果分析
为了验证该算法的实际检测准确率,进行了多个型号汽车角窗玻璃的多组测试,图7为其中2种型号玻璃的检测效果图。从图7可以看出本算法对于不同型号的玻璃都适用,效果良好。
图7 不同型号玻璃的检测效果Fig.7 Detection effect of different types of quarter glass
另外,随机抽取10种不同型号的玻璃,每种型号的玻璃取10片,其中包含合格品和非合格品。对每一种型号的10片玻璃分别进行了10次检测,最终的测试数据统计结果见表1所示。检测准确率指的是能够准确识别合格品和非合格品的数量占总数的比值。而划痕标记准确率指的是能够标记出全部划痕的玻璃数量与实际非合格品数量的比值。
从表1的数据可以看出,在所测试的10种型号汽车角窗玻璃中,检测准确率平均值为99%,划痕标记准确率的平均值为97%。有3种型号的玻璃(65620T 1.8C,6569AT 4.0C,6569BT 2.1G)存在漏检的情况,另外7种能够完全准确地区分出合格品和非合格品。经过检查分析,发现是由于图像采集过程中相机与光源的角度差别,导致玻璃上某个角度下的划痕不能够被采集到,因此出现漏检的现象。从划痕标记的准确率可以看出,部分被检测为不合格的玻璃,其中的划痕并没有全部被标记出来。出现该问题的原因有两个,一个也是由于辅助光源问题导致采集到的玻璃划痕图像中没有出现该划痕信息,另一个原因是划痕过于细微,在滤波处理时被清除了。因此后续可以调整图像采集装置的光源的分布,采取多光源分角度分时曝光的方式采集图像,然后将所有采集到的图像叠加生成待检测的图像,以确保能够采集到全部的划痕信息。另一方面是进一步优化滤波算法,以保留图像划痕更多的细节。
表1 汽车角窗玻璃划痕检测结果
4 结论
本文提出了一种汽车玻璃黑边区域划痕视觉检测的方法。通过CCD相机在线采集图像,经过滤波、锐化等预处理消除噪声,凸显划痕;然后运用形态学方法进行分割和划痕形态处理,最后用8领域法标记划痕。该方法能够充分保留划痕细节,检测速度快,满足在线检测的要求,经测试检验,该方法不仅适用于不同型号的玻璃黑边划痕检测,而且区分合格品和非合格品的准确率达99%,划痕标记的准确率为97%,有助于提高汽车玻璃的生产效率,有效避免了人工检测对汽车玻璃造成二次伤害。