【问题标题】:Canny edge detectorCanny 边缘检测器
【发布时间】:2015-10-29 05:19:30
【问题描述】:

我正在编写我自己的 Canny 版本。因此,从文献中我们必须:

  1. 高斯平滑
    • 在这里,我使用的是 5x5 蒙版
  2. 计算梯度大小和方向

    • 这里,我使用的是 Sobel,然后是

      Grad = abs(Gx)+ abs(Gy)
      Orient = ( atan2(Gy/Gx) * 180/3.14159265 ) + 180
      
  3. 非最大抑制
    • 例如,如果 Orient = 0º => 如果 G(i;j) > G(i;j-1) && G(i;j) > G(i;j+1) => 此处为 MAX,否则= 0
  4. 双阈值
    • 在这一步中,我们得到 NL 和 NH
    • 此时,显然NL包含NH,所以NL = NL - NH
    • 现在,对于 NH(x,y) 中的每个非零像素 p,我必须将 NL(x,y) 中连接到 p 的所有弱像素标记为有效像素
  5. 最终图像
    • 它将是 NL + NH

最后我得到了 openCV Canny 的输出来比较。

我做错了什么?

【问题讨论】:

  • 没有step1的输出是什么?

标签: c++ image image-processing


【解决方案1】:

OpenCV canny 不做任何高斯滤波。尽量不要过滤它然后比较结果。

附:我没有查看您的所有步骤。他们可能有另一个错误/s

【讨论】:

    【解决方案2】:

    该死的!将方向四舍五入到可能的四种情况时存在错误。在某些情况下,我忘记了等号。现在一切都解决了。

    现在我对结果很满意 :)

    谢谢大家!

    最好的问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-30
      • 2012-04-16
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      相关资源
      最近更新 更多