傅 莉,吉宏轩,张宇峰,任 艳
(1.沈阳航空航天大学 自动化学院,辽宁 沈阳 110136;2.渤海大学 物理科学与技术学院,辽宁 锦州 121013;3.沈阳航空航天大学 人工智能学院,辽宁 沈阳 110136)
玻璃瓶作为日常生活中不可或缺的必需品,因为具有化学稳定性好、易于密封和透明等特性而优于其他材质的瓶子,因此被广泛应用于饮品、食品、药品和化工制品等产品的包装。在玻璃瓶的生产过程中由于环境、生产工艺的限制,生产出的玻璃瓶质量难免有缺陷,会对玻璃瓶的美观甚至使用造成较大影响,因此针对玻璃瓶缺陷的检测研究具有重要意义。
近年来,众多研究学者将效果较好的特征提取算法加以改正并应用于机器视觉领域。例如双重降维方向梯度直方图(Histogram of Oriented Gradients,HOG)特征提取算法[1]、多元局部二值模式(Local Binary Pattern,LBP)特征提取算法[2]以及F-SIFT特征提取算法[3]等。2017年,Chrysafi等[4]利用主动红外热成像技术进行无损检测,并设计了一种基于二维小波变换和一维傅里叶变换的机器视觉系统,用于检测碳纤维复合材料层合板中2种不同类型的缺陷。同年,Jian等[5]设计开发了一种机器视觉系统,用于识别和分割手机屏幕玻璃的缺陷。对于振动引起的错位采取了基于边界的配准方法创建模板图像;此外,还将图像减法和灰度投影相结合,以减少环境照明的波动,最后提出了改进的模糊c均值聚类算法对手机屏幕缺陷进行分割。
2019年,Zhou等[6]设计了一种基于机器视觉的实时瓶底检测装置,并提出了以显著性检测和模板匹配为主要手段的缺陷检测框架,并得到了较好的检测性能。2020年,Zhou等[7]针对玻璃瓶瓶底的纹理区域缺陷难以检测等技术难题,设计了一个表面缺陷检测框架,提出了一种将最小二乘圆检测和熵率超像素与改进的随机圆检测相结合的算法,用于准确获取瓶底的感兴趣区域。Fu等[8]融合中值滤波、Canny算子、几何特征提取及OTSU等经典图像处理方法检测透明玻璃药瓶瓶口的裂纹、缺边、污点等缺陷。2021年,Zhao等[9]另辟蹊径,从玻璃瓶敲击声信号中提取特征,提出了一种改进的特征选择算法,并通过将该算法与高性能分类器结合,在大量的玻璃瓶敲击声信号建立的数据集中测试,得到了很好的分类结果。
由于工业生产过程采集的图像中并非仅有检测目标,而是包含背景或者杂物,因此在进行特征提取时会提取比较多的无用特征而影响最终的检测结果和效率。因此,提出了一种基于感知哈希算法(Perceptual Hash Algorithm,PHA)的边缘检测算子选择方法,基于提出的HOG特征和尺度不变特征变换(Scale Invariant Feature Transform,SIFT)特征融合的算法进行特征提取,通过支持向量机(Support Vector Machine,SVM)完成缺陷的分类识别。
首先进行瓶身图像预处理,利用基于PHA的边缘检测算子选择方法选择不同缺陷的边缘检测算子进行边缘检测,按照边缘检测的结果将图片的目标检测区域裁剪,然后根据HOG特征和SIFT特征融合的算法进行特征提取,最后将得到的特征输入到SVM进行训练测试与验证。算法流程如图1所示。
图1 算法流程Fig.1 Algorithm flowchart
图像在拍摄、传输以及接收过程中由于各种干扰因素的存在,可能会受到各种噪声的影响。为避免图像的质量对检测结果的影响,本文采用中值滤波[10]和灰度线性变换[11]对图像进行噪声抑制与图像增强。
1.1.1 中值滤波
中值滤波算法的基本原理是将图像中某个像素点的值替换为其邻域内所有点的中值,实现过程是通过特定大小的窗口滑动来确定邻域范围,将邻域内所有数据在一个向量中进行排序,找出排序序列的中间值,然后将中间值赋值给邻域中心位置的像素点。窗口继续滑动到下一个位置,循环整个过程。以滑动窗口大小3×3为例的实现示意如图2所示。
图2 3×3滑动窗实现示意Fig.2 3×3 sliding window implementation
(1)
式中:σ2为输入图像噪声的方差,m为滑动窗口的宽度。本文以裂纹缺陷图像为例的中值滤波算法处理结果如图3所示,对于复杂的图像可以使用线性组合中值滤波、加权中值滤波等。
(a)处理前的图像
(b)处理后的图像
1.1.2 灰度线性变换
假设原始图像中像素灰度值f为[a,b],经过灰度线性变换后的图像中像素灰度值g为[a′,b′],则变换前后的像素灰度值关系如下:
(2)
由式(2)可得,经过灰度线性变换后将原始图像中像素灰度值小于a像素点的赋值为a′,将像素灰度值大于b的像素点赋值为b′。对于像素灰度值介于[a,b]的像素点,采用线性投影的方法将其赋值为投影[a′,b′]。如果b′-a′≥b-a,灰度线性变换将增大图像的灰度值范围和对比度,变换后的图像与原图相比更加清晰。像素点的灰度值越高经过线性变换后的灰度值就会越高,而灰度值较低的像素点经过变换后受到的影响较小,因此可以快速区分出背景和感兴趣区域[13]。灰度线性变换如图4所示。
图4 灰度线性变换Fig.4 Grayscale linear transform
以裂纹缺陷图像为例,经过灰度线性变换的处理结果如图5所示。可以看出,相比于灰度线性变换之前,变换后的图片更明亮清晰,感兴趣区域与背景的区分更加明显。
(a)变换前的图像
(b)变换后的图像
PHA[14]是哈希算法的一种,主要用来衡量图像之间的相似程度,实现原理是对于每一幅图像生成一组包含所有特征的指纹,通过比较每幅图像的指纹信息来衡量图像间的相似程度。
得到图像的指纹之后,可以对比不同的图像,通过比较64位整数中位数不同的个数,确定不同图像之间的相似程度。PHA的优点是图像的宽高、亮度甚至颜色发生改变时,其哈希值都不会改变[15]。
为使缺陷的定位更加准确,本文提出了一种基于PHA的边缘检测算子选择方法。该方法的实现原理为:将所有玻璃瓶瓶身的缺陷图像使用不同的边缘检测算子进行边缘提取,得到提取后的图像再分别与原图比较计算哈希值。相同种类的缺陷求得的哈希值需要再计算平均值,选择最大平均哈希值对应的边缘检测算子作为相应缺陷的边缘检测算子。哈希值越大代表2张图像的相似程度越低,因此可以反映出经过相应边缘检测算子处理后的图像与原图差别较大。说明该边缘检测算子对于相应缺陷图像的边缘特征提取更准确、提取效果更好,能够较好地避免非缺陷背景区域的干扰。
根据上述原理计算出所有缺陷对应不同边缘检测算子的哈希值,如表1所示。
表1 不同缺陷对应不同边缘检测算子的哈希值
由表1可以看出,对于裂纹缺陷图像,使用Roberts边缘检测算子处理的裂纹缺陷图像得到的哈希值比使用另外4种检测算子的哈希值要高。表现在图像上是经过Roberts边缘检测算子处理过的裂纹缺陷图像对比缺陷原图差异性更大,提取缺陷的边缘轮廓更加精准,因此Roberts边缘检测算子更适合裂纹缺陷图像。其原因和裂纹缺陷的形状有关,在裂纹缺陷的图像中,裂纹一般是倾斜的弧状,与水平方向有一定大小的夹角,因此采用Roberts边缘检测算子检测的时候,正好吻合该算子的特性,在45°和135°方向有着较强的检测强度,从而使得裂纹缺陷图像上的裂纹缺陷边缘特征更加明显,表现在哈希值上相比于其他检测算子得到的哈希值最大。
对于模缝缺陷图像,该图像上的模缝缺陷一般呈竖线状,和水平方向垂直。此特征刚好吻合Sobel算子的特性,在使用该算子检测时可以使垂直方向的边缘特征更加凸显,因此模缝缺陷的2个边缘更加容易被检测出来。在计算哈希值时,模缝缺陷图像使用Sobel边缘检测算子提取边缘特征计算得到的哈希值相比于其他边缘检测算子较大,因此模缝缺陷图像的边缘特征提取使用Sobel边缘检测算子效果更佳。
对于冷斑缺陷图像和皱纹缺陷图像,由于冷斑缺陷和皱纹缺陷在原图像中不是特别凸显。Canny边缘检测算子采用基于边缘梯度方向的非极大值抑制和双阈值的滞后阈值处理,可以解决冷斑缺陷和皱纹缺陷边缘不明显的问题。经过Canny边缘检测算子处理过的冷斑缺陷图像和皱纹缺陷图像,表现在哈希值上比其他的边缘检测算子得到的哈希值大,因此冷斑缺陷图像和皱纹缺陷图像的边缘特征提取使用Canny边缘检测算子效果更佳。
对于结石缺陷图像、黑点缺陷图像和气泡缺陷图像,这3种缺陷从形状上看一般近似圆形,因此需要分析这3类缺陷周围小范围的局部特征。Laplacian边缘检测算子针对上述3类缺陷进行边缘特征提取时,将缺陷中央及离中央位置较近的像素点赋予较大的权重,将离缺陷中央较远的像素点赋予较小的权重,因此可以很好地突出缺陷的圆形边缘特征。该算子对于孤立点比较敏感,因此对于黑点缺陷的边缘特征比其他缺陷的更突出。使用Laplacian边缘检测算子检测结石缺陷图像、黑点缺陷图像和气泡缺陷图像得到的哈希值比其他边缘检测算子要高,因此Laplacian边缘检测算子更适合结石缺陷图像、黑点缺陷图像和气泡缺陷图像的边缘特征提取。
1.3.1 缺陷裁剪
根据缺陷边缘的轮廓,选取边缘轮廓中最小的横坐标xmin和最小纵坐标ymin作为矩形框的左上角点的坐标,即A(xmin,ymin),选取边缘轮廓中最大的横坐标xmax和最大的纵坐标ymax作为矩形框右下角点的坐标,即B(xmax,ymax)。有了上述点A(xmin,ymin)和点B(xmax,ymax)的坐标就可以得到包含完整缺陷边缘的最小外接矩形,将这2个点映射到原图像就可以裁剪出原图像中完整的缺陷图像,便于后期进行缺陷检测识别。
1.3.2 HOG特征提取
HOG特征常应用在图形处理领域中的实物检测,基于对图像小范围区域进行运算统计得到梯度直方图的方法来得到相应的特征值。
HOG特征作为特征描述子,最早由Dalal等[16]提出,而后被广泛运用到各个领域。HOG特征是对图样小范围内的梯度信息表述,并对各特征归一化,由于图像各块与块间有着重叠关系,所以能够实现关联性。HOG特征对图像的光强、梯度的变化有着一定的稳定性。计算HOG特征,第一步是梯度计算。梯度的计算定义如下:
(3)
式中:H为输入样本,Gx、Gy为水平梯度和垂直梯度。基于卷积核为(-1,0,1)和(-1,0,1)T点的梯度大小定义如下:
(4)
点(x,y)的梯度方向定义如下:
(5)
综上,由于基于局部窗格进行图样的HOG特征提取,所以HOG特征对几何及光学形变并不敏感,这2类形变只能作用于更大的空间范围。粗略程度不同、光学条件的变化、归一化等作用下,特征提取的效果如图6所示。
图6 HOG特征提取结果Fig.6 HOG feature extraction results
1.3.3 SIFT特征提取
SIFT由Lowe等[17]提出并加以完善,主要用于处理图像的局部特征。相比于其他特征提取算法,该特征提取算法在处理过程中可以很大程度上降低图像维度变换以及噪声对于特征提取的干扰[18]。此外,由于SIFT的特点使其能够很好地与其他特征提取算法进行融合,进而得到比单一特征提取算法更好的效果。SIFT的处理过程可大致分为以下3个步骤:
① 生成尺度空间并检测极值点
首先构建尺度空间L(x,y,σ),一幅二维图像I(x,y)的尺度空间定义如下:
L(x,y,σ)=G(x,y,σ)×I(x,y),
(6)
式中:σ为可变尺度参数,其大小决定图像的平滑程度; (x,y)为空间坐标,G(x,y,σ)为可变尺度的高斯函数。
(7)
由此,构造出高斯差分空间如下:
D(x,y,σ)=[G(x,y,kσ)-G(x,y,σ)]×I(x,y)=
L(x,y,kσ)-L(x,y,σ)。
(8)
通过构造的式(8)可以检测稳定的特征点,如图7所示。根据极值点的定义,对比采样点与其所有的临近点来寻找尺度空间的极值点。
图7 图像采样点Fig.7 Image sampling points
由图7可以看出,中间的采样点需要和其尺度空间内的8个点以及上下2层的18个点对比,如果该采样点是所在尺度空间的极值点,就认为该点是图像在该尺度下的一个准特征点。
② 特征点的定位筛选
为了避免上述得到的准特征点为不稳定的边缘极值点,需要进行拟合三维二次函数和通过Hessian矩阵的方法来消除边缘不稳定极值点的影响。当极值点满足式(9)时,说明该点不是不稳定的边缘极值点,可以作为特征点,反之亦然。
(9)
式中:H为坐标(x,y)的Hessian矩阵,如式(10)所示;r为Hessian矩阵的2个特征值的比值。
(10)
③ 特征点指定方向参数和生成描述子
根据特征点的邻域像素的梯度方向分布特性,可以给每个特征点指定方向参数:
(11)
式中:m(x,y)、θ(x,y)表示(x,y)处梯度的模值和方向。至此,图像的特征点均已确定,并且每个特征点具有位置、所处尺度和方向3个信息。以确定的特征点为中心,选取滑动窗口为16×16大小进行滑动采样,根据8个方向信息得到128维的特征描述子。
SVM[19]是一种有监督的学习模型,通过获取不同类别样本之间的最大边距超平面,即可作为该算法分类时的决策边界。
当在线性可分的情况下,分类函数如式下:
f(x)=WTx+b,
(12)
式中:WT为法向量,b为位移项。在线性不可分时,可以把输出量x与高维的特征向量空间进行一一映射,特征向量Φ(x)随之更新,从而得到目标函数。无论哪一步操作都仅仅用到了内积计算,而在原空间的核函数上,可以取代该内积计算,因此为了实现从线性问题到非线性问题的推广可通过选择合适的核函数完成。
由于最终要尽可能地缩小全部样本点与该面的平均差,因此需要寻求一个最优超平面,即对于一个容量为n的样本集:
T={(xi,yi),i=1,2,......,n},xi∈d,yi∈,
(13)
式中:i为样本序号,d为xi的维数。当函数f(xi)与相对应的样本值yi最靠近时,此时的f为最优。
建立拉格朗日函数如下:
(14)
式中:
(15)
(16)
式中:b0为回归参数值。
本文在一台戴尔台式机(CPU为Intel(R) Core(TM) i5-11400,主频2.6 GHz)上进行本节提出的算法以及其他2种对比算法的测试实验,并对比分析各种算法的准确率,操作系统为Windows 10,软件平台为Python3.8。
首先将现有的缺陷数据集划分为训练集和测试集,测试集中共2 340张缺陷图像,其中黑点320张、结石280张、冷斑390张、裂纹370张、模缝320张、气泡360张、皱纹300张;测试集中共921张缺陷图像,其中黑点120张、结石101张、冷斑160张、裂纹150张、模缝130张、气泡140张、皱纹120张。将划分好的图像先进行预处理,然后使用PHA选择每种缺陷适合的边缘检测算子,使用正确的边缘检测算子后将定位出来的缺陷范围统一裁剪出来。由于缺陷的形状各不相同,因此裁剪出来的图片大小也各不相同,因此将裁剪后的图片统一尺寸为80 pixel×80 pixel,由于采集的原图是灰度图片,因此不需要再进行灰度化。
通过HOG特征提取得到HOG特征集,利用SVM对训练特征集进行训练,并使用训练所得到的模型对测试集进行检测分类。测试结果如表2所示。
表2 基于PHA-HOG-SVM的玻璃瓶瓶身缺陷检测结果——混淆矩阵
由表2可知,基于PHA-HOG-SVM的玻璃瓶瓶身缺陷检测结果中,模缝缺陷的准确率最高,达到了90.78%;其次是皱纹缺陷,达到了89.17%;结石缺陷和气泡缺陷的准确率较低,分别为71.29%和72.86%。因此,上述7种缺陷的检测准确率未达到要求,最高的准确率仅仅高于90%,并且部分缺陷准确率仅70%左右,总体的检测准确率不太理想。
通过SIFT特征提取得到SIFT特征集,利用SVM对训练特征集进行训练,并使用训练所得到的模型对测试集进行检测分类。测试结果如表3所示。
表3 基于PHA-SIFT-SVM的玻璃瓶瓶身缺陷检测结果——混淆矩阵
由表3可以看出,基于PHA-SIFT-SVM的玻璃瓶瓶身缺陷检测算法测试结果中,裂纹缺陷的准确率最高,达到了93.33%;模缝缺陷的准确率仅次于裂纹缺陷,达到了92.31%;准确率最低的是冷斑缺陷和结石缺陷,分别为75.63%和76.24%;4类缺陷的准确率均超过的90%,但未突破95%,仍然有3类缺陷的准确率低于80%。综上所述,总体的准确率仍有提升空间,整体表现良好。
通过将HOG特征提取到的特征集和SIFT特征提取到的特征集进行线性融合得到融合特征集,利用SVM对训练融合特征集进行训练,并使用训练所得到的模型对测试集进行检测分类。测试结果如表4所示。
表4 基于PHA的特征融合玻璃瓶瓶身缺陷检测结果——混淆矩阵
由表4可以看出,基于特征融合的玻璃瓶瓶身缺陷检测结果中,皱纹缺陷的检测准确率最高,达到了95.83%;准确率最低的是结石缺陷,但是也达到了79.21%;7种缺陷中仅有一种缺陷的检测准确率低于80%,4种缺陷的检测准确率超过90%,其中皱纹缺陷的检测准确率超过了95%。整体来看,大部分缺陷的检测准确率较高,总体表现较好。
3种检测算法对于每类缺陷的检测结果如表5所示。在3种检测算法中,PHA-HOG-SVM算法的检测准确率较低,平均准确率仅为80.71%;2种特征融合的算法是3种算法中平均准确率最高的,达到了88.7%。单从平均准确率方面分析,特征融合算法相比于PHA-SIFT-SVM算法提升了2.97%,相比于PHA-HOG-SVM算法则提升了7.99%。虽然特征融合算法的平均准确率最终没能突破90%,但是相比于其他2种单一没有进行特征融合的算法平均准确率也有显著提升。特征融合算法对于其中4类缺陷的检测准确率均达到了90%以上。
表5 3种检测算法结果对比
通过3种算法的瓶身缺陷检测准确率可以看出,特征融合算法的效果优于单一特征提取算法。HOG特征和SIFT特征对于数据集的描述侧重点不同,HOG特征通过计算缺陷图像的HOG来提取特征信息;SIFT特征侧重于描述缺陷图像尺度空间中的极值点,帮助检测缺陷,获取极值点位置方向等信息。从特征描述方面分析,SIFT特征相较HOG特征获取的特征信息复杂,与单一特征提取算法相比,基于SIFT特征提取的算法效果较好。本文的特征融合算法将二者所描述的特征信息进行了线性融合,具有二者共有的特征信息,因此检测效果最优,缺陷检测准确率为3种算法中最高。
本文提出的基于PHA的边缘检测算子选择方法可以根据不同缺陷种类计算得到哈希值,并据此选择不同缺陷最佳的边缘检测算子;使用特征融合算法的检测结果高于使用2种单一特征提取算法准确率,其中平均准确率较PHA-HOG-SVM算法提升了7.99%,较PHA-SIFT-SVM算法提升了2.97%。准确率在单个缺陷方面也均有显著提升,但仍有极个别缺陷的准确率不理想,主要原因是其用于训练的缺陷数据样本不够充裕,希望日后能够不断丰富缺陷数据集增加训练样本数量并且优化算法,提高个别缺陷的检测准确率。