APP下载

一种基于机器视觉的表面缺陷快速检测方法*

2021-09-26周国栋

机电工程技术 2021年8期
关键词:特征描述极值尺度

周国栋

(湖南广播电视大学网络技术学院, 长沙 410004)

0 引言

表面缺陷检测是工业产品质量检测的重要内容,常见的工业产品表面缺陷种类主要有裂痕、凹陷、色斑等。

采用机器视觉进行产品表面缺陷快速检测具有非接触、机械结构简单等优点,近年来,如何实现机器视觉的快速识别成为研究热点[1-3]。李庆利等[1]利用颜色特征,以区分产品表面缺陷和背景颜色,再利用基于彩色空间的聚类方法设计出一种快速识别方法,但彩色空间对光源环境非常敏感,检测不稳定,且检测时间长,不易小型化;张军[2]提出一种利用小波变换进行频域滤波和特征识别的方法,用于表面缺陷的快速检测,但基于频率的处理方法容易受到复杂纹理背景的干扰,有一定的局限性;晁云等[3]采用模板识别的方法,将合格表面图像设置为模板,再和待检表面进行对比,最后用局部门限处理算法实现快速缺陷特征快速识别,但该方法只适合于固定背景情况,对于变化的纹理背景就无能为力了。

以瓷砖的表面缺陷检测为例,目前,该领域生产实际中的检测主要依靠人工,机器视觉应用较少,阻碍其应用的主要原因是该领域生产环境较复杂。一是表面缺陷种类多,且形态各异,无法利用标准的模板进行识别;二是生产过程留下的非缺陷干扰较多,比如手印、水渍、碎石等,和缺陷特征在图像上较为相似,加大了视觉检测的难度,而要做到检测前彻底清除干净,也十分困难。另外,工业现场检测环境还往往存在检测位置的变化、光源角度的变化等情况。在复杂的干扰环境下,传统视觉检测方法无法获得满意的检测精度。

SIFT 图像特征具有尺度不变、旋转不变等特点,在表面缺陷识别应用上,表现出独特的优势。周鹏[4]应用SIFT算法对钢板进行了表面缺陷检测,准确率高达95%;王星等[5]在药用玻璃瓶印刷图案缺陷检测上运用SIFT特征识别,有效提升了检测效率和精度;曾瑞篷[6]运用SIFT特征对汽车保险盒缺陷进行在线检测,检测精度提升了5.8%。

目前国内外利用机器视觉进行表面缺陷检测的方法主要有3种,分别是基于像素统计的直方图方法,基于卷积神经网络方法和基于SIFT 等特征描述方法。在有复杂干扰情况下,SIFT 表现出较强大的鲁棒性和抗干扰能力,但该方法的相关参数设置非常复杂,直接影响检测效率和精度,本文将给出相应的设置方法和经验公式,提高该方法的应用效率。

1 SIFT算子检测原理

为更好地描述图像特征,Lowe等[7]设计了一种具有尺度不变、角度不变的特征变换算子(Scale-invariant Feature Trans⁃form , SIFT)。该算法的特点是提取目标区域的局部特征,并能对成像焦距、亮度、旋转角度等变化因素保持不变,也能对图像噪声干扰保持较好的鲁棒性。尤其是在目标遮挡(Occlusion)、杂物场景(Clutter)等复杂环境下,传统的基于颜色统计或基于边缘面积、边缘形状等方法很难凑效。

SIFT 算法的关键是找出图像中特征点,并计算出其特征描述,最后用这些特征描述和样本进行比对, 如果匹配的点足够多,则可以判定其类别。其大致步骤如图1 所示,具体如下。

图1 SIFT图像金字塔

(1)第1 步,为了特征点具有缩放不变特性,先对图像进行分组(Oc⁃tave),按照1/2降采样得到不同组数,图1列出了2组。

(2)第2 步,为了特征点具有模糊(尺度)不变特性,对每组图片进行不同尺度的高斯模糊,得到尺度组的不同图层,图1列出了6层。

(3)第3 步,为了得到图像亮度变化的极值点来作为候选特征点,利用高斯差分(DOG)来提取图像边缘。如图1所示,将第6层和第5层相减,得到高斯差分组的1层,以此类推,可以得到5层高斯差分组。最后从高斯差分图像中计算出极值点作为初步特征点。

