1. 程式人生 > >梯度與邊緣檢測常用運算元:Roberts、Prewitt、Sobel、LOG,Canny、Lapacian運算元

梯度與邊緣檢測常用運算元:Roberts、Prewitt、Sobel、LOG,Canny、Lapacian運算元

原文:https://blog.csdn.net/swj110119/article/details/51777422
原文:https://blog.csdn.net/gdut2015go/article/details/46779251

幾種邊緣檢測運算元的比較Roberts,Sobel,Prewitt,LOG,Canny

邊緣檢測是影象處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數字影象中亮度變化明顯的點。影象屬性中的顯著變化通常反映了屬性的重要事件和變化。這些包括:深度上的不連續、表面方向不連續、物質屬性變化和場景照明變化。 邊緣檢測是影象處理和計算機視覺中,尤其是特徵提取中的一個研究領域。影象邊緣檢測大幅度地減少了資料量,並且剔除了可以認為不相關的資訊,保留了影象重要的結構屬性。有許多方法用於邊緣檢測,它們的絕大部分可以劃分為兩類:基於查詢一類和基於零穿越的一類。基於查詢的方法通過尋找影象一階導數中的最大和最小值來檢測邊界,通常是將邊界定位在梯度最大的方向。基於零穿越的方法通過尋找影象二階導數零穿越來尋找邊界,通常是Laplacian

過零點或者非線性差分表示的過零點。

人類視覺系統認識目標的過程分為兩步:首先,把影象邊緣與背景分離出來;然後,才能知覺到影象的細節,辨認出影象的輪廓。計算機視覺正是模仿人類視覺的這個過程。因此在檢測物體邊緣時,先對其輪廓點進行粗略檢測,然後通過連結規則把原來檢測到的輪廓點連線起來,同時也檢測和連線遺漏的邊界點及去除虛假的邊界點。影象的邊緣是影象的重要特徵,是計算機視覺、模式識別等的基礎,因此邊緣檢測是圖象處理中一個重要的環節。然而,邊緣檢測又是圖象處理中的一個難題,由於實際景物影象的邊緣往往是各種型別的邊緣及它們模糊化後結果的組合,且實際影象訊號存在著噪聲。噪聲和邊緣都屬於高頻訊號,很難用頻帶做取捨。

這就需要邊緣檢測來進行解決的問題了。邊緣檢測的基本方法有很多,一階的有Roberts Cross運算元,Prewitt運算元,Sobel運算元,Canny運算元,Krisch運算元,羅盤運算元;而二階的還有Marr-Hildreth,在梯度方向的二階導數過零點。現在就來簡單介紹一下各種運算元的演算法

一、學習心得:
學習影象處理的過程中,剛開始遇到影象梯度和一些運算元的概念,這兩者到底是什麼關係,又有什麼不同,一直困擾著我。後來在看到影象分割這一模組後才恍然大悟,其實影象的梯度可以用一階導數和二階偏導數來求解。但是影象以矩陣的形式儲存的,不能像數學理論中對直線或者曲線求導一樣,對一幅影象的求導相當於對一個平面、曲面求導。對影象的操作,我們採用模板對原影象進行卷積運算,從而達到我們想要的效果。而獲取一幅影象的梯度就轉化為:模板(Roberts、Prewitt、Sobel、Lapacian運算元)對原影象進行卷積,不過這裡的模板並不是隨便設計的,而是根據數學中求導理論推匯出來的。下面就逐一分析各梯度運算元的推導過程。

二、運算元推導過程

1、知識引入:

在一維連續數集上有函式f(x),我們可以通過求導獲得該函式在任一點的斜率,根據導數的定義有:

這裡寫圖片描述

在二維連續數集上有函式f(x,y),我們也可以通過求導獲得該函式在x和y分量的偏導數,根據定義有:
這裡寫圖片描述

