天天看點

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

邊緣檢測算子總結

  • ​​邊緣檢測算子總結​​
  • ​​SUSAN邊緣及角點檢測方法​​
  • ​​SUSAN檢測方法概述​​
  • ​​SUSAN邊緣檢測​​
  • ​​邊緣響應的計算​​
  • ​​邊緣方向的計算​​
  • ​​非極大值抑制​​
  • ​​子像素精度​​
  • ​​檢測位置并不依賴于視窗大小​​
  • ​​SUSAN角點檢測​​
  • ​​排除誤檢的角點​​
  • ​​非極大值抑制​​
  • ​​SUSAN噪聲濾波方法​​
  • ​​新興的邊緣檢測算法​​

邊緣檢測算子總結

算子 優缺點比較
Roberts 對具有陡峭的低噪聲的圖像處理效果較好, 但利用Roberts算子提取邊緣的結果是邊緣比較粗, 是以邊緣定位不是很準确。
Sobel 對灰階漸變和噪聲較多的圖像處理效果比較好, Sobel算子對邊緣定位比較準确。
Kirsch 對灰階漸變和噪聲較多的圖像處理效果較好。
Prewitt 對灰階漸變和噪聲較多的圖像處理效果較好。
Laplacian 對圖像中的階躍性邊緣點定位準确, 對噪聲非常敏感, 丢失一部分邊緣的方向資訊, 造戌一些不連續的檢測邊緣。
LoG LoG算子子經常出現雙邊緣像素邊界, 而且該檢測方法對噪聲比較敏感,是以很少用LoG算子檢測邊緣,而是用來判斷邊緣像素是位于凸顯過的明區還是暗區。
Canny 此方法不容易受噪聲的幹擾,能夠檢測到真正的弱邊緣。在edge函數中,最有效的邊緣檢測方法是Canny方法,該方法 的優點在于使用不同的門檻值分别檢測強邊緣和弱邊緣,并且僅當弱邊緣與強邊緣相連時,才将弱邊緣包含在輸出圖像中。是以,這種方法不容易被噪聲“填充”,跟容易檢測出真正的弱邊緣

SUSAN邊緣及角點檢測方法

SUSAN檢測方法概述

SUSAN檢測方法是一種基于視窗模闆的檢測方法,主要是通過在圖像每個像素點位置處建立一個視窗,這個視窗是圓形的,這裡為了得到各方向同性的響應,視窗内可以是常數權值或高斯權值,一般情況下,視窗半徑為3.4個像素(即視窗内總有37個像素)。 這樣的視窗模闆被放置在每個像素的位置,确定點之間強度相似程度可以由下面的圖來描述,這裡的x軸是指像素點之間強度差别,y軸指的相似程度,為1就指完全相似。

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法
深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

考慮為了運算簡單,一般情況下使用a線(上圖),最後統計是以同中心點相似的點數(即相似程度為1的點)相似點所在區域被稱為USAN(Univalue Segment Assimilating Nucleus),而特征邊緣或角點就是在這個點數值局部最小地方。圖中的分界點(區分是否相似的像素差别)實際上反映了圖像特征的最小對比程度,及被排除噪聲的最大數目。

SUSAN邊緣及角點檢測沒有用到圖像像素的梯度(導數),因為這個原因,是以即使在噪聲存在情況下,也能有好的表現。因為隻要噪聲足夠的少,沒有包含到所有相似像素的點,那麼噪聲就可以被排除。在計算時,單個值的集合統一消除了噪聲的影響,是以SUSAN對于噪聲具有較好的魯棒性。

SUSAN是通過比較像素點鄰域同其中心相似程度,是以也具有了光強變化不變性(因為像素點差别不會變化),及旋轉不變性(旋轉不會改變局部像素間的相似程度),及一定程度的尺度不變性(角點的角度在尺度放大并不會變化,這裡的一定程度是指在尺度放大時,局部的曲度會慢慢平滑)。另外SUSAN使用的參數也非常的少,是以對于計算量及儲存量要求低。

SUSAN方法被提出來,主要是為針對于邊緣檢測和角點檢測的,然後其對于噪聲較高的魯棒性,也會用于在噪聲消除中,被用于去選擇最佳局部平滑鄰域(相似程度的點最多的地方)。本文重點描述SUSAN方法用于邊緣檢測和角點檢測的思路,并簡要介紹下SUSAN方法是如何應用于噪聲消除領域的。

SUSAN邊緣檢測

SUSAN邊緣檢測總共包括5個步驟:

  1. 邊緣響應的計算;
  2. 邊緣方向的計算;
  3. 非極大值抑制;
  4. 子像素精度和檢測位置。

    具體的檢測過程如下。

邊緣響應的計算

