自适应Canny算法在钢板缺陷边缘检测中的应用
2018-05-15于海川穆平安
于海川 穆平安
摘 要:为了更为准确地提取钢板表面缺陷,针对传统 Canny 算法的不足,提出一种改进型Canny边缘检测算法。该算法在平滑滤波部分采用自适应高斯滤波器,在滤除图像噪声的同时,可以保留更多图像边缘信息;采用8×8邻域代替Canny算法中2×2邻域计算梯度幅值;高低阈值的确定是根据图像的灰度均值和方差均值自动计算的。仿真结果表明,改进算法在钢板缺陷的边缘检测中可以准确地得到更多边缘细节,同时也能很好地抑制假边缘,且具有较强的自适应能力。
关键词:边缘检测;改进型Canny算子;自适应高斯滤波器;均值;方差
DOI:10.11907/rjdk.172529
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2018)004-0175-03
Abstract: In order to extract the steel plate surface defects more accurately, this paper avoids the disadvantages of the traditional Canny algorithm and proposes an improved Canny edge detection algorithm. Gauss filter is used to smooth filtereing so that image noise can be filtered out and more image edge information can be retained; the 2*2 neighborhood is replaced by the 8*8 neighborhood in gradient amplitude calculation ; the level of the threshold is automatically calculated according to the gray average and variance-mean of the image. Simulation results show that the improved algorithm can obtain more edge details in edge detection of steel plate defects, suppress false edges well and has strong adaptiveness.
Key Words:edge detection; improved Canny operator; the adaptive Gaussian filter; mean; variance
0 引言
随着工业社会的发展,广大消费者对钢板的外观和质量都提出更严格的要求。为了使钢板表面的缺陷能够被准确地检测识别,边缘检测成为重中之重。常见的几种边缘检测算子[1]都存在一些不足,如对噪声比较敏感、容易丢失边缘信息[2]等,不能满足当下对边缘检测的要求。本文在Canny算法[3]基础上,提出一种改进的自适应Canny边缘检测算法,该算法采用自适应高斯滤波器对图像进行平滑滤波,解决了高斯函数方差需人为设定的缺陷;使用0°、45°、90°、135°四个方向模板得到梯度图像,以提高边缘定位精度;最后根据图像的平均灰度值和平均方差计算出Canny算子的高低阈值,解决人为确定高低阈值的难题。
1 传统Canny算法及分析
Canny方法通常基于3个基本目标:①低错误率,即检测到的边缘尽可能是真实边缘;②边缘点被准确等定位,即由检测器标记的边缘点和实际边缘的中心距离应最接近;③单一的边缘点响应,即仅有一个单一边缘点位置,不该出现多个边缘点。Canny算法步骤[4]如下:①高斯平滑消除噪声;②计算梯度的强度(幅值)和方向;③对梯度幅值图像应用非极大抑制,从而除去不是边缘的像素,留下候选边缘;④用双阈值处理和连接分析检测并连接边缘。
1.1 高斯滤波函数
高斯函数如式(1)所示:
二维高斯函数卷积可以分两步进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积,把G的两个滤波模板分解为两个一维的行列滤波器,即:
1.2 梯度幅值与方向计算
传统的Canny算法采用一阶差分模板[5],目的是为了增强图像边缘。这一步效果与两个方向模板进行卷积运算相似。两个方向模板如下列公式所示,式(7)体现的是0°方向上的差异,式(8)体现的是90°方向上的差异,可以获得梯度幅值的大小及方向角。实验表明,这一步骤可以得到加强的边缘信息。
1.3 双阈值方法检测与连接边缘
Canny算法最后的操作是对非极大值抑制的图像进行双阈值处理,减少伪边缘点,保留更多有效的边缘点。双阈值即采用高低阈值,高阈值得到的是强边缘,低阈值得到的是弱边缘。以强边缘为基础,在弱边缘中寻找其8连通域,利用遞归跟踪算法不断在弱边缘点中搜集边缘,直到将强边缘点中的所有间隙都连接起来为止[7]。
2 改进Canny边缘检测算法
2.1 自适应高斯滤波器
自适应高斯滤波器[8]是要在最平滑的结果和最佳的保持细节信息的结果中取一个折中方案。本文算法使用一个能量函数,即:
上式中,Io(x,y)表示原始图像该像素点的灰度值,Iσ (x,y)表示通过高斯平滑后得到该像素点的灰度值。从数学上分析,由表达式(11)可知,最优解与σ成反比,与ε成正比,若式(11)取得最小值,则σ应尽可能大,ε尽可能小。在高斯函数中,σ越大表示图像越平滑,而ε尽可能小表示该像素点的灰度值变化不大。因此,该能量函数可以使图像在平滑和保留细节中得到最优解,并自适应地选择最适合的解。
2.2 梯度幅值计算改进
本文算法在Sobel算子梯度幅值计算的基础上,将其扩展为0°、45°、90°、135°四个方向上的一阶梯度模板[9],以求梯度幅值。梯度模板如图1所示。
4个方向上的一阶梯度分量G0(x,y)、G45(x,y)、G90(x,y)、G135(x,y)可由图1中4个一阶梯度模板分别对滤波后的图像进行卷积得到。
梯度幅值和梯度角度可以由4个方向一阶梯度分量求得,即:
2.3 高低阈值获取改进
Canny算子中高低阈值的计算至关重要,它直接决定着检测边缘信息的多少和边缘的连续性问题,所以高低阈值的选取一定要恰当,否则不仅不能抑制伪边缘,而且还会丢失一些边缘信息[10]。通过分析,将图像的平均方差和图像的平均灰度值作为高低阈值的参数即可检测出图像中的所有边缘细节。
其中Th即为所求的高阈值,Eave为图像的平均方差,Fave为图像的平均灰度,Lw 和Lh分别为图像的宽度和高度。图像的平均方差与平均灰度值之比作为高阈值时容易造成伪边缘信息过多,本文加入参数c,将其比值与参数c作积以获取高阈值,而低阈值为Tl=Th/2。
3 實验结果及分析
为了验证算法的有效性,本文通过对钢板表面的划痕、脏污、锈迹3种常见缺陷进行边缘检测实验,将本文算法与未改进的Canny算法进行比较,并利用MATLABR2014a进行仿真实验。
(1)划痕边缘检测。
这里的0.4、0.6、0.3三个数值分别为参数low threshold、high threshold、sigma,其中sigma是高斯滤波器参数标准差的具体值,low threshold是低阈值,high threshold是高阈值,高阈值代表强边缘,低阈值代表弱边缘。强边缘的阈值设置不需要包括所有边缘,只需要在弱边缘上有“点状”分布即可。
上面的3个参数也可设置成其它值,该值会直接影响分割结果。因此,通过对比不同参数设置的实验结果,最终确定Canny算子3个参数low threshold、high threshold、sigma的最佳值分别为0.4、0.6、0.3。不同参数设置的Canny算子钢板表面划痕缺陷检测结果如图2所示。
(2)脏污边缘检测,如图4所示。
(3)锈迹边缘检测,如图5所示。
在上述仿真实验结果对比中,从图3可以明显看出本文算法要比传统的Canny算法检测的边缘细节准确,从图2(a)可以看到除了两条大的划痕缺陷外,还有一些小的成暗黑色的斑点,传统Canny算子检测出了许多假边缘;图4说明传统的Canny算法检测到的边缘细节较少,而本文算法能较好地检测出边缘缺陷;图5显示,对一些边缘模糊的缺陷,传统的Canny算子会出现误判现象,检测出假边缘。
4 结语
本文在传统的Canny算法基础上进行了改进,并对钢板表面常见的3种缺陷进行检测对比实验。实验结果显示,本文算法较传统算法能有效地抑制噪声,较好地保留边缘信息,同时具有较强的抑制假边缘的能力。但在自适应高斯函数求最优解的部分,加入了能量函数,与改进前的Canny算法相比,算法比原来略为复杂,计算时间稍有加长。
参考文献:
[1] HEALTH M, SARKAR S, SANOCKI T, et al. Comparison of edge detectors: amethodology and initial study[J]. Computer Vision and ImageUnderstanding, 1998,69(1):38-54.
[2] MARR D, HILDRETH E. Theory of edge detection[J]. Proceedings of the Royal Society of London. Series B. Biological Sciences, 1980,207(1167):187-217.
[3] 张斌,贺赛先.基于Canny算子的边缘提取改善方法[J].红外技术,2006,28(3):165-169.
[4] 张素文,陈志星,苏义鑫.Canny边缘检测算法的改进及 FPGA实现[J].红外技术,2010,32(2):93-96.
[5] 杨枝灵,王开.Visual C++数字图像获取处理及实践应用[M].北京:人民邮电出版社,2003:568-569.
[6] MEER P, GEORGESCU B.Edge detection with embedded confidence[C].IEEE Trans on PAMI,2001:1351-1365.
[7] 李二森,张保明,周晓明,等.自适应Canny边缘检测算法研究[J].测绘科学,2008,33(6):119-120.
[8] 王怀野,张科,李言俊.一种自适应各项异性高斯滤波方法[J].计算机工程与应用,2004,40(10):18-19.
[9] 王植, 贺赛先.一种基于 Canny 理论的自适应边缘检测方法[J].中国图象图形学报, 2004, 9(8): 65-70.
[10] 李华强,喻擎苍,方玫.Canny算子中Otsu阈值分割法的运用[J].计算机工程与设计,2008,29(9):2297-2299.
(责任编辑:黄 健)