各種邊緣檢測算子

     常見邊緣檢測算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia

       一階微分算子:Roberts 、Sobel 、Prewitt

       Sobel算子是典型的基於一階導數的邊緣檢測算子,由於該算子中引入了類似局部平均的運算,因此對噪聲具有平滑作用,能很好的消除噪聲的影響。

       Roberts算子是一種利用局部差分算子尋找邊緣的算子,它採用對角線方向相鄰兩象素之差近似梯度幅值檢測邊緣。沒有經過圖像平滑處理的,因此圖像噪聲一般得不到很好的抑制。Roberts 算子對具有陡峭的低噪聲圖像的定位精度較高。

       Prewitt算子是一種一階微分算子的邊緣檢測,利用像素點上下、左右鄰點的灰度差,在邊緣處達到極值檢測邊緣,去掉部分僞邊緣,對噪聲具有平滑作用 。其原理是在圖像空間利用兩個方向模板與圖像進行鄰域卷積來完成的,這兩個方向模板一個檢測水平邊緣,一個檢測垂直邊緣。

        我們看這三種邊緣檢測算子模板及寫成差分的形式

 Roberts算子

Sobel算子

Prewitt算子

圖 1 一階微分算子

       如何計算邊緣幅值與方向?以Sobel算子爲例。3*3 Sobel兩個方向的算子在圖像上滑動,模板與其覆蓋的圖像3*3區域9個像素進行卷積,求和後得到此方向的邊緣檢測幅值。

f(x,y)爲圖像,Gx和Gy分別是水平和豎直方向算子的卷積結果,G則是最終得到的邊緣幅值,θ值則是邊緣方向。當然G的計算有時簡化爲

  

或者

 

求幅值時是有多種選擇的,一般根據具體應用選擇用水平還是豎直或是兩個方向同時檢測。

        另外,需要說明的是,Sobel算子還有一種變種,是各向同性Sobel算子,其模板爲

圖 2 各向同性Sobel算子

Sobel各向同性算子的權值比普通Sobel算子的權值更準確。爲什麼?模板的權值是離中心位置越遠則權值(看絕對值)影響越小,如上圖,把模板看成是9個小正方形,小正方形邊長爲1,則虛線三角形的斜邊長爲,下直角邊長爲1,則如果(0,0)位置權值絕對值大小爲1,則按照距離關係,位置(1,0)處的權值絕對值大小應該爲纔是準確的。

       二階微分算子:Laplacian、Log/Marr

        拉普拉斯算子來自拉普拉斯變換,Laplace算子是一種各向同性算子,二階微分算子,在只關心邊緣的位置而不考慮其周圍的象素灰度差值時比較合適。Laplace算子對孤立象素的響應要比對邊緣或線的響應要更強烈,因此只適用於無噪聲圖象。存在噪聲情況下,使用Laplacian算子檢測邊緣之前需要先進行低通濾波。所以,通常的分割算法都是把Laplacian算子和平滑算子結合起來生成一個新的模板。

而Log算子又稱Marr算子,這兩種算子模板如下:

Laplacian算子(兩種模板)

Log算子

圖 3 二階微分算子

 

拉普拉斯算子數學公式是

寫成差分形式爲

        Log邊緣檢測則是先進行高斯濾波再進行拉普拉斯算子檢測,然後找過零點來確定邊緣位置,很多時候我們只是知道Log 5*5模板如上圖所示,但是具體是怎麼得到的?下面進行推導。

二維高斯公式是

按拉普拉斯算子公式求x,y方向的二階偏導後爲

這裏x,y不能看成模板位置,應看成是模板其他位置到中心位置的距離。那麼寫成

這裏x0,y0就是模板中心位置,x,y是模板其他位置,對於5*5模板,則x0=2,y0 = 2,那對於模板中(0,0)位置的權值,即把x= 0,y= 0,x0= 2,y0 = 2帶入上式,另= 1,得到約等於0.0175,這樣得到

通過取整變符號,且模板總和爲0,得到圖6所示的模板。

        另外,這裏模板大小是如何取的?通常高斯分佈中,在(-3,3)的範圍內就覆蓋了絕大部分區域,所以模板大小一般取dim = 1 + 6(在SIFT特徵中,其中的高斯模糊也是這樣取),dim如果爲小數,則取不小於dim的最小整數,當然實際使用時沒有這麼嚴格,如上面我們取=1時,模板大小取5*5。那同一個尺寸的模板中的權值調整就是的變化得到的,變化到一定程度,模板尺寸大小改變(這個是個人理解)。

 

       非微分邊緣檢測算子:Canny

       Canny邊緣檢測大家應該很熟悉,這裏列出步驟,並給出一個詳細介紹的鏈接Canny算子

    1.      彩色圖像轉換爲灰度圖像
    2.      對圖像進行高斯模糊
    3.      計算圖像梯度,根據梯度計算圖像邊緣幅值與角度(這裏其實用到了微分邊緣檢測算子來計算梯度幅值方向)
    4.      非最大信號壓制處理(邊緣細化)
    5.      雙閾值邊緣連接處理
    6.      二值化圖像輸出結果

   方向算子Kirsch(8個3*3模板),Nevitia (12個5*5模板)

        這兩個算子是利用多個方向的子模板進行分別計算,最後取幅值最大的那個爲最終邊緣幅值,方向即最大幅值對應的那個方向

 

五、各邊緣檢測算子對比

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章