Canny边缘探测器

时间:2015-10-28 16:09:21

标签: c++ image image-processing

我正在编写我自己的Canny版本。所以,从我们的文献来看:

  1. 高斯光滑
    • 这里,我正在使用5x5面具
  2. 计算渐变幅度和方向

    • 在这里,我正在使用索贝尔,然后

      {{1}}
  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
  6. 最后我得到了openCV Canny的输出进行比较。

    我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

P.S。我没有审查你的所有步骤。他们可能有另一个错误/ s

答案 1 :(得分:0)

血淋淋的地狱!将方向四舍五入到可能的四个案例时出现了错误。在某些情况下,我忘了给出等号。现在它已全部修好了。

现在我对结果感到满意:)

谢谢大家!

祝你好运