2015-10-28 195 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

血腥地狱!在可能的四种情况下,对方向进行四舍五入的错误。在某些情况下,我忘记了等号。现在它都是固定的。

现在我很满意:)

谢谢大家!

致以问候