(4)第4 步,过滤掉不好的特征点,包括两类,一是对比度低的点,二是不稳定的边缘响应点。其原理是将候选特征点及其附近的点拟合,利用导数为零,求出其确切的亚像素极值点。并计算出这些极值点的对比度,设定对比度阈值T,剔除掉对比度低的特征点。对于边缘响应点,则是利用DOG图像的Hessian矩阵来计算特征点的主曲率。设定边缘阈值Tr,剔除掉小于Tr的特征点。

(5)第5 步,计算特征点的主方向,并生成特征描述矩阵。在以特征点为中心、3×1.5δ为半径的区域内,统计图像特征点的幅角和幅值,以统计直方图的峰值作为主方向。得到主方向后,以主方向为中心取8×8 的窗口,并求取每个像素的梯度幅值与梯度方向。最终,一个特征点产生出128 维的SIFT特征向量,N个特征点生成一个N×128的特征描述矩阵。

(6)第6 步,分别得到缺陷模板图像和待检测图像的特征描述矩阵后,最后用K近邻算法找出与模板特征点向量欧式距离的最近邻和次近邻点。如果最近邻距离小于次近邻距离的70%,则认定为匹配点。

2 SIFT算子参数确定与优化

SIFT 的本质是特征点选取与特征信息描述,目的是产生能不随图像尺度和方向等因素干扰的特征数据,从而实现图像块识别的鲁棒性。但该算法数据处理量较大,耗时较长。这使得其在实时检测场合难以适应。本文将通过减少SIFT特征点数量,提高特征点独特性,以达到压缩特征描述矩阵的目的。优化SIFT算子的参数设置是减少特征点提取数量的一个非常有效的办法。

2.1 图像金字塔组数的确定

图像金字塔组数(Octave)关系检测的精度和速度,这个参数的确定,一般会使用如下的经验公式[7]:

式中:p为图像组数;m和n分别为图像长和宽;a为补偿值,具体数据可根据实际图像处理速度和精度来确定。

本文中,机器视觉获取的原始图像尺寸为[512,512]。用间隔取值法将原始图像不断缩小,直到全部图案特征都不能识别,这时的尺寸若为[20,20],按照SIFT 规则,每次按1/2尺寸进行变换,从512 压缩到20,需要不少于5 次变换。由此,a值可取为4,最后得到图像金字塔的组数p应该设置为不小于5。

2.2 尺度空间初始值的确定

尺度空间,简单理解就是图像的模糊程序,一般使用高斯模糊不断处理图像,随着尺度的增加,图像细节逐渐融合,大的轮廓依然可见,从而可以实现提取轮廓的目的。尺度空间δ的经验公式如下:

式中:o为金字塔的分组序号;s为同一组的图像层号;δ0为尺度空间的初始值;S为金字塔中每组的层数。

按照经验,常规应用中,设置δ0=1.6,S=3即可满足要求[7]。

研究发现,δ0的取值会直接影响检测的精度和效率。尺度过小,细节的模糊不够充分,带来极值点数量过多,处理负担重,效率低。反之,尺度过大,有可能让重要边缘信息丢失,识别准确率下降。本项目经过大量实践得到δ0的取值经验公式:

式中:k为待识别图形的极限尺寸。

比如,表面缺陷极限识别尺寸约占2 个像素,则δ0可以设置为0.7。

图2 所示为不同尺度空间值,所检测出的特征点(kpn)数量以及分布情况, 由 图 可 知,δ0=0.7时, 特征点数量较为合适,分布也较为均匀。

图2 不同尺度空间对特征点的影响

2.3 对比度阈值的确定

得到高斯差分组后,接下来的是提取图案边缘的极值点。其方法是,对比图层上的点,及其所在组相邻层3×3邻域的26点,若该点为亮度最大或者亮度最小,即判断为极值点。

由于椒盐噪声的干扰,可能存在来自非图形轮廓的极值点。为了更准确地获得边缘极值点,需要对极值点进行修正,修正的原理是采用泰勒级数进行拟合,设偏差为Δx,得到拟合公式如下:

实际特征点的导数应该为零,如下:

