基于形态学和区域生长的硅钢片微表面缺陷检测①
2021-06-25贺福强李思佳张明月
何 昊 贺福强 李思佳 张明月 谢 丹
(贵州大学机械工程学院 贵州贵阳 550025)
硅钢片是一种很重要的磁性材料,主要用于制作变压器、电动机和发电机的铁芯。变压器、电动机、发电机都是农业装备中重要供电、动力设备。在农业生产中,设备运行环境较为恶劣,较好的零部件质量能提升装备运行寿命。通过对零部件硅钢片进行缺陷检测,增加零部件的合格率。硅钢片的表面质量好坏是决定其磁性能的主要因素[1]。视觉检测具有实时性、高效率、精度高等的优点[2],故视觉检测可以实现检测的自动化,极大降低误检率、减少人工检测主观性的影响。
图像分割就是把图像根据性质分成多个区域的过程,主要是指灰度值、像素强度值、纹理等特征。分割的方法主要有基于阈值、聚类法、遗传算法、变形模型、区域生长等[3]。Fabricio 等[4]提出了一种基于梯度向量流的自动种子区域生长方法,对较多目标的分割也有不错的效果。Cui等[5]提出了一种改进的SRG 算法,利用Harris 角点检测原理自动选择起始种子点;区域生长准则里引入了图像的不确定性,使分割更具有鲁棒性。Mohammed 等[6]提出了一种可以自动提取 ROI 并且用机器学习算法筛选比较适合的种子点的SRG算法,明显改善图像分割后的噪声。Rajkumar等[7]依据预选择的像素区域的中值来自动选择种子点,提取出种子ROI,利用梯度算子分割出ROI的边界。Sheng等[8]利用深度学习找到比较有效的分割阈值进行阈值分割后,再进行区域生长。
1 图像分析及预处理
拍摄图像会产生随机的扰动,图像有一定的噪声,为消除掉图像中的无关信息,对图像进行预处理。
1.1 灰度化
为降低运算量,需要将拍摄的三通道的RGB图像转化为单通道的灰度图像。采用加权平均法的灰度化方法,其中心理学灰度公式根据人眼对RGB三色的敏感程度选择不同的权重:
式(1)中,R、G、B分别为RGB 三通道灰度值,灰度化结果如图1(a)所示。
1.2 平滑处理
为了尽可能避免将背景当作缺陷,需要对图像进行平滑处理,这样虽然会使缺陷的边界模糊,但是有利于减少背景的干扰。注意所采用的去噪处理为均值滤波,均值滤波公式为:
式(2)中,m、n分别为所选择的滤波核的长和宽,Sxy是以(x,y)为中心的滤波核对应像素的位置集合,平滑处理结果如图1(b)所示。均值滤波的缺点是会使一些细节如边缘等信息丢失,因此在找到种子点后,对没有经过平滑处理的图像进行区域生长,找到缺陷边界。
2 算法原理
2.1 阈值分割
图1 均值滤波处理
阈值分割是图像分割中最简单、基础的方法,性能比较稳定,计算量较小,运算速度快;它主要有全局阈值分割、局部阈值分割、自适应阈值分割等方法。阈值算法基于阈值T,将像素灰度值大于阈值T 和小于阈值T 的部分分别叫做前景和背景。变换函数表达式:
式(3)中,T 为阈值,g(x,y)为原图像像素点(x,y)的灰度值,f(x,y)为分割后图像像素点(x,y)的灰度值,阈值分割结果如图2所示。
图2 阈值分割结果
2.2 形态学开运算降噪
数学形态学简称形态学,其处理方式为领域运算,即把领域结构元素与图像对应位置像素进行逻辑运算,这种运算的影响因素主要有结构元素大小、形状和逻辑运算的规则。形态学操作主要有膨胀、腐蚀、梯度运算、礼帽运算、黑帽运算、开运算和闭运算等,但其基础为腐蚀和膨胀,利用膨胀和腐蚀就能完成不同形式的运算。
腐蚀运算能消除轮廓边界点,使边界向内缩小,主要用于细化二值图像目标轮廓、去除噪声等。
式(4)中,A为原图像,B为结构元素。首先给结构元素B定义一个原点,当结构元素B的原点移动到图像A的(x,y)上时,如果结构元素B上等于1 的像素点对应图像A也等于1,则将图像A的(x,y)的灰度值置为1,否则置为0,腐蚀示意图如图3所示。
图3 腐蚀示意图
膨胀运算则与腐蚀运算相反,使边界向外扩张,主要用于填补图像分割后的空白,使相近的不相连的轮廓相连。其公式为:
式(5)中,A为原图像,B为结构元素。首先给结构元素B定义一个原点,当结构元素B的原点移动到图像A的(x,y)上时,如果结构元素B上等于1 的像素点对应图像A中至少有一个等于1,则将图像A的(x,y)的灰度值置为1,否则置为0。
先进行腐蚀操作,然后在腐蚀的基础上进行膨胀操作,主要用于去噪和计数等。其公式为:
式(6)中,A为原图像,B、C为结构元素。开运算效果如图4 所示,图5 为开运算处理的结果。
图4 开运算效果
2.3 区域生长法
图5 形态学开运算结果
区域生长的思想就是把领域(四领域、八领域等)相同的化为一个区域。首先需要一个种子点作为生长的开始,然后将种子点领域内满足相似准则要求的像素点合并到种子的区域,将这个区域的像素做为种子点,继续进行生长,直到没有符合要求的点,生长结束,所有种子点像素作为生长的区域。分割的好坏由初始种子点和相似准则决定。
2.3.1 种子点选择与检测
经过阈值分割和形态学处理后,将二值图像各轮廓中心作为待定种子点。如果选择的种子点位于缺陷的绝对区域,那么种子点总有一个方向各像素的深度值呈现高-低-高的形态。设计检测模板如图 6 所示,计算出种子点在 0°、45°、90°、135°方向上的深度变化,判断其变化是否呈高低高形态。
图6 检测模板
种子点左右两侧r个像素的灰度平均值分别为:
各方向的灰度变化为:
深度形Si态变化判定:
式(10)中,I(u)为检测模板中第u个像素的灰度值,w= 1,2,3,4,分别代表 0°,45°,90°,135°方向,mwm为w方向两侧的最小灰度值,T1为形态变化阈值。如果种子点不满足深度形态变化判定,则去除该待定种子点。
2.3.2 生长过程
区域生长的具体流程如下:
(1)将种子点坐标放入种子点集seeds。
(2)顶出种子点集中的一个种子点,对种子点八邻域的像素点进行相似准则判断;满足相似准则条件的点,视为种子点放入种子点集seeds。
(3)将顶出的种子点存入种子集S。
(4)如果种子点集内没有元素,则跳到步骤(4); 如 果 种 子 点 集 中 还 有 元 素 , 则 跳 到步骤(2)。
(5)生成一张和输入图像长宽一致,像素值全为0的图像I。
(6)将图像I中对应种子集S坐标的像素值置为255,得到分割图像I'。
其中生长的相似准则为:
式(11)中,gray(seed)为当轮种子点的灰度值,gray(8_n)为其八邻域各点的像素值,Thresh为设置的阈值。区域生长结果如图7所示。
图7 区域生长结果
3 实验过程
图像分割就是按照预先设定的规则,将图像分割为有意义的前景和背景的过程。区域生长是一个分割效果比较好的算法,但前提是需要找到适合的种子点。单一的分割算法就容易遇到这种不足的情况,结合使用形态学和阈值分割的方法来找到合适的种子点,帮助区域生长算法完成分割任务,达到满足要求的分割效果,分割方法流程如图8所示。
图8 分割流程图
首先对输入的图片进行灰度化处理,变成单通道的灰度图片,然后滤波去除噪声,使图像更平滑,选择合适的阈值进行阈值分割,在利用开运算去除掉分割后较小的前景,以各前景区域的中心点为起始种子点,进行区域生长,得到最终所满足要求的前景。
4 实验结果与分析
本文采用的图像来自开源数据,实验是在Windows10,OpenCV 上实现的。电脑配置为i5-8300H,NVIDIA GeForce GTX1060;软件 Py‐thon3.7,OpenCV_Python4.1.2;图像的灰度值范围为[0,255]区间。
本文提出的自动种子区域生长算法部分实验效果如图9所示,分割比较饱满,误判较少(噪声较少)。其中a(1)~a(6)为硅钢片微表面原图,b(1)~b(6)为对应图像的人工标注图像,c(1)~c(6)为对应图像算法分割结果。
本文对比实验了阈值分割算法、人工选择种子点的区域生长法以及本文提出的自动种子区域生长算法。
对比人工标注图像,计算各算法分割图像的精确率P、F1值,进行分割效果客观比较。
精确率:
图9 自动种子区域生长算法效果
式(12)(13)中,TP、TN、FP、FN分别为正类判定为正类、负类判定为负类、负类判定为正类,正类判定为负类的数目。
根据各算法各分割图像的精确率、F1 值绘制折线图。各算法分割性能如图10 所示,图10(a)为各算法F1值,图10(b)为各算法精确值。
从图10 可以看出,自动种子区域生长算法基本达到人工种子点区域生长算法的性能,甚至有所增强,这是由于该算法选择缺陷中心点作为种子点,而人工工选择种子点的算法由于偶尔种子点选择靠近缺陷边缘,缺陷中心的种子点生长更有优势。
图10 各算法性能比较
5 结论
对于在复杂背景下分割缺陷,单一的算法很难奏效。例如阈值分割算法,很难找到一个固定的阈值可以有效分割所有的图像;由于缺陷所占比例不清楚且所占比例很小,多种自动阈值方法都会失效;单一的自动种子区域生长算法也因为类似的原因而不能有很好的分割效果。基于此,本文提出了一种基于形态学的自动种子区域生长算法,该算法结合了形态学、阈值分割、区域生长方法,其分割效果比单一的算法都要好。对硅钢片微表面缺陷图像的测试结果表明,该方法缺陷分割的准确性表现不错。
表1 各算法性能比较