首先考慮到圖像以每點像素為中心的圓形模闆(半徑為3.4個像素,模闆内共有37個像素),對于其内的每個鄰域點都作如下相似度衡量的計算(标準是上圖的a線),這裡的r是領域像素距離中心的長度,而r0是中心位置,t指相似度分界值(其決定了特征同背景的最小差別程度,及最大可被排除的噪聲數)。

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

當然我們也可以用平滑的線來從代替這種直接的分割方式(如下圖b線),這樣可以獲得更穩定而敏感的結果,雖然計算複雜但是可以通過查找表來獲得較快的速度。公式如下:

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

并計算總共的相似程度:

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

接下來,将n同一個固定的門檻值g比較(一般設定為最大同中心相似點數nmax的0.75倍左右),初始的邊緣響應可以用下面等式計算:

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

這裡g是為了排除噪聲的影響,而當n小于這個門檻值時,才能被考慮其的邊緣是否是邊緣,n越小,其邊緣響應就越大。如果一個階躍邊緣被考慮,如果這個點在邊緣上,那麼其USAN的值應當是小于或等于0.5倍的最大值,而對于曲線邊緣來說,這個值應該會更少(因為曲度會更小,是以在視窗内,曲線内的區域會更小),是以g的加入不會影響原來的邊緣檢測的結果的(即所得的邊緣響應R是不會為0的)。

邊緣方向的計算

為什麼要計算邊緣方向呢?首先,非極大值抑制需要找到邊緣方向(這個之後再解釋),另外确定子像素級精度也需要找到邊緣方向(這個好了解),最後,一些應用可以會用到邊緣方向(也包括位置及長度),一個像素若其邊緣長度不會0,那麼便有邊緣方向,邊緣一般有兩種情況:

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

一種是标準的邊緣點(如同中的a和b,其剛好位于邊緣的一邊或另一邊),而c是另一種情況,其剛好位于左右兩邊的過渡帶間,而過渡帶的強度恰好為左右像素強度的一半。這裡還引入了一個概念,USAN的引力中心(USAN區域即圖像模闆内的白色區域,就是同中心相似的區域),其可以由下式計算:

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

其中a和b情況可以被視一種像素間邊緣,引力中心同模闆中心的向量恰好垂直于局部邊緣方向,我們可以通過這種方式來找到其邊緣方向。 而上圖c的情況就完全不一樣了,其引力中心同模闆中心恰好在一點上(這被視為一種像素内邊緣),此時邊緣的方向就要找到USAN區域内最長的對稱軸方向,這個可以通過如下公式來獲得:

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

前兩項的比值可以用于确定邊緣的方向(度數),而後一項的符号用于确定一個傾斜邊緣其梯度的符号(往那邊傾斜)。 接下來的問題就是如何自動決定每點是屬于以上哪種的邊緣,首先如果USAN區域(像素數)比模闆直徑(像素數)要小,那麼這應該是像素内邊緣(如c)。如果要大的話,然後又找到USAN的引力中心,那麼這應該是像素間邊緣情況(如a和b)。如果引力中心同模闆中心的距離小于1個像素的話,此時用于像素内邊緣情況(如c)來計算更為精确。

非極大值抑制

CANNY算子中已有介紹,此處不再贅述。

連結: ​​二階微分算子​​.

子像素精度

對于每一個邊緣點,首先找到邊緣方向,然後在邊緣垂直方向上減少邊緣寬度,之後剩下的邊緣點做3點二次曲線拟合,而曲線的轉折點(一般情況下同最初邊緣點的距離應當少于半個像素)被視為邊緣的精确位置。

檢測位置并不依賴于視窗大小

即視窗模闆增大,不會改變檢測的邊緣的位置,即SUSAN具有尺度不變性,另外其對于視點改變後的圖像檢測重複率也非常高,因為視點變化不會影響其角點是否存在。

SUSAN角點檢測

  1. 角點檢測方法同其邊緣檢測方法非常類似,其使用相同的方法來計算每個像素點的同圓形視窗内的相似程度n,然後n也是同一個權值g來比較,不過這裡的g隻是控制噪聲存在數目,而需要考慮邊緣,是以g的值為nmax的一半就可以了。
  2. 在特征檢測方法裡,我們一般需要至少一個門檻值來區分特征同非特征,而這個門檻值的選擇将極大影響了最終特征提取的結果。一般情況下,這裡有兩種類型的門檻值:一個衡量品質,一個衡量數量。
  3. SUSAN方法裡的t和g恰好分别符合這兩種情況,g控制角點檢測的品質,如果g越小,那麼我們得到的角點就更尖銳,而t則控制角點數目,如果t越小,那麼我們檢測的角點數目就越小,然後t卻不會影響最終角點品質。(這段是題外話了)
  4. 在計算角響應度後,而在非極大值抑制之前,我們可以排除一些在邊緣或噪聲位置的誤檢測角點,比如一條傾斜率比較小的直線,因為邊緣線至少要一個像素寬度,是以會在直線上形成不連續斷裂,這些斷裂的位置可能會形成被誤檢的角點(如上圖的c)。