正常的边缘极值点往往具有较大的对比度,需要筛掉低对比度的极值点,跟其他几个参数一样,设定一个对比度阈值CT来进行过滤。一般来说,CT的经验值是0.04。

来自图案边缘特征点对比度相对内部纹理细节要大,因此,如果检测方案只需要提取物体的轮廓特征来进行识别,可以将阈值CT适当加大,反之则应该适当减小,以提取更多局部纹理特征。

另外,尺度变化处理,也就是图像的模糊过程也会带来对比度的改变,也可以参考模糊核的尺寸来设置CT值。将图像数据标准化后,若高斯函数方差值δ0=0.7,则对称中心和DOG 差值都约为0.32。按照70%极值点为有效数据,可估算出对比度阈值CT=0.2。

图3所示为采用不同的对比度阈值(CT),缺陷图像所检测出的极值点(kpn)数量以及分布情况,对比可发现,当CT=0.2时,极值点数量较少,且分布较为均匀。

图3 不同对比度阈值对极值点的影响

2.4 图像边框极值点阈值

完成低对比度极值点剔除后,还需要剔除多余的图像边框极值点。过滤的依据是综合像素点的横向和纵向梯度信息来判断。跟对比度过滤类似,通过设定阈值ET来实现。

ET的经验值是10,研究发现,ET取值跟图像处理速度有较大关系,尽可能减小该阈值,减少边框极值点,可以提升检测速度。但该值过小,会让图像内部特征点也被误判为边框点,降低检测精度。应该按图案区域和边框梯度的大致数据范围来合理设定阈值。图4所示为表面缺陷检测中,不同的ET值对极值点获取的影响。可以看出,ET=3时较为合适,此时极值点分布均匀,数量也较少。

图4 不同边框极值点阈值对极值点的影响

3 实验与结果分析

特征点的合理提取是SIFT算法最主要的工作,表面缺陷的检测主要依靠大量特征点数据集。

本文的实验主要环境配置为:操作系统为Windows7,软件 IDE 为 Python7.0 + OpenCV4.0, GPU 显 卡 为 Ge⁃Force-GTX-1650。

测试的表面缺陷主要包含凹陷、裂纹和斑点,检测包含两个数据,分别是缺陷检出率和缺陷误检率。本项目实验对比3种应用算法的检测效果,分别是基于统计图案统计Match⁃Template、基于SIFT 算子的特征识别方法和基于人工卷积神经网络CNN算法。对比结果如表1~2所示。

表1 缺陷检出率对比

表2 缺陷误检率对比

从检测效果来看,统计方法是最不理想的,人工神经网络在裂纹检测上有较好效果,在凹陷和斑点的检测上具有一定局限性。

出现这种结果的原因跟各自检测的原理有关系,统计学方法对图像的尺度、对比度、缺陷形态敏感,对于没有固定形态的缺陷效果欠佳,而卷积神经网络对于污渍等干扰图案不能有效区分,所以只对裂纹检测效果较好。SIFT 表现出具有良好抗干扰能力的特性。

4 结束语

本文介绍了SIFT算法的识别原理,并给出了相关参数的设置方法和经验公式,最后通过实际表面缺陷的检测,对比验证了SIFT算法较强的鲁棒性和抗干扰能力,以及相关参数设置方法的正确性和可行性。

实验数据表明,SIFT 算法在凹陷类和斑点类缺陷的检出率上具有明显优越性,在裂纹类的误检率上也具有较大优势。特别是在有干扰图像情况下,检出率比神经网络提升了20%,误检率降低了3%。

但SIFT算法也存在一定的局限性,主要表现在检测时间上,比神经网络慢了近一倍,还需要进一步进行研究和改进。

猜你喜欢

特征描述极值尺度
船舶尾流图像的数字化处理和特征描述技术
极值点带你去“漂移”
极值点偏移拦路,三法可取
财产的五大尺度和五重应对
一类“极值点偏移”问题的解法与反思
目标鲁棒识别的抗旋转HDO 局部特征描述
用于三维点云表示的扩展点特征直方图算法*
借助微分探求连续函数的极值点
宇宙的尺度
基于差异的图像特征描述及其在绝缘子识别中的应用