杨 飞,罗建桥,李柏林,熊 鹰
(西南交通大学机械工程学院,四川 成都 610031)
铆钉是一种重要的紧固件,其质量直接影响了铆接性能。传统的铆钉缺陷检测依靠人工抽检完成,效率低、可靠性差,难以满足现代化生产的需求。因此,通过机器视觉的方式,基于铆钉图像完成表面缺陷的检测具有重要的工程价值。目前有许多缺陷检测的方法,文献[1]由差影法得到差分图像,设定阈值去除伪轮廓和噪声,完成轴承缺陷的检测,可靠性差。文献[2]通过形态学和自适应阈值处理,分割出板材缺陷区域,易受到噪声点的干扰。改进的OTSU方法[3]在保证类间方差最大的同时使类内方差最小,可以有效地分割出背景和铆钉图像,减少背景的影响。由于生产工艺的问题,常见的铆钉表面缺陷有凹坑、裂纹、折叠等,如图1 所示。由于铆钉表面的缺陷形式多样,形态不定,上述方法对于随机纹理表面的检测效果不佳。铆钉表面缺陷检测的实质是纹理分类问题,局部二值模式(Local Binary Pattern,LBP)作为目前最好的纹理描述子之一,广泛应用于纹理缺陷的检测。文献[4]通过提取LBP 纹理特征,完成对拉链布边的缺陷检测。文献[5]将织物图像划分子块,提取子块图像的LBP 和方向梯度直方图(Histogram of Oriented Gradient,HOG)特征,获取准确的纹理信息,检测并标记出有缺陷的子块。但LBP 对噪声十分敏感,邻域像素值的细微变化将导致局部模式的不同。研究发现,图像的纹理信息大多在均匀模式,噪声信息大多处于非均匀模式[6]。文献[7]的均匀模式LBP,根据相邻二元值的跳变次数,将LBP 编码分类为均匀模式和非均匀模式,可以一定程度消除噪声。文献[8]的局部三值模式(LocalTernaryPatterns,LTP)算子采用两个量化阈值得到三进制模式编码,增强了抗噪性能;在LTP 的基础上,文献[9]提出了一种抗噪LBP 编码算法(Noise-Resistant LBP,NRLBP),引入模糊性编码,通过误差纠正机制完成特征编码,提高了对于噪声的鲁棒性。NRLBP 阈值的选取需要大量的实验验证,难以选取合适的阈值。由文献[9]可知,NRLBP 的阈值是对图像噪声的抑制,阈值t与图像的噪声水平成正相关,若能计算出图像噪声水平,则可以得到合适的阈值。文献[10]通过PCA 分解,将图像子块的协方差矩阵的最小特征值作为噪声估计,估计值小于真实噪声水平。文献[11]将图像子块PCA 分解后,选取m个最小特征值的中值作为噪声估计,较准确地估计出图像的噪声水平。
图1 不同类型的铆钉图像Fig.1 Rivet Images of Different Types
综上所述,铆钉表面缺陷检测存在以下问题:铆钉表面缺陷复杂多变,LBP 对噪声十分敏感,改进的LBP 难以选取合适的阈值等。针对以上问题,提出一种自适应阈值抗噪LBP 的铆钉表面缺陷检测算法(Adaptive Threshold NRLBP,AT_NRLBP),在继承NRLBP 优点的基础上,通过图像子块的噪声估计,自适应选取编码阈值,更准确地获取铆钉表面的纹理特征信息。首先,将图像均匀分块并标记出背景子块和铆钉子块;然后,对铆钉子块图像的协方差矩阵PCA 分解后,从大到小排序特征值λ,选取m个最小特征值的中值作为噪声估计σ;根据噪声强度σ 计算阈值t,编码铆钉子块得到NRLBP 特征;最后,在SVM 中训练子块特征得到单分类器,完成铆钉表面缺陷的分类。实验结果表明,这里方法可以有效地检测出铆钉表面的缺陷。
LBP 通过比较中心像素x与其邻域系统像素xi的大小,记Δ=xi-x,若Δ≥0,则标记s为1;否则,标记s为0。将所得标记S按顺序排列成一个局部二进制模式,其对应的十进制即为中心像素点的LBP 值,统计所有像素LBP 值的概率分布直方图h表示图像的纹理信息。s×s的矩形邻域系统,如图2 所示。由式(1)标记邻域系统后,按顺序排列标记得到8 位二进制数:11010011,中心像素的LBP 值为211。
图2 LBP 编码Fig.2 The Coding of LBP
为适应不同尺度的纹理特征,可用圆形邻域系统代替矩形邻域系统,且邻域系统可以扩展到任意大小。给定中心像素x及半径为r的圆周上等角间距均匀分布的p个邻域像素xi=[x0,x1,…,xp-1],通过改变参数对(r,p)的值,可以获得不同尺度上的LBP模式,如图3 所示。
图3 圆形邻域系统的LBPFig.3 Round Field System of LBP
圆形LBP 模式为:
式中:s(Δ)—一个符号函数。
若中心像素x位于原点(0,0),则邻域像素的坐标为(-rsin(2πn/p),rcos(2πn/p),没有位于图像像素中心位置的邻域像素采用双线性差值方式获得。基于p个邻域像素的LBP 模式总共有2p种,对应的直方图矢量维数为2p。因此,全局LBP 直方图矢量的维数随着p的增加成指数增长。
为了解决二进制模式维数过多的问题,可将传统LBP 模式分为均匀模式和非均匀模式两类。定义U表示LBP 二进制模式的圆周上,相邻两个二元值跳变(0→1 或1→0)的次数,例如:11000111 的U值为2,01010111 的U值为6。由式(3)可知,当U≤2 时的LBP 值归类为均匀模式,当U>2 时的LBP 值归类为非均匀模式。
图4 图像噪声对LBP 编码的影响Fig.4 The Image Noise Influence on LBP Coding
图5 LTP编码Fig.5 The Coding of LTP
为更好解决噪声对编码结果的干扰,NRLBP 提出了一种误差纠正机制:将阈值t内的像素编码为模糊值X,X可取值0 或1,改变X的值使LBP 编码满足均匀模式,无法生成均匀模式的编码则归类为非均匀模式。NRLBP 可以修正部分因噪声而变成非均匀模式的编码。
图6 NRLBP 编码Fig.6 The Coding of NRLBP
按式(6)进行NRLBP 编码,每个像素位置可以产生多个LBP 模式,如图6 所示。编码NRLBP 时,保留多个LBP 模式中的均匀模式,丢弃非均匀模式。具体编码过程如下:
(1)模糊编码。按式(6)得到模糊编码C(X);
(2)NRLBP 编码。改变模糊编码中X的值,使NRLBP 编码满足均匀模式,记m为NRLBP 中均匀模式的个数;
(3)NRLBP 直方图。若m=0 则,非均匀模式累加1;若m>0,按1/m权值累加均匀模式。
在实际NRLBP 编码过程中,建立特征编码映射表,实现特征值与编码结果的对应,极大地提高计算速度。
对同一张铆钉图像进行纹理特征编码,不同编码方式的直方图,如图7 所示。
图7 不同编码方式的直方图Fig.7 Histograms of Different Coding Methods
LBP 特征维数最高,共256 维;LTP 特征由正、负两个二值模式串联,共118 维;均匀模式LBP 和NRLBP 的特征维数均为59 维。其中,LTP 的第59 维和第119 维、均匀模式和NRLBP 的第59 维是非均匀模式。对比不同特征的直方图可知:(1)均匀模式LBP 降低了特征维数,提高了特征的统计性,但其第59 维所占比例较大,许多有用信息被噪声淹没;(2)LTP 可以减少噪声的影响,但是LTP 缺乏一种噪声修正机制,其非均匀模式中仍包含许多被噪声污染的均匀模式;(3)NRLBP 中的非均匀模式由14.8%减少到6.1%,NRLBP 的误差纠正机制可以修正许多由噪声引起的非均匀模式,从噪声中提取有用的信息,准确表达图像内容。
NRLBP 的本质是从噪声中获取有用的纹理信息,在编码前对图像进行噪声估计,根据图像噪声σ 与阈值t的相关性,编码图像的NRLBP 特征,更加准确地获取图像纹理特征。
为分析图像噪声与NRLBP 阈值的相关性,文献[9]从AR 人脸数据库中选取具有高分辨率、高质量,且没有图像噪声的图像,人为添加均值零均值高斯噪声N(0,σ2)。分析不同噪声强度下,阈值与图像识别率的关系可以得出以下结论:(1)随着噪声σ 的增加,整体的识别率降低。这是因为随着噪声的增多,噪声对NRLBP 特征编码的干扰增大,识别难度增加。(2)最佳阈值t与噪声强度σ 成正相关,在t之前,识别率随阈值的增大而增长;在t之后,识别率随阈值的增大而降低。这是因为NRLBP 的阈值t是对噪声的抑制,在t之前,随着t的增加,可以修正更多由噪声引起的非均匀模式;在t之后,随着t的增加,许多真实的噪声也被修正为均匀模式,反而影响了识别率。由实验结果可知,噪声强度σ 与最佳阈值t的关系为:t=100σ。
由于铆钉表面的纹理较复杂,固定的阈值t难以准确表达图像的纹理细节。这里算法将图像均匀分块后,估计图像子块的局部噪声,自适应选取阈值编码NRLBP 特征,消除全局噪声的影响,更准确地描述图像局部的纹理信息。
图像子块协方差矩阵Σ 的特征值与图像噪声水平成强相关性。PCA 分解Σ,将特征值作为噪声估计。对于图像I∈RM×N,将其均匀划分成大小为d子块B={b1,b2,…,bn},其中bi∈Rd×d,n=(M-d+1)(N-d+1),子块的左上角坐标为({1,…,M-d+1},{1,…,N-d+1})。计算过程中,子块bi重新排列成一个向量r∈R1×d2。图像噪声模型为:
由于铆钉异常样本难以获取,铆钉表面纹理缺陷的形式多变且不可预测,采用SVM 单分类器完成铆钉表面缺陷的检测。算法流程,如图8 所示。具体过程如下:
(1)均匀分块。将图像均匀分成n块,B={b1,b2,…,bn};
(2)选取目标子块。设定阈值ε0,若子块bi二值图像中白色像素占比大于ε0,则标记1,表示铆钉子块;反之,则标记0,表示背景子块;
(3)噪声估计。PCA 分解铆钉子块的协方差矩阵∑,由3.2 节的噪声估计算法得到图像的噪声强度σ。
(4)NRLBP 特征。根据t=100σ,自适应选阈值t,由2.2 节的NRLBP 编码算法得到铆钉子块的纹理特征。
(5)分类器。训练NRLBP 特征得到SVM 单分类器。
图8 算法流程图Fig.8 Algorithm Flow Chart
实验数据来自铆钉实拍图像和KTH-TIPS 数据库。对于铆钉图像,对比文本算法与其他算法的分类结果,检测并标记出缺陷类别子块;对于KTH-TIPS 数据库,分别用这里算法和其他纹理分类算法提取特征,测试算法性能。计算机处理器为Intel(R)Core(TM)i5-6400 CPU@2.70GHz2.71GHz,内存8.00GB,在Matlab 2014a 环境下进行实验,实验结果为多次实验的平均值。
4.2.1 铆钉缺陷检测
经相机标定,图像测量分辨率为0.01mm。铆钉缺陷检测要求为:宽度大于0.05mm、长度大于2mm 的裂纹;面积大于2mm2的块状缺陷。铆钉图像大小为1000×1000,在图像均匀分块时,图像子块太大,会造成图像细节的丢失,降低识别率;图像子块太小,特征维数增加,计算量增大。为满足检测要求,选取子块大小40×40,步长为20。铆钉原图及二值图,将铆钉图像分块后,若子块的白色像素的占比ε 大于0.9,标记为1,表示铆钉区域;否则标记为0,表示背景区域,如图9 所示。
图9 铆钉原图及二值图Fig.9 Rivet Image and Rivet Binary Image
为加快铆钉检测速度,这里算法仅处理标记为1 的子块。铆钉子块分类为正常和缺陷两类,正常类别对应铆钉顶面的正常区域,缺陷类别包括裂纹、凹坑、折叠等区域。实验数据集共100 张铆钉图像,训练集和测试集各50 张,其中正常类20 张,三类缺陷各10 张。实验参数设置为:邻域半径取2,邻域个数为8;NRLBP 的固定阈值取t=5。将子块编码特征输入单分类SVM[5],确定图像子块类别。将正常类别检测为缺陷类别称为误检,误检率=误检图像/缺陷类图像总数100%;将错误类别检测为正常类别称为漏检,漏检率=漏检图像/真实缺陷图像总数100%。实验结果,如表1 所示。
表1 各纹理特征分类结果(%)Tab.1 Classification of Texture Features(%)
分析表1 的实验结果,可以得出以下结论:(1)LBP 特征的误检率最高,算法误检率最低。这是因为LBP 特征共256 维,由于噪声的影响,容易将正常类图像检测为缺陷;均匀模式LBP 将特征统计为均匀模式和非均匀模式两类,减少了噪声影响,误检率降低;NRLBP 通过误差纠正机制,进一步提取了噪声中的纹理信息;这里算法自适应选取阈值,准确地获取图像的纹理特征,误检率最低。(2)这里算法与LBP 的漏检率相当。这是因为LBP 特征保留了图像子块的所有纹理特征信息,对缺陷类别的描述更丰富;均匀模式LBP 在统计过程中丢失了部分纹理信息,漏检率最高。NRLBP 和这里算法修正了部分由噪声引起的非均匀模式,降低了漏检率。综上所述,这里算法对于铆钉缺陷的检测效果最好。
此外,设计一种可视化实验:在检测铆钉缺陷的过程中,对于背景、边缘和正常子块,将像素置0;对于缺陷子块,在图中标记出。实验结果,如图10 所示。算法能有效地检测出铆钉表面缺陷。
图10 铆钉缺陷检测结果Fig.10 The Results of Rivet Defect Detection
4.2.2 与其他算法的对比
为测试算法的性能,在公共数据库上,将算法与其他纹理特征算法对比。KTH-TIPS 数据库包含了810 张图像,共10 类,每类81 张,其中每类图像的光照条件、拍摄角度以及尺度不同。在数据库图像中添加不同强度的高斯噪声σ,如图11 所示。每类图像随机选取50 张作为训练集,余下的图像作为测试集,分别用算法和其他LBP 算法(包括传统LBP、均匀模式LBP 和NRLBP)提取图像纹理特征,完成图像的识别。参数设置与实验1 相同,实验结果,如表2 所示。分析表2 的实验结果可知,算法性能最好。这是因为传统LBP 编码过程单一,容易受到噪声的影响,识别率较低;均匀模式LBP 提高了特征的统计性,但是丢失了部分纹理信息;NRLBP 通过误差纠正机制,提取非均匀模式中的纹理信息,抑制了部分噪声的影响。算法通过噪声估计自适应选取编码阈值,更准确地表达图像,分类准确率最高。
图11 不同强度的高斯噪声图像Fig.11 Gaussian Noise Images of Different Intensities
表2 KTH_TIPS 数据库中不同算法的识别结果(%)Tab.2 The Results of Different Algorithms in KTH_TIPS Database(%)
铆钉缺陷检测可以看作纹理分类问题,传统的纹理特征提取容易受到噪声的干扰,无法准确表达图像内容。通过图像噪声估计自适应选取阈值,完成NRLBP 特征编码,可以准确地获取图像纹理信息。实验结果表明,这里算法能较好的分类铆钉表面缺陷,误检率低,在KTH-TIPS 数据库中的分类准确率较高。此外,映射表的建立极大地加快了检测速度,算法能满足检测需求,适用于现代化生产。