2、梯度和Roberts運算元:
對於影象來說,是一個二維的離散型數集,通過推廣二維連續型求函式偏導的方法,來求得影象的偏導數,即在(x,y)處的最大變化率,也就是這裡的梯度:
這裡寫圖片描述
梯度是一個向量,則(x,y)處的梯度表示為:這裡寫圖片描述
其大小為:這裡寫圖片描述
因為平方和平方根需要大量的計算開銷,所以使用絕對值來近似梯度幅值:
這裡寫圖片描述
方向與α(x,y)正交:這裡寫圖片描述
其對應的模板為:這裡寫圖片描述

上面是影象的垂直和水平梯度,但我們有時候也需要對角線方向的梯度,定義如下:
這裡寫圖片描述
對應模板為:這裡寫圖片描述

     上述模板就是Roberts交叉梯度運算元。

  
  • 1

2*2大小的模板在概念上很簡單,但是他們對於用關於中心點對稱的模板來計算邊緣方向不是很有用,其最小模板大小為3*3。3*3模板考慮了中心點對段資料的性質,並攜帶有關於邊緣方向的更多資訊。

3、Prewitt和Sobel運算元:
在3*3模板中:這裡寫圖片描述

我如下定義水平、垂直和兩對角線方向的梯度:
這裡寫圖片描述
該定義下的運算元稱之為Prewitt運算元:
這裡寫圖片描述

Sobel運算元是在Prewitt運算元的基礎上改進的,在中心繫數上使用一個權值2,相比較Prewitt運算元,Sobel模板能夠較好的抑制(平滑)噪聲。
計算公式為:這裡寫圖片描述
Sobel運算元:這裡寫圖片描述

上述所有運算元都是通過求一階導數來計算梯度的,用於線的檢測,在影象處理中,通常用於邊緣檢測。在影象處理過程中,除了檢測線,有時候也需要檢測特殊點,這就需要用二階導數進行檢測。

4、Lapacian運算元:
一階導數:這裡寫圖片描述

二階導數:這裡寫圖片描述

我們感興趣的是關於點x的二階導數,故將上式中的變數減1後,得到:
這裡寫圖片描述

在影象處理中通過拉普拉斯模板求二階導數,其定義如下:
這裡寫圖片描述
對應模板為:
這裡寫圖片描述
模板中心位置的數字是-8而不是-4,是因為要使這些係數之和為0,當遇到恆定湖對區域時,模板響應應將0。

在用lapacian運算元影象進行卷積運算時,當響應的絕對值超過指定閾值時,那麼該點就是被檢測出來的孤立點,具體輸出如下:
這裡寫圖片描述


分界線,另一種描述

Roberts運算元

Roberts運算元是一種利用區域性差分運算元尋找邊緣的運算元,它有下式給出:


其中 分別為4領域的座標,且是具有整數畫素座標的輸人影象;其中的平方根運算使得該處理類似於人類視覺系統中發生的過程。

Roberts運算元是2X2運算元模板。圖1所示的2個卷積核形成了Roberts運算元。圖象中的每一個點都用這2個核做卷積。


Sobel運算元

Sobel運算元是一種一階微分運算元,它利用畫素鄰近區域的梯度值來計算1個畫素的梯度,然後根據一定的絕對值來取捨。它由下式給出:


Sobel運算元是3*3運算元模板。圖2所示的2個卷積核dx 、 dy形成Sobel運算元。一個核對通常的垂直邊緣響應最大,而另一個核對水平邊緣響應最大。2個卷積的最大值作為該點的輸出值。運算結果是一幅邊緣幅度影象。


Prewitt運算元

Prewitt運算元由下式給出:


Prewitt運算元是3*3運算元模板。圖3所示的2個卷積核dx ,不要形成了Prewitt運算元。與Sobel運算元的方法一樣,影象中的每個點都用這2個核進行卷積,取最大值作為輸出值。Prewitt運算元也產生一幅邊緣幅度影象。


LOG濾波器又稱Marr-Hildreth模板或運算元


