2015-10-28 241 views
1

我正在編碼我自己的Canny版本。因此,從文獻中,我們必須:Canny邊緣檢測器

  1. 光滑高斯
    • 在這裏,我使用了一個5x5的面具
  2. 計算梯度大小和方向

    • 在這裏,我使用索貝爾,然後

      Grad = abs(Gx)+ abs(Gy) 
      Orient = (atan2(Gy/Gx) * 180/3.14159265) + 180 
      
  3. 非最大抑制
    • 對於離,如果東方= 0°=>如果G(I; j)的> G(I; J-1)& & G(I; j)的「G (ⅰ; J + 1)=> MAX這裏,否則= 0
  4. 雙閾
    • 在此步驟中,我們得到NL和NH
    • 在這點,很明顯,NL包含NH,所以NL = NL-NH現在,對於NH(x,y)中的每個非零像素p,我必須將有效像素標記爲NL(x, Y)被連接至p​​
  5. 最終圖像
    • 這將是NL + NH

在最後我從OPENCV坎尼輸出比較。

我在做什麼錯了?

+0

什麼是沒有step1的輸出? – basav

回答

1

OpenCV的精明不做任何高斯濾波。儘量不要過濾它然後比較結果。

P.S.我沒有審查你的所有步驟。他們可能有另一個錯誤/ s

0

血腥地獄!在可能的四種情況下,對方向進行四捨五入的錯誤。在某些情況下,我忘記了等號。現在它都是固定的。

現在我很滿意:)

謝謝大家!

致以問候