排除誤檢的角點

首先找到USAN的引力中心,然後計算引力中心同模闆中心的距離,當USAN恰好能訓示一個正确角點時,其引力中心同模闆中心将不會靠得太近,而如果是條細線的話,引力中心同模闆中心将會很近(如上圖a和b所示)。另外的操作就是要加強USAN的鄰近連續性,在真實圖像裡,非常容易出現小的噪聲點,而這些噪聲點可能分布于USAN内。是以對于模闆内所有的像素,如果其是位于引力中心同模闆中心所連的直線上,那麼都應該視為USAN的一部分。

非極大值抑制

SUSAN角點檢測方法同基于導數檢測方法一個非常大的優勢在于,其不會在靠近中心相鄰的區域不會與中心區域的角響應很難區分,是以局部的非極大值抑制中需要簡單地選擇局部的最大值就可以了。

SUSAN噪聲濾波方法

SUSAN噪聲濾波方法主要是通過僅平滑那些同中心像素相似的區域(即USAN),而由此保留圖像的結構資訊。而USAN的平滑主要就是找到其中是以像素的平均值,而不會對其相鄰的不相關區域進行操作。 不過在區分相似度的公式上,卻沒有用到原來的公式,而是如下:

深度學習傳統CV算法——邊緣檢測算子總結以及新興邊緣算法

濾波器的最終公式為:

新興的邊緣檢測算法

  1. 小波分析

    1986 年,小波分析在 Y.Meyer , S.Mallat 與 I.Daubechies 等的研究工作基礎上迅速地發展起來,成為一門新興的學科,并在信号進行中應用相當廣泛。小波變換的理論基礎是傅裡葉變換,它具有多尺度特征,如當尺度較大時,可以很好的濾除噪聲,但不能很精确的檢測到邊緣;當尺度較小時,能夠檢測到很好的邊緣資訊,但圖像的去噪效果較差。是以可以把用多種尺度來檢測邊緣而得到的結果相結合,充分利用各種尺度的優點,來得到更精确的檢測結果。 目前,有很多不同的小波邊緣檢測算法,主要差别在于采用的小波變換函數不同,常用的小波函數包括: Morlet 小波、 Daubechies 小波、 Harr 小波、Mexican Hat 小波、 Hermite 小波、 Mallet 小波、基于高斯函數的小波及基于B 樣條的小波等。

  2. 模糊算法

    在上世紀 80 年代中期, Pal 與 King 等人率先提出了一種模糊算法用來檢測圖像的邊緣,可以很好地把目标物體從背景中提取出來。基于模糊算法的圖像邊緣檢測步驟如下: (1) 把隸屬度函數 G 作用在圖像上,得到的映像為“模糊的隸屬度矩陣”; (2) 反複對隸屬度矩陣實行非線性變換,進而使真實的邊緣更加明顯,而僞邊緣變弱; (3) 計算隸屬度矩陣的𝐺−1 ( 逆 ) 矩陣; (4)采用“ max ”和“ min ”算子提取邊緣。該算法存在的缺點是計算複雜,且一部分低灰階值的邊緣資訊有所損失。

    3 人工神經網絡

    利用人工神經網絡 [36-38] 來提取邊緣在近年來已經發展為一個新的研究方向,其本質是視邊緣檢測為模式識别問題,以利用它需要輸入的知識少及适合并行實作等的優勢。其思想與傳統方法存在很大的不同,是先把輸入圖像映射到某種神經元網絡,再把原始邊緣圖這樣的先驗知識輸入進去,然後進行訓練,一直到學習過程收斂或者使用者滿意方可停止。用神經網絡方法來構造函數模型主要是依據訓練。在神經網絡的各種模型中,前饋神經網絡應用最為廣泛,而最常用來訓練前饋網絡的是 BP 算法。用 BP 網絡檢測邊緣的算法存在一些缺點,如較慢的收斂速度,較差的數值穩定性,難以調整參數,對于實際應用的需求很難滿足。目前, Hopfield神經網絡算法和模糊神經網絡算法在很多方面都有所應用。神經網絡具有下面 5 種特性: (1) 自組織性; (2) 自學習性; (3) 聯想存儲功能; (4) 告訴尋求優化解的能力; (5) 自适應性等。 以上神經網絡的特性決定了它用來檢測圖像邊緣的可用性。

繼續閱讀