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

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

原文;https://blog.csdn.net/swj110119/article/details/51777422 一、學習心得: 學習影象處理的過程中,剛開始遇到影象梯度和一些運算元的概念,這兩者到底是什麼關係,又有什麼不同,一直困擾著我。後來在看到影象分割這一模組後才恍然大悟,其實影象的梯度可以用一階導數和二階偏導數來求解。但是影象以矩陣的形式儲存的,不能像數學理論中對直線或者曲線求導一樣,對一幅影象的求導相當於對一個平面、曲面求導。對影象的操作,我們採用模板對原影象進行卷積運算,從而達到我們想要的效果。而獲取一幅影象的梯度就轉化為:模板(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運算元影象進行卷積運算時,當響應的絕對值超過指定閾值時,那麼該點就是被檢測出來的孤立點,具體輸出如下: 這裡寫圖片描述