式中:G(x,y)是對影象進行處理時選用的平滑函式(Gaussian函式);x,y為整數座標; σ為高斯分佈的均方差。對平滑後的影象fs(fs=f(x,y)*G(x,y))做拉普拉斯變換,得:


即先對圖象平滑,後拉氏變換求二階微分,等效於把拉氏變化作用於平滑函式,得到1個兼有平滑和二階微分作用的模板,再與原來的影象進行卷積。用Marr-Hildreth模板與影象進行卷積的優點在於,模板可以預先算出,實際計算可以只進行卷積。

LOG濾波器有以下特點:

(1)通過圖象平滑,消除了一切尺度小於σ的影象強度變化;

(2)若用其它微分法,需要計算不同方向的微分,而它無方向性,因此可以節省計算量;

(3)它定位精度高,邊緣連續性好,可以提取對比度較弱的邊緣點。

LOG濾波器也有它的缺點:當邊緣的寬度小於運算元寬度時,由於過零點的斜坡融合將會丟失細節。

LOG濾波器有無限長的拖尾,若取得很大尺寸,將使得計算不堪重負。但隨著:的增加,LOG濾波器幅值迅速下降,當r大於一定程度時,可以忽略模板的作用,這就為節省計算量創造了條件。實際計算時,常常取n*n大小的LOG濾波器,近似n=3σ。另外,LOG濾波器可以近似為兩個指數函式之差,即DOG ( Difference Of twoGaussians functions):


當σ1/σ2=1.6時,DOG代替LOG減少了計算量。

Canny運算元

Canny運算元是是一階運算元。其方法的實質是用1個準高斯函式作平滑運算fs=f(x,y)*G(x,y),然後以帶方向的一階微分運算元定位導數最大值。

     平滑後fs(x,y)的梯度可以使用2*2的一階有限差分近似式:

P[i,j]≈(fs[i,j+1]-fs[i,j]+fs[i+1,j+1]-fs[i+1,j])/2

Q[i,j]≈(fs[i,j]-fs[i+1,j]+fs[i,j+1]-fs[i+1,j+1])/2

在這個2x2正方形內求有限差分的均值,便於在影象中的同一點計算二和y的偏導數梯度。幅值和方向角可用直角座標到極座標的座標轉化來計算:


M[i,j]反映了圖象的邊緣強度;反映了邊緣的方向。使得M}i,j}取得區域性最大值的方向角,就反映了邊緣的方向。

Canny運算元也可用高斯函式的梯度來近似,在理論上很接近4個指數函式的線性組合形成的最佳邊緣運算元。在實際工作應用中程式設計較為複雜且運算較慢。

幾種運算元的比較

Robert運算元定位比較精確,但由於不包括平滑,所以對於噪聲比較敏感。Prewitt運算元和Sobel運算元都是一階的微分運算元,而前者是平均濾波,後者是加權平均濾波且檢測的影象邊緣可能大於2個畫素。這兩者對灰度漸變低噪聲的影象有較好的檢測效果,但是對於混合多複雜噪聲的影象,處理效果就不理想了。LOG濾波器方法通過檢測二階導數過零點來判斷邊緣點。LOG濾波器中的a正比於低通濾波器的寬度,a越大,平滑作用越顯著,去除噪聲越好,但影象的細節也損失越大,邊緣精度也就越低。所以在邊緣定位精度和消除噪聲級間存在著矛盾,應該根據具體問題對噪聲水平和邊緣點定位精度要求適當選取。

討論和比較了幾種常用的邊緣檢測運算元。梯度運算元計算簡單,但精度不高,只能檢測出影象大致的輪廓,而對於比較細的邊緣可能會忽略。Prewitt 和Sobel 運算元比Roberts 效果要好一些。LOG 濾波器和Canny 運算元的檢測效果優於梯度運算元,能夠檢測出影象較細的邊緣部分。不同的系統,針對不同的環境條件和要求,選擇合適的運算元來對影象進行邊緣檢測。