基于小波去噪与改进Canny算法的带钢表面缺陷检测
2024-03-01崔莹,赵磊,李恒,刘辉
崔 莹,赵 磊,李 恒,刘 辉
(昆明理工大学 信息工程与自动化学院,云南 昆明 650500)
0 引言
带钢是钢铁工业的主要产品之一,广泛应用于机械制造、航空航天、军事工业、船舶等行业中。然而在带钢的生产制作过程中,由于受到原材料、生产设备、工艺流程等多种因素的影响,不可避免地会导致带钢表面出现缺陷,例如:氧化、斑块、裂纹、麻点、夹杂、划痕等。表面缺陷不仅影响带钢的外观,更是损害了产品的耐磨性、抗腐蚀性和疲劳强度等性能,因此需要加强产品的质检,对有表面缺陷的带钢进行检测和筛查。但传统人工检测方法采用人为判断,随机性较大、检测置信度偏低、实时性较差[1]。
卞桂平等提出一种基于改进Canny 算法的图像边缘检测方法,采用复合形态学滤波代替高斯滤波,并通过最大类间方差法选取高低阈值,最后利用数学形态学对边缘进行细化,提高了抗噪性能[2]。刘源等提出一种基于Sobel 算子的带钢表面缺陷图像边缘检测方法。先用双边滤波去除噪声;再采用改进的四方向Sobel 算子检测缺陷边缘,并用自适应动态阈值选取最佳阈值进行二值化;最后利用Hilditch 算法细化边缘,得到最终检测图像[3]。
以上方法对带钢表面缺陷区域的检测效果较好,但存在错检、漏检的情况。因此,本文提出一种基于小波去噪与改进Canny 算法的带钢表面缺陷检测算法。
1 改进的小波去噪与同态滤波的图像增强
1.1 改进的小波去噪
小波变换具有多尺度分析、多分辨率的特性,能够在时频两域对信号进行局部分析,解决短时傅里叶变换时频固定不变的缺陷[4]。本文选用db4 小波对原始图像作小波二级分解,并对阈值函数进行改进。新的阈值函数不仅解决了硬阈值函数定义域内不连续的问题,还克服了软阈值函数处理后的小波系数与原系数存在固有差值的缺点[5],提升了去噪效果。改进的阈值函数公式如下:
式中:a、b为调节参数,a∈[0,1],b≥0。当a=0 且b>1时,上式可转化为硬阈值函数;当a=1 时,可转化为软阈值函数。实验中参数设置为a=0.2,b=0.6。选取自适应阈值,其中,j为小波分解层数,σj为第j层噪声的标准差,Nj为第j层小波系数的个数。σ采用鲁棒中值估计法估算,σ=,其中fi为最低分解尺度的频带。
1.2 改进的同态滤波
同态滤波是一种图像频域增强方法,主要通过压缩图像灰度的动态范围来改善亮度不均的问题[6]。参考S 型曲线构造一个新的传递函数作为高通滤波传递函数,公式为:
传统低通滤波中阶数n越大,振铃现象越明显[7]。为了避免振铃现象的产生,将低通滤波传递函数设为:
对于低频分量,采用上述改进的同态滤波算法来提升整体亮度,同时采用CLAHE 算法来增强对比度,再进行图像融合,得到增强后的低频图像。最后,将处理后的低频分量和高频分量通过小波重构,得到最终的增强图像。本文算法有效改善了带钢表面缺陷图像亮度不均的问题,并提高了整体对比度。图1 是本文算法的增强效果对比图。
图1 带钢表面缺陷图像增强效果对比图
2 改进的Canny 边缘检测分割算法
2.1 改进的自适应加权中值滤波
由于高斯滤波器的平滑参数σ需要人为设定,取值单一且自适应能力差,因此选取自适应中值滤波来代替高斯滤波,但其将滤波窗口中的极值点作为噪声点和信号的判定条件,直接进行滤波降噪[8],存在一定的局限性。为此,本文提出一种改进的自适应加权中值滤波算法(Improved Adaptive Weighted Median Filtering,IAWMF),具体步骤如下:
1)将输入图像按最外侧边界像素值进行最大窗口尺寸扩充,克服原有算法不能对所有像素点进行滤波的缺点。
2)采用3×3 的初始滤波窗口对图像中的点f(x,y)依次遍历,在形成n×n的滤波窗口区域内找出灰度最大值fmax、灰度最小值fmin和灰度中值fmed。
3)初次判断噪声,若满足fmin<fmed<fmax,则跳转步骤4);否则增大滤波窗口Wn的尺寸(n=n+2)循环判断,直到n>nmax,保持窗口内像素值不变,输出原灰度值。
4)二次判断噪声,若满足fmin<f(x,y)<fmax,则判定此窗口无噪声点,输出原灰度值;否则增大滤波窗口Wn的尺寸继续判断,直到n>nmax。
5)当n>nmax时,计算最小灰度差值gmin,gmin=同时定义阈值T=k(fmax-fmin),取k=0.5,若gmin<T则输出原灰度值;否则认为该窗口内含有噪声点。通过对窗口内像素点的加权计算来求出滤波值freplace,计算公式如下:
式中:faver和fm分别为滤波窗口内除去灰度极大值和灰度极小值以外的所有像素的灰度均值与灰度中值,经过多次实验,m=0.3 时具有较好效果。
6)重复步骤2)~步骤4),直至图像中所有像素点都经过自适应滤波窗口完成滤波,去除步骤1)中扩展的图像边界,得到滤波后的输出图像。
改进的自适应加权中值滤波算法通过极值点判断对大部分非噪声极值点进行了保留,并通过滤波值替换消除了噪声点的影响,避免了过度平滑,同时保留了更多的细节信息。
2.2 改进的自适应加权中值滤波
传统Canny 算法采用2×2 的一阶有限差分来计算图像像素点的梯度幅值与方向。然而传统Sobel 算子仅从水平和垂直方向上进行检测,可能会导致丢失部分边缘细节信息[9]。为了提高检测的准确性,本文使用3×3 的Sobel 算子。在Sobel 算子水平和垂直梯度模板的基础上,采用4 个方向的梯度模板对图像边缘进行计算,增加了45°和135°方向的检测。改进的梯度模板公式如下:
改进后的梯度幅值计算公式为:
改进后的梯度计算方法综合考虑了当前像素4 个方向周围8 邻域的梯度幅值,对边缘的定位更加准确,也减少了边缘丢失现象和伪边缘的出现。
2.3 改进的双阈值检测
传统Canny 算法需要人为设置高低阈值,自适应性差且检测边缘不够准确,因此本文采用将最优阈值迭代法与最大类间方差法相结合的方法,自适应地求取高低阈值。
1)最优阈值迭代法选取高阈值
迭代法是基于逼近的思想[10],取灰度最大值Max 和最小值Min,设初始阈值为二者均值,表示为T0=(Max+Min)/2,把图像分为两部分,分别计算两个区域的平均灰度:
式中:L为图像灰度级;ni表示灰度级为i的像素点个数。
计算新阈值T=(u1+u2)/2,若与初始阈值的差值小于可忽略误差ε,迭代结束,新阈值即为所求阈值并设为高阈值Th;否则将初始阈值T0赋值为新阈值T,不断循环迭代过程,直至满足|T-T0|<ε。
2)最大类间方差法选取低阈值
最大类间方差是一种自适应阈值确定方法,根据图像的灰度特征自动确定一个较好阈值[11]。在[0,Th]之间使用最大类间方差法,假设有L个灰度级,灰度区间为[0,L-1],灰度级为i的像素数为ni,总像素数为N=,灰度级为i的像素点出现的概率为pi=ni/N。设置初始阈值为T0,并把图像分为两类,计算每一类出现的概率和平均灰度级:
计算图像的灰度级:
则类间方差可表示为:
当类间方差达到最大值时,取对应的灰度值作为最佳阈值,并将其设为双阈值中的低阈值Tl。采用最优阈值迭代法与最大类间方差法求取的高低阈值完全由图像的灰度信息所决定,避免了人工的干预,同时提高了算法的自适应性。最后采用形态学方法对检测出的缺陷边缘进行填充并去除干扰边缘,得到最终的缺陷区域。
3 实验结果分析与讨论
本文实验采用的数据集来源于东北大学收集的热轧带钢表面缺陷数据集,存在亮度不均匀、对比度低、缺陷形式复杂的问题。本节选择了6 组带钢图像来验证所提算法的有效性,仿真软件采用Matlab 2018b。通过仿真实验将提出的检测算法和Sobel 算子、传统Canny算法、OTSU算法以及文献[2]方法的检测效果进行对比。
3.1 主观评价
采用不同算法分别对带钢氧化、斑块、裂纹、麻点、夹杂以及划痕表面缺陷图像进行检测,得到的检测结果如图2 所示。图a)为原始带钢表面缺陷图像,可以看出带钢缺陷图像整体亮度不均,对比度较低,缺陷信息不明显,给带钢缺陷检测增加了困难。从图b)~e)可以看出,各方法检测出的缺陷边缘连续性较差,伪边缘和干扰边缘过多,且与缺陷区域灰度接近的非缺陷信息也被检测出来,检测结果不理想。图f)是人工分割的带钢缺陷区域。图g)是本文算法对各类带钢表面缺陷检测的结果,能够在改善带钢图像亮度不均、对比度低、干扰信息较多等情况的同时,较为完整地将带钢表面缺陷区域检出,检测精度也高于其他算法,并且适用于多种类型的带钢缺陷检测。
图2 带钢表面缺陷检测结果对比图
3.2 客观评价
为进一步对所提算法进行客观评价,采用重叠率Dice 系数和重叠误差VOE 对各种算法的检测结果进行评价。采用人工分割的缺陷区域作为参考图像,将使用各算法检测的结果图与之对比。Dice 系数为检测结果图像与分割图像的重叠度,重叠度越高值越接近1。其计算公式为:
式中:Rgt为分割的缺陷图像;Rseg为采用各算法检测出的缺陷图像。
VOE 为检测结果图像与分割图像的重叠误差,误差越小值越接近0。其计算公式为:
表1 是采用不同的算法分别对带钢氧化、斑块、裂纹、麻点、夹杂以及划痕表面缺陷图像检测后的Dice 系数对比。从表中可以看出,应用本文算法所得的6 种缺陷图像的Dice 系数最大,说明本文算法的检测结果与分割图像的重叠度更高,检测结果更准确。表2 是各算法检测后的VOE 对比,可知应用本文算法的VOE 值最小,说明与分割图像的误差较小。综合分析各实验参数可以得出,本文所提算法对带钢表面缺陷的检测效果比较显著,可以较为精准地检测出缺陷区域。
表1 带钢表面缺陷检测结果的Dice 系数对比
表2 带钢表面缺陷检测结果的VOE 对比
4 结论
为了提高带钢表面图像的检测精度,本文提出了一种基于小波去噪与改进Canny 算法的带钢表面缺陷检测算法。该算法利用改进的小波去噪与同态滤波对原始图像进行增强,改善了亮度不均问题并提高了图像整体对比度;通过改进Canny 算法精确地检测出带钢缺陷边缘,采用形态学处理得到了缺陷区域。实验结果表明,与传统算法相比,所提算法有更强的自适应性,对带钢表面缺陷区域的定位更加准确,并且适用于多种类型的带钢表面缺陷检测。