一种利用外轮廓配准的活塞侧面缺陷检测方法
2019-11-08王红艳朱利民张潘杰李金屏
王红艳,朱利民,张潘杰,李金屏
(1.济南大学 信息科学与工程学院,山东 济南 250022;2.济南大学 山东省网络环境智能计算技术重点实验室,山东 济南 250022;3.济南大学 山东省“十三五”高校信息处理与认知计算重点实验室,山东 济南 250022;4.滨州渤海活塞有限公司,山东 滨州 256602)
活塞是汽车发动机的重要组成部分(图1),出厂前必须检测每个活塞是否存在质量问题[1],其中之一是检测是否存在表面缺陷。目前活塞表面缺陷检测的主要方式分为人工检测和接触式缺陷检测。人工检测具有主观性强、效率低下、成本高等缺点。接触式缺陷检测包括涡流检测和超声检测[2]等,接触式缺陷检测具有探针接触面小、检测结果显示不直观等缺点。为了解决传统检测效率低、检测范围小、结果显示不直观等问题,同时降低检测成本,笔者和滨州渤海活塞有限公司合作开展了基于图像处理技术的活塞表面缺陷检测研究。
图1 不同角度下活塞侧表面
图2 活塞表面水平纹理
滨州渤海活塞有限公司是亚洲规模最大、世界规模第三的活塞生产厂商,目前仍然以人工检测和接触式检测为主,近期正在开展基于视频设备的缺陷检测和精密测量。事实上,国内大多数活塞生产厂家缺陷检测环节还是使用人工检测和接触式检测两种方式。调研发现,国内外学者及企业在使用图像分析技术检测活塞外表面缺陷方面的工作尚少,而与其他工件相关的缺陷检测研究则有不少工作。目前,基于图像处理的工件缺陷检测的方法主要分为4类:基于缺陷特征分析的检测方法,基于缺陷分割的检测方法,基于模板匹配的检测方法,基于深度学习的检测方法。
基于缺陷特征分析的检测[3-4]方法是指根据工件缺陷与非缺陷特征的差别来分类缺陷,如文献[4]就将局部二值模式(Local Binary Pattern, LBP)和局部图像方差强度结合起来,设计了一种自适应阈值的方法把金属圆柱体表面的多种缺陷检测出来。基于缺陷分割的检测方法[5-8]是指使用图像分割技术[9]分割缺陷,如文献[6]通过分析活塞表面缺陷特点及缺陷在视觉上成像的难点,设计了一套光源来使缺陷更明显地呈现出来,然后用固定阈值分割出缺陷,该方法适用的对象是表面纹理简单的活塞,使用该方法分割含有水平纹理的活塞表面将会出现很多误报;文献[8]提出了使用改进的Zernike矩亚像素边缘检测算法,得到更为精确的缺陷边缘,分割出微小的缺陷。基于模板匹配[10-11]缺陷检测方法包括用小区域模板匹配和标准模板匹配等,如文献[10]提出的小区域模板匹配来检测发动机缸的缺陷。文献[11]采用标准模板匹配法,使用外轮廓矩形重绘算法,先获得工件的位置,再差分得到缺陷的几何特征。基于深度学习[12-14]的检测方法是最近比较常见的一种检测方式,如文献[13]使用遗传算法确定参数,再使用神经网络对钢带缺陷进行分类。由于数据集的构建非常昂贵耗时,文献[14]提出了一种基于小样本训练数据的通用方法。
上述4种方法主要是针对非活塞工件的缺陷检测方法。这些方法都仔细考虑了所要检测工件自身特点和缺陷特征,然后根据这些独特特征设计相对应的算法检测缺陷。由于活塞表面具有一些独有特征,使得上述检测方法难以进行直接移植,这些特征包括:①相同型号的活塞在相同的光照、环境和角度下,拍摄得到的图像相似;②活塞表面上有均匀的水平纹理,如图2(a)所示,在出现缺陷的区域水平纹理发生了明显的变化,如图2(b)所示;③缺陷及其附近区域在图像中呈现出灰度不均匀的特点,与正常模板图像相比较,灰度差别比较大。根据这些特点,并结合前述4种检测方法,笔者提出了一种有效的基于尺度不变特征转换算法外轮廓配准的活塞外表面缺陷检测方法。
1 基于外轮廓配准的缺陷检测方法
图3 算法流程图
新方法主要是考虑到活塞外轮廓的复杂性和表面纹理的特征,其具体流程如图3所示。首先,在特定的光照条件下,对不同型号和规格的标准活塞进行多角度的图像采集,建立标准模板库;其次,在相同光照条件下,对当前待检测的活塞进行图像采集;接着,根据当前图像的角度信息调用对应型号和角度的模板图像,利用尺度不变特征转换(Scale Invariant Feature Transform, SIFT)算法[15-16]对活塞外轮廓进行配准,从而得到模板图像和待检测图像相对应的区域。之所以对活塞外轮廓进行图像配准[17-18],是因为活塞外轮廓有明显的特征点,活塞内部没有明显特征点,详细分析参见1.2节。之后,再使用固定大小的窗口从左向右依次遍历两幅图像的相对应区域,提取窗口内的特征,包括灰度均值、灰度方差、垂直投影、水平投影。最后,比较两个窗口的特征值,如果两个窗口内特征值差别较大,则判定待检测窗口内存在缺陷,使用窗口位置作为缺陷位置,并用矩形标注缺陷位置。
1.1 图像采集与模板库建立
由于研究对象活塞近似圆柱体,每次拍摄都不能完全覆盖活塞表面。为了全面检测缺陷,需要活塞在工位上360°旋转,其工位示意图如图4(a)所示。在一个密闭的空间内,配合相同的光源和固定的相机,旋转活塞,每隔固定角度拍摄一张图像,图4(b)是相机拍摄图像的预览图。每检测一批活塞,先对标准活塞进行图像采集,作为模板图像,建立标准模板库。
图4 工位示意图及图像预览
在建立标准模板库的过程中,必须保证光照的稳定性和相机位置的固定性,旋转标准活塞在固定的角度拍摄第一张图像,然后按照指定方向每间隔一定角度旋转到已知的角度上后再拍摄另一张图像,并使用活塞型号和角度信息对模板图像进行命名。对待识别活塞的图像采集与标准活塞的图像采集一样,待识别图像也是以活塞型号和角度信息命名。在模板调用中,以角度信息作为先验条件调用模板库的模板图像。
1.2 外轮廓配准
在图像采集过程中,由于活塞工位是旋转拍摄图像,会造成模板图像和待检测图像角度上微小的差异,影响缺陷检测的结果。因此,在缺陷检测之前需要对图像进行配准,使模板图像和待检测图像的相对应区域在空间上对准,得到两幅图像相对应的区域。由于尺度不变特征转换算子具有图像局部旋转和尺度缩放的不变性、对噪声的稳定性、较高的匹配准确性等优点,故选择尺度不变特征转换算子作为图像匹配的算子。
1.2.1 尺度不变特征转换算法基本原理
(1)在高斯尺度空间中寻找极点。在高斯尺度空间寻找关键点是指找到在连续尺度变化下位置不变的特征点。定义一幅图像的高斯尺度空间L(x,y,z)为
L(x,y,z)=G(x,y,σ)*I(x,y) ,
(1)
(2)
其中,I(x,y)表示原始图像,G(x,y,σ)是尺度空间可变的高斯函数,*表示卷积,σ2表示高斯滤波器的方差,σ的大小决定图像的平滑程度。为了有效地在尺度空间上寻找极值点,又定义了高斯差分空间,利用不同尺度上的高斯核函数与图像卷积生成,其表达式D(x,y,σ)如下所示:
(3)
其中,kσ和σ是两个连续图像的平滑尺度。每个采样点都要和它所有相邻点比较,相邻点包括同尺度的相邻点和相邻尺度的相邻点。如果采样点是最大值或者最小值,则该采样点标记为一个候选的特征点。
(2)确定关键点。对高斯差分空间内不同尺度上的特征点进行定位和拟合,去除掉不稳定及图像边缘的特征点,最后剩余的特征点作为关键点。
(3)确定特征点主方向。对于确定的关键点,采集所在高斯金字塔图像领域窗口各个像素的梯度和方向,并使用梯度方向直方图来表示,梯度方向直方图的峰值表示为特征点的主方向。
(4)生成特征点的特征向量。首先把坐标转换成特征点的主方向,确保旋转的不变性,然后生成128维的特征向量,特征向量再进行归一化处理。其中,每个特征点都包含3个特征:位置、尺度和方向。
(5)特征点匹配。利用Best Bin First(BBF)算法搜索每个特征点在目标样本上的最近邻点与次近邻点,并计算对应特征向量的欧氏距离;最近邻欧式距离与次近邻欧氏距离相除之后,其值与设定阈值比较,小于阈值则接受这一对匹配点,阈值通常为0.8。
1.2.2 基于尺度不变特征转换的外轮廓配准
根据图1中活塞侧表面结构可知,活塞表面包括销孔、凹槽、毛糙表面、光滑表面以及活塞外边缘。图5是活塞侧表面的局部特写。可以看出,毛糙表面的纹理过于丰富并且光滑表面几乎没有明显特征,在进行图像配准时会产生很多的错误匹配点,如图6(a)所示。销孔边缘及活塞外边缘等都含有明显的特征点,使用明显的特征点可以增加图像配准的准确性。因此,只对有明显特征点的活塞外轮廓进行图像配准。
图5 活塞的局部特写
图6 尺度不变特征转换图像匹配的效果图
工位的旋转使待检测图像和相对应模板图像的拍摄角度有微小的偏移,可以看作是活塞的平移。根据该特点,在利用尺度不变特征变换算法做特征匹配的时候,正确匹配角点的连线有以下两个特点:①正确匹配角点的连线是水平的直线;②正确匹配角点的连线距离相同。根据特点设计算法去除错误的匹配点:
(1)计算对应特征点的相似度。相似度是利用两个特征点的特征向量求出来的欧氏距离,计算出所有对应特征点的相似度,并统计最小相似度,只保留小于4倍最小相似度的角点。
(2)计算连线的角度。根据正确特征点的连线趋于水平,需要求出各个对应角点连线角度,可以用斜率表示连线的倾斜程度,斜率tanθ的计算公式为:
(4)
其中,模板图像特征点坐标(x1,y1),待检测图像的特征点坐标(x2,y2),当tanθ<0.05或者tanθ>-0.05,即连线角度处于-3°和3°之间时,保留特征点。
(3)计算连线的长度。根据正确特征点的连线的距离一致,需要求出对应特征点连线的距离,再求距离的众数。求距离D的公式为
(5)
统计出现次数最多的连线距离作为连线距离的众数,保留距离长度为众数的特征角点。
消除错误匹配点的结果如图6(b)所示。该方法能够有效地消除由活塞表面无明显特征点而产生的错误匹配点,保留活塞外轮廓的正确匹配点,再利用保留的匹配点来确定两幅图像的相同区域。
1.3 缺陷检测算法
1.3.1 窗口特征提取
由于活塞毛糙表面本身就是凹凸不平的,微小的划伤和磕碰对其影响不大,所以只对光滑表面的缺陷进行检测,缺陷类型如图7所示。缺陷部分在活塞光滑表面上表现为局部灰度不均匀,并且水平投影以及垂直投影与模板图像的差别变大。因此,利用窗口特征比较的方式来判窗口内是否存在缺陷。
图7 光滑表面和各种缺陷
采用固定大小的窗口对模板图像和待检测图像相对应区域同时进行从左至右、从上至下的遍历。窗口内灰度变化的剧烈程度可以使用窗口内灰度均值和灰度方差表示。窗口内灰度均值M和灰度方差的S2表达式如下:
(6)
(7)
其中,I(x,y)表示坐标(x,y)点的灰度值,w为窗口的宽,h为窗口的高。
垂直投影的计算方式是统计窗口内每列各点的像素之和,计算每列的平均灰度,然后根据每一列的平均灰度画出垂直投影。根据图8可知,没有缺陷的图像和标准图像的垂直投影相似度极高,含有缺陷的图像和标准图像的垂直投影有很大差异。所以我们根据窗口内垂直投影的相似度来判断是否有缺陷。
使用巴塔恰里雅距离(Bhattacharyya Distance,BD),又称巴氏距离表示垂直投影的相似性。具体计算过程如下:首先计算模板窗口垂直投影的概率分布P={p1,p2,…,pw}和待检测窗口垂直投影的概率分布Q={q1,q2,…,qw}。pi和qi分别表示模板窗口和待检测窗口第i列的概率,巴氏距离B的计算公式为
(8)
图8 活塞表面及其垂直投影(模板图像(a)与其对应无缺陷图像(b)的垂直投影分别为(e)和(f),模板图像(c)与其对应有缺陷图像(d)的垂直投影分别为(g)和(h))
水平投影的计算方式是统计窗口内每行像素灰度值总和,计算每行像素的平均灰度,然后根据每行的平均灰度画出水平投影。由于活塞光滑的表面上有横向的纹理信息,在没有缺陷的情况下,水平投影为规则的波峰和波谷,在存在缺陷的情况下,波峰和波谷会有很大的差别,如图9所示。模板窗口水平投影和待识别窗口水平投影波峰做差,得到极大值差值序列,再求极大值差值序列的方差记为d,根据d的大小来判断窗口内是否有缺陷。
图9 活塞表面的水平投影(模板图像(a)与其对应无缺陷图像(e)的水平投影分别为(b)和(f),模板图像(c)与其对应有缺陷图像(g)的水平投影分别为(d)和(h))
1.3.2 窗口内的特征比较
待检测图像窗口和模板图像窗口进行特征比较时,为了准确地检测缺陷,制定了如下规则:
(1)当两个窗口内灰度均值之差大于设定的阈值T1并且灰度方差之差大于设定阈值T2时,记f1=1,否则记f1=0;
(2)当垂直投影相似度参数巴氏距离B大于设定阈值T3时,则记f2=1,否则记f2=0;
(3)当极大值差值序列的方差d大于设定阈值T4,则记f3=1,否则记f3=0;
(4)仅当模板窗口和待检测窗口进行比较时,其灰度变化相差较大、垂直投影不相似、水平投影的规律被打乱,即f1+f2+f3=3时,窗口内一定存在缺陷,保存含有缺陷的窗口位置。
模板图像窗口和待检测图像窗口灰度特征的差别大小和模板图像窗口本身的灰度变化有关系。如果模板图像窗口本身灰度变化剧烈,则两个窗口的灰度特征差别也比较大,反之,两个窗口的灰度特征差别比较小。其中灰度变化的阈值T1和T2可以由模板图像线性回归估计得到。其线性回归的模型如下式:
y=w0+w1x1+w2x2+…+wnxn,
(9)
其中,w0,w1, …,wn为系数,x1,x2, … ,xn为自变量,y为因变量。首先,将模板图像平分为多个40×40窗口。然后,将每个窗口的垂直投影作为40维的自变量,灰度的均值和方差作为两个因变量y1和y2,使用所有的窗口分别去拟合y1和y2线性回归方程。求各个窗口分别到两个函数的距离,距离的均值作为均值和方差的阈值T1和T2。垂直投影的相似性和水平投影的规律性分别由当前待检测图像窗口和模板图像窗口之间的垂直投影和水平投影的差别决定,所以T3和T4可以使用固定阈值表示。在实际实验中,当T3为5、T4为6时,能够取得好的检测效果。
2 实验结果与分析
在实验室测试过程中,使用两种不同型号的活塞型号,分别记为型号1和型号2,使用分辨率4 000×3 000相机配合稳定的光源拍摄得到的图像如图10所示。随机挑选422张两个不同型号的活塞图像做测试,其中,型号1活塞200张,型号2活塞222张。
利用尺度不变特征转换算法对活塞外轮廓进行图像配准的过程中,会出现一定数量的错误匹配点,使用1.2.2节提到的错误匹配点消除的算法,就可以得到正确匹配点。再根据正确的匹配点来得到两幅图像的相同区域,其相同区域如图11所示。对422张待检测图像和其对应模板图像配准的结果进行统计,其中422张图像匹配正确,即配准正确率为100%。
图10 测试的活塞型号
图11 经图像配准得到的相同区域
对待检测图像和模板图像的相同区域同时用固定大小的窗口进行遍历,并且提取窗口内的灰度均值、灰度方差、垂直投影和水平投影,比较两个窗口内的这些特征来判断待检测图像的窗口内是否存在缺陷。其中各种类型缺陷检测结果如图12所示,矩形部分标明的是缺陷部分。在算法测试中,表面检测的结果如表1所示。检测正确是指正确检测到待识别图像中是否含有缺陷并标记缺陷区域,漏报是指在含有缺陷的部分并没有标注为缺陷区域,误报是指不含缺陷区域被标注为缺陷区域。检测准确率是指检测正确数目与待检测数目的比例,漏报率是指漏报数目与待检测数目的比例,误报率是指误报数目与待检测数目的比例。由表1结果可知,在所测试的422张图像中,包含缺陷图像96张,其中算法检测准确率约是94.78%,误报率约是4.02%,漏报率约是1.18%。不同类型的活塞检测准确率也不同,对于型号1的活塞检测准确率约为94.5%,对型号2的活塞检测准确率约为95.04%。表2表示各种类型的缺陷检测情况,其中检测斑点缺陷准确率约为91.66%,划痕缺陷的准确率约为98.30%,缺口缺陷的准确率约为84.61%。
图12 缺陷检测结果示意图
表1缺陷检测的结果
样本类型待检测数目缺陷图像数目检测正确数目漏报数目误报数目型号12006818947型号222228211110合计42296400517
由上述实验结果可知,该算法对不同型号活塞检测的准确率均高于94%,即该算法能够比较准确地检测缺陷并且对不同型号的活塞有较强的适应性。但该算法还不能完全满足工业上的需求,还存在一些误报和漏报的情况。误报出现的原因是模板图像和待检测图像的反光区域不在同一个位置,则反光区域灰度差别比较大,造成误报。漏报的原因是缺陷太过于微小,或者缺陷区域的灰度与模板对应区域的差别很小。为了提高算法的准确率,切实满足工业上的需求,下一步我们将严格控制图像采集的条件,使缺陷可以完整地在图像中呈现出来,从根源上提高准确率。另外还需要更为仔细地观察缺陷区域和非缺陷区域的差别,提取其他特征,从而可以检测出一些微小的缺陷。
3 结束语
根据活塞侧表面特有的纹理特征以及缺陷区域在侧表面上的灰度特点,提出了基于尺度不变特征转换算法外轮廓配准的活塞外表面缺陷检测方法。首先使用尺度不变特征变换对活塞外轮廓有明显特征点的区域做图像匹配,然后在对应的相同区域进行依次窗口遍历,并计算窗口内的特征进行特征比较,最后判断窗口内是否存在缺陷。经实验证明,这种方法容易实现并且具有较高的准确率,并且对于不同类型的活塞有较强的适应性。但是,该方法中仍未完全满足工业上的需求。下一步,将从优化光源和完整的提取缺陷的特征方面入手,提高算法准确率。