天天看點

深度學習傳統CV算法——一階微分邊緣算子

一階微分邊緣算子詳解

  • ​​一階微分邊緣算子​​
  • ​​一階微分邊緣算子基本思想​​
  • ​​Roberts 算子​​
  • ​​Roberts 算法思想​​
  • ​​Roberts 算法步驟​​
  • ​​Roberts 算子的推導​​
  • ​​Roberts 算法優缺點​​
  • ​​Prewitt 算子​​
  • ​​Prewitt 算法思想​​
  • ​​Prewitt 算法步驟​​
  • ​​Prewitt 算法優缺點​​
  • ​​Sobel 算子​​
  • ​​Sobel 算法思想​​
  • ​​Sobel 算法優缺點​​
  • ​​Sobel 的變種——Istropic Sobel​​
  • ​​Kirsch 算子​​
  • ​​Kirsch 算法思想​​
  • ​​Kirsch 算法步驟​​
  • ​​Kirsch 算法計算優化​​
  • ​​Kirsch 算法優缺點​​
  • ​​*Robinson 算子​​
  • ​​*Nevitia 算子​​

一階微分邊緣算子

一階微分邊緣算子基本思想

一階微分邊緣算子也稱為梯度邊緣算子,它是利用圖像在邊緣處的階躍性,即圖像梯度

在邊緣取得極大值的特性進行邊緣檢測。梯度是一個矢量,它具有方向θ 和模|ΔI|:

梯度的方向提供了邊緣的趨勢資訊,因為梯度方向始終是垂直于邊緣方向,梯度的模

值大小提供了邊緣的強度資訊。

在實際使用中,通常利用有限差分進行梯度近似。對于上面的公式,我們有如下的近

似:

Roberts 算子

Roberts 算法思想

1963 年,Roberts 提出了這種尋找邊緣的算子。Roberts 邊緣算子是一個 2x2 的模闆,采用的是對角方向相鄰的兩個像素之差。從圖像處理的實際效果來看,邊緣定位較準,對噪聲敏感。 由 Roberts 提出的算子是一種利用局部差分算子尋找邊緣的算子,邊緣的銳利程度由圖像灰階的梯度決定。梯度是一個向量,∇ f 指出灰階變化的最快的方向和數量。

是以,最簡單的邊緣檢測算子是用圖像的垂直和水準差分來逼近梯度算子:

對每一個像素計算出以上式子的向量,求出它的絕對值,然後與門檻值進行比較,利用

這種思想就得到了Roberts 交叉算子:

Roberts 算法步驟

Roberts 算法過程非常簡單。選用1 範數梯度計算梯度幅度:|G(x,y)|=|𝐺𝑥|+|𝐺𝑦|。

卷積模闆為:

深度學習傳統CV算法——一階微分邊緣算子

則模闆運算結果:

如果G(x,y)大于某一門檻值,則我們認為(x,y)點為邊緣點。

Roberts 算子的推導

Roberts 算法優缺點

Roberts 算子利用局部差分算子尋找邊緣,邊緣定位精度高,但容易丢失一部分邊緣,同時由于圖像沒有經過平滑處理,是以不具備抑制噪聲能力。該算子對具有陡峭邊緣且含有噪聲少的圖像處理效果較好。另外,由于該檢測算子模闆沒有中心點,是以它在實際中很少使用。

Prewitt 算子

Prewitt 算法思想

Prewitt 算子是 J.M.S.Prewitt 于 1970 年提出的檢測算子。不同于 Roberts 算子采用22 大小的模闆,Prewittt 算法采用了33 大小的卷積模闆。22 大小的模闆在概念上很簡單,但是他們對于用關于中心點對稱的模闆來計算邊緣方向不是很有用,其最小模闆大小為33。3*3 模闆考慮了中心點對段資料的性質,并攜帶有關于邊緣方向的更多資訊。 在算子的定義上,Prewitt 希望通過使用水準+垂直的兩個有向算子去逼近兩個偏導數𝐺𝑥,𝐺𝑦,這樣在灰階值變化很大的區域上卷積結果也同樣達到極大值。

1 1 1
-1 -1 -1

水準方向

1 -1
1 -1
1 -1

垂直方向

Prewitt 算法步驟

