王 靜,唐文豪
(西安科技大學 通信與信息工程學院,陜西 西安 710054)
邊緣檢測是圖像處理與分析中的一項基本的計算機視覺處理技術,許多學者提出了許多相關算法,如Robert、Prewitt、Kirsch、Gauss-Laplace、Canny等。其中,Canny算子具有很好的信噪比和檢測精度,在圖像處理領域得到了廣泛的應用。
傳統(tǒng)Canny算子對噪聲比較敏感,高斯濾波使邊緣模糊,易丟失邊緣信息,為此許多學者提出了改進的Canny算子,如梯度倒數(shù)加權濾波方法對圖像進行斑點噪聲濾除的同時保持了圖像邊緣;利用形態(tài)學的開閉操作濾波抑制毛刺噪聲和橋噪聲,并且可以平滑圖像邊緣的邊界點;通過圖像一階直方圖的統(tǒng)計特性自適應地選取高斯濾波器的參數(shù),有效去除了噪聲。針對傳統(tǒng)的Canny算子閾值選取不具有自適應的特點,文獻[4]利用圖像的梯度方差作為判據(jù)對圖像進行分塊,繼而對各子塊運用最大類間方差法求得相應的閾值;文獻[5]直接使用Otsu方法自適應計算閾值;文獻[6]通過構造梯度方向和SGD指標自適應確定閾值。本文用非線性濾波器雙邊濾波代替高斯濾波,通過調(diào)節(jié)雙邊濾波的參數(shù)達到保邊去噪的目的,接著提出一種差分梯度直方圖結合Otsu的方法,相比文獻[5]直接使用Otsu的方法,在自適應確定閾值的同時,大大減少了迭代次數(shù),加快算法運行時間。最后通過一種遞歸邊界跟蹤邊緣連接方法將斷邊連接起來。
Canny提出了一種很有效的邊緣檢測算法,該算法的實現(xiàn)主要有如下四個步驟:
1)使用高斯濾波器對原圖像進行濾波。
2)采用水平和垂直兩個方向的一階偏導數(shù)計算圖像的梯度幅值(,)和梯度方向(,):
3)對梯度圖像進行非最大值抑制操作,以細化邊緣。
4)用高低雙閾值連接最后的邊緣,高、低閾值大小的選擇對最后邊緣連接有著至關重要的影響。若某一像素的梯度值大于高閾值,直接當作強邊緣點;若某一像素的梯度值小于低閾值,直接置0;若某一像素的梯度值介于高、低閾值之間,則通過尋找該像素點八鄰域內(nèi)有沒有強邊緣點,有,則保留該像素,否則,被排除。
當圖像中存在明顯的邊緣信息時,通常的鄰域運算必然會導致圖像中邊緣點的像素值發(fā)生變化,使圖像的邊緣變得模糊不清。而Canny算法中的高斯濾波只考慮了像素間空間位置上的關系,易造成邊緣模糊,以此造成邊緣信息的丟失,因此高斯濾波方法很難做到兼顧平滑噪聲和保護邊緣信息。為了改善這一現(xiàn)象,本文提出雙邊濾波的方法,雙邊濾波器模板的卷積權值的選取不僅取決于普通低通濾波的像素空間位置關系,同時考慮了像素間的相似程度,雙邊濾波可表示為:
式中:I(,)為輸出像素值;(,)為窗口內(nèi)各個像素點的值;ω為空間域高斯函數(shù);ω為像素間亮度高斯函數(shù)。
以Lena圖像為例進行高斯和雙邊濾波實驗,如圖1所示。
圖1 高斯濾波與雙邊濾波對比結果
由圖1c)和圖1d)可以看出,高斯濾波圖像模糊,雙邊濾波比高斯濾波去噪效果更顯著,并且能保留更加完整的圖像邊緣信息。
傳統(tǒng)的Canny算子使用水平和垂直兩個方向Sobel算子計算梯度,即計算水平和垂直鄰域內(nèi)的差值,對于梯度變化相對緩慢的邊緣,只考慮兩個方向的模板計算易丟失梯度信息。因此本文增加45°和135°方向Sobel梯度模板計算,一方面解決只考慮兩個方向模板計算的局限性,另一方面,在一定程度上突出梯度差相對弱的邊緣。Sobel梯度模板如圖2所示。
圖2 Sobel梯度模板
則梯度幅值可表示為:
式中:G,G,,分別為四個方向模板卷積結果。
梯度方向為:
2.3.1 Otsu算法
一幅大小×像素的數(shù)字圖像有個不同的灰度級,n為灰度級為的像素數(shù),歸一化的直方圖分量P=n(),選擇一個閾值()=,0<<-1,將圖像分為兩類和。由圖像中灰度值在范圍[0,]內(nèi)的像素組成,由灰度值在范圍[+1,-1]內(nèi)的像素組成。
像素分配到類中的概率()為:
類中像素的平均灰度值為:
同理,類中像素的平均灰度值為:
整幅圖像的平均灰度值為:
類間方差定義為:
式中,初始閾值的范圍為[0,],使最大的值作為Otsu的最佳閾值。
2.3.2 梯度直方圖的分析
Lena圖像經(jīng)過非極大值抑制后,得到一幅梯度直方圖,橫坐標為梯度幅值,縱坐標為各梯度幅值對應像素點的頻率,如圖3所示。圖4為局部放大圖。
圖3 梯度幅度直方圖
圖4 局部放大圖
經(jīng)多次實驗,梯度直方圖具有以下特點:
1)圖像的背景區(qū)域梯度幅值較小,占了大部分比例,梯度直方圖的曲線在背景區(qū)域急劇下降,隨后邊緣緩慢。
2)在急劇下降過渡到平滑區(qū)域的區(qū)間內(nèi)存在零點,零點右側(cè)的尖峰代表一類邊緣強度像素點的集合,閾值選在平滑區(qū)域與尖峰之間才能更好地較少誤差。
通過對梯度直方圖的分析,閾值選取在平滑區(qū)域誤差最小,因此Otsu算法的迭代閾值應包含此區(qū)間,而直接應用Otsu需要遍歷所有的梯度值,通過一階差分梯度直方圖得到第一個過零點的值,作為Otsu算法初始閾值,通過計算二階梯度直方圖,定義參數(shù),使得二階差分小于時對應的梯度值作為上限值,參數(shù)通過實驗得到。
定義梯度直方圖為(),一階差分為diff,二階差分為diff′,則:
梯度直方圖一階差分diff、二階差分diff′計算結果如圖5所示。式(15)為,的約束條件,那么在[,]中應用Otsu法得到的閾值作為Canny邊緣檢測的高閾值誤差最小,且減少了Otsu算法的迭代次數(shù),加快了算法的運行時間。與文獻[5]算法運行時間比對,結果如表1所示。
圖5 差分圖
表1 算法運行時間比對
傳統(tǒng)的Canny算法采用雙閾值連接,大于高閾值的值直接置為強邊緣,介于高、低閾值之間的值通過尋找其八鄰域內(nèi)有沒有強邊緣決定該值是否為邊緣點,這種方式對于斷裂的邊緣沒有任何改進,圖像經(jīng)過非極大值抑制后,如圖6所示,大于highthreshold的邊緣圖像在輪廓上有斷裂。大于lowthreshold的邊緣圖像含有強邊緣、弱邊緣、偽邊緣,如圖7所示。
圖6 高閾值圖像
圖7 低閾值圖像
順時針遍歷搜尋高閾值圖像中所有端點,將端點作為初始引導點,找到差異圖中對應的點,如果差異圖(見圖8)的點滿足一定關系,則將邊緣存下,通過遞歸跟蹤算法在差異圖中搜集邊緣,斷裂的邊緣會得到很好的連接,且偽邊緣和噪聲點不會被連接。
圖8 差異圖
常用端點判別方式:經(jīng)非極大值抑制后的邊緣可以分為端點、邊緣點和孤立點,即在八鄰域中有1個點相連為端點;有2個及以上的點相連為邊緣點;沒有點相連為孤立點,如圖9所示。
圖9 邊緣點類別判斷圖
本文邊緣連接的思想為以高閾值圖像作為引導,計算高閾值圖像和低閾值圖像之間的差異圖。尋找高閾值圖像中的端點,在差異圖中對應的點搜索其八鄰域中有沒有點與邊緣線相連,有,則將該點連接到高閾值圖像中,并將該點更新到端點集合中,直到將高閾值圖像中的斷邊連接起來。
本文邊緣連接的步驟如下:
Step1:非極大值抑制后得到高閾值邊緣圖像;
Step2:得到低閾值邊緣圖像;
Step3:遍歷高閾值邊緣圖像,根據(jù)判別方式得到端點;
Step4:計算高、低閾值圖像的差異圖;
Step5:根據(jù)端點尋找鄰域內(nèi)滿足條件的點,將該點連接到高閾值圖像,并將端點集合更新;
Step6:重復Step5,直至將斷裂邊緣連接。
整個算法流程圖如圖10所示。
圖10 算法流程圖
本文在Matlab 2014b上實驗,實驗圖像分別為Lena、Peppers和人像圖,如圖11所示。由圖中結果可以看出,相比傳統(tǒng)Canny算子,Lena圖像在臉龐處和頂端連接上了斷邊,Peppers在中部斷邊處也得到了很好的連接,人像圖在袖子處的邊緣更加完整且連續(xù)。
圖11 傳統(tǒng)Canny與改進Canny實驗結果
為驗證邊緣檢測結果的性能,采用信噪比指標和文獻[7]給出的指標對傳統(tǒng)Canny和改進Canny邊緣檢測結果進行統(tǒng)計。信噪比(SNR)定義為:
式中:為邊緣檢測結果所有點3×3鄰域存在像素點個數(shù)大于3的總數(shù);代表邊緣檢測結果3×3鄰域像素點不大于3的總和。
指標計算結果如表2所示。結果表明,改進算法SNR指標高于傳統(tǒng)算法,說明改進Canny算法邊緣信息更豐富,邊緣連接性更好。
表2 SNR統(tǒng)計
第二種指標統(tǒng)計結果如表3所示。其中:代表檢測出的邊緣像素總數(shù),代表4連通數(shù),代表8連通數(shù),評價方法為計算和的值,的值越小,說明檢測結果的單邊緣響應越好,的值越小,說明算法檢測結果的連續(xù)性強,邊緣間斷少。結果表明,改進算法單邊緣響應效果好,邊緣檢測的完整性和連續(xù)性也優(yōu)于傳統(tǒng)算法。
表3 邊緣結果圖像統(tǒng)計
本文對傳統(tǒng)Canny算子進行了改進,采用雙邊濾波代替高斯濾波濾除噪聲的同時能夠保持邊緣信息,梯度計算增加45°和135°兩方向的模板以突出邊緣信息,接著對Canny算法進行自適應閾值計算,最后提出遞歸邊界跟蹤的邊緣連接方法。實驗結果表明,改進的算法邊緣連接性和完整性都優(yōu)于傳統(tǒng)Canny算法。