于海川 穆平安


摘 要:為了更為準確地提取鋼板表面缺陷,針對傳統 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.
(責任編輯:黃 健)