Prewitt 邊緣檢測算子使用兩個有向算子(水準+垂直),每一個逼近一個偏導數,這是

一種類似計算偏微分估計值的方法,x,y 兩個方向的近似檢測算子為:

得出卷積模闆為:

記圖像M,梯度幅值T,比較

threshold

如果最終T 大于門檻值 threshold,那麼該點為邊緣點。

Prewitt 算法優缺點

Prewitt 算子對灰階漸變和噪聲較多的圖像處理效果較好,但不能完全排除檢測結果中

出現的虛假邊緣。

Sobel 算子

Sobel 算法思想

Sobel 最初是1968 年在一次博士生課題讨論會1968 上提出(“A 3x3 Isotropic Gradient Operator for Image Processing”),後來正式出版發表是在 1973 年的一本專著(“Pattern Classification and Scene Analysis”)的腳注裡作為注釋出現和公開的。Sobel 算子和Prewitt算子都是權重平均,但是 Sobel 算子認為,鄰域的像素對目前像素産生的影響不是等價的,是以距離不同的像素具有不同的權值,對算子結果産生的響也不同。一般來說,距離越遠,産生的影響越小。 将 Prewitt 邊緣檢測算子模闆的中心系數增加一個權值 2,不但可以突出中心像素點,而且可以得到平滑的效果,這就成為索貝爾算子。

###Sobel 算法步驟

Sobel 算子一種将方向差分運算與局部平均相結合的方法。該算子是在以 f(x,y)為中心的3x3 鄰域上計算x 和y 方向的偏導數,即

公式:

得出卷積模闆為:

記圖像M,梯度幅值T,比較

threshold

如果最終T 大于門檻值 threshold,那麼該點為邊緣點。

Sobel 算法優缺點

Sebel 有明顯的兩個優點:一是高頻的像素點少,低頻的像素點多,使像素的灰階平均值下降,且由于噪聲一般為高頻信号,是以它具有抑制噪聲的能力;二是檢測到的邊緣比較寬,至少具有兩個像素的邊緣寬度,進而使其得到了廣泛應用。但是不能完全排除檢測結果中出現的虛假邊緣。

Sobel 的變種——Istropic Sobel

Sobel 算子還有一種變種 Istropic Sobel,是各向同性 Sobel 算子,其模闆為

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

Kirsch 算子

Kirsch 算法思想

Kirsch 算子是 R.Kirsch 提出來的一種邊緣檢測算法。與前述的算法不同之處在于,Kirsch 考慮到 33 的卷積模闆事實上涵蓋着 8 種方向(左上,正上,……,右下),于是Kirsch 采用 8 個 33 的模闆對圖像進行卷積,這8 個模闆代表 8 個方向,并取最大值作為圖像的邊緣輸出。

Kirsch 算法步驟

它采用下述8 個模闆對圖像上的每一個像素點進行卷積求導數:

最終選取8 次卷積結果的最大值作為圖像的邊緣輸出。

Kirsch 算法計算優化

假設圖像中一點 A 及其周圍3×3 區域的灰階如下圖所示,設𝑞𝑖(i=0,1,……,7)為圖像,經過Kirsch 算子第(i+1)個模闆處理後得到的A 點的灰階值。

深度學習傳統CV算法——一階微分邊緣算子

處理後在A 點的灰階值為:

通過矩陣變換發現經過 Kirsch 算子得到的像素值直接的關系, 事實上需要直接由鄰域 像素點計算得到的隻有 , , 是以可以大大減少計算量。

Kirsch 算法優缺點

Kirsch 算子屬于模闆比對算子,采用八個模闆來處理圖像的檢測圖像的邊緣,運算量比

較大,但是它在保持細節和抗噪聲方面都有較好的效果。

*Robinson 算子

Robinson 與Kirsch 算子非常類似,也是8 個模闆,隻是模闆的内容有差異:

深度學習傳統CV算法——一階微分邊緣算子

*Nevitia 算子

Nevitia 算子采用的是 5×5 的卷積模闆,它與 Kirsch 類似,也是屬于方向算子,總共能确定4*(5-1)=12 個方向,是以包含有12 個 5×5 的模闆。 其中前6 個模闆如下,後6 個模闆可以由對稱性得到。

深度學習傳統CV算法——一階微分邊緣算子

繼續閱讀