【问题标题】:Hough circle detection: Blurring the image before calling hough circle algorithm?霍夫圆检测:在调用霍夫圆算法之前模糊图像?
【发布时间】:2015-09-18 21:16:23
【问题描述】:

http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_houghcircles/py_houghcircles.html

在这里的例子中,我不知道为什么它在霍夫圆算法之前首先调用了中值滤波器。这是为了更好地检测吗?

另外,在调用霍夫圆算法时,还有其他可能有用的技巧吗?特别是,如果圆形物体的亮度与其背景相同,因此在灰度上看起来很均匀,我可以在这里做些什么吗?

另外,如果我无法获得完美的检测,我希望检测到的圆圈较少,但检测到的圆圈是正确的。

谢谢

【问题讨论】:

    标签: python opencv image-processing computer-vision hough-transform


    【解决方案1】:

    模糊有助于通过减少噪声来避免错误的圆检测,因为 openCV 使用霍夫圆检测算法的梯度版本,如下所述:http://homepages.inf.ed.ac.uk/rbf/BOOKS/BANDB/LIB/bandb4_3.pdf

    模糊的大小将与内部 Canny 边缘检测器的上限阈值(即 param_1)相互作用。你会想玩弄它。

    要解决亮度问题,请尝试仅使用隔离的 R、G 和 B 通道进行检测。为了获得更完整的结果,您可以将色调移动 60,然后再次使用隔离通​​道。

    【讨论】:

    • 很好的答案,谢谢。我能好奇“将色调移动 60 位”有什么作用吗?
    • 快速粗略的例子:imgur.com/CGB1W58。左上:原图,左下:去饱和原图,右上:色调+60。右下:去饱和色调+60版本。有时,在将色调移动 60 后,灰度或单个 RGB 通道中的情况会变得很明显。为什么是 60?因为它在通道之间拆分。 120 只是随机播放频道,但没有提供任何新内容。
    • 这是否能让你在实践中获得更好的圈子识别,我真的不能说。我只知道这是一种非常简单粗暴的方法,可以显示您在灰度或孤立通道中找不到的信息。
    • 如果我错了请纠正我,但色调和灰度强度是独立的,不是吗?我认为在 HSV 中,H、S 和 V 是独立的,V 是绿色刻度强度。
    • 或者您的意思是输入 Hue 本身作为灰度图像的灰度强度?
    【解决方案2】:

    是的,它旨在减少图像中的噪点,目的是改善边缘检测。边缘检测算法对噪声敏感。

    这里描述: https://en.wikipedia.org/wiki/Median_filter

    但这张图片更好地说明了模糊如何改善(甚至是你的大脑)边缘检测: https://upload.wikimedia.org/wikipedia/commons/6/62/Cappadocia_Gaussian_Blur.svg

    这张图片来自一篇关于高斯模糊的文章,这是另一种减少信号(如图片)噪声的平滑技术。然而,中值滤波器比高斯模糊更好地保留边缘,因此它用于图像处理。 (在 Wiki 的中值滤波器文章中的“边缘保留属性”下进行了描述)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2020-09-29
      • 2015-05-03
      相关资源
      最近更新 更多