霍夫圆检测:在调用霍夫圆算法之前模糊图像?

3

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

在这个例子中,我不知道为什么在霍夫圆算法之前先调用中值滤波器。这是为了提高检测效果吗?
此外,在调用霍夫圆算法时,通常还有其他技巧可以使用吗?特别是,如果圆形物体与其背景具有相同的亮度,因此在灰度上看起来均匀,我能做些什么呢?
另外,如果无法进行完美检测,我更愿意少检测一些圆,但是被检测到的圆都是正确的。
谢谢
2个回答

1
模糊处理可通过减少噪声来避免误检测,因为openCV使用梯度版本的霍夫圆检测算法,详见此处: http://homepages.inf.ed.ac.uk/rbf/BOOKS/BANDB/LIB/bandb4_3.pdf 模糊的大小将与内部Canny边缘检测器的上阈值(param_1)相互影响。您需要进行一些试验。
为了解决亮度问题,请尝试仅使用隔离的R、G和B通道进行检测。为了获得更完整的结果,您可以将色调移动60,然后再次使用隔离通道。

很好的答案,谢谢。我能问一下“将色相向右偏移60度”是什么意思吗? - nobody
无论在实践中是否能够更好地识别圆形,我无法确切地说。我只知道这是一种非常简单和粗糙的方法,可以提取出在灰度或隔离通道中找不到的信息。 - Richard Peterson
请纠正我,但是色调(Hue)和灰度强度是独立的,对吗?我认为在HSV中,H、S和V是独立的,而V是绿色强度。 - nobody
你的意思是将Hue本身作为灰度图像的灰度强度输入吗? - nobody
如果你只是从HSV图像中使用“V”,那么你是100%正确的。但这不是获取灰度的唯一方法。请看这里的图片:https://en.wikipedia.org/wiki/HSL_and_HSV#Disadvantages,以查看一些快速示例。在OpenCV中,您可以取(r,g,b)的最大值来定义您的灰度,也可以取(r,g,b)的平均值或许多其他选项。这些选项可能会受到色调的影响,并且移动色调会产生巨大的影响。如果您只是取V,则色调变化不会有任何影响。 - Richard Peterson
显示剩余6条评论

1
是的,它旨在减少图像中的噪声,以改善边缘检测。边缘检测算法对噪声敏感。
在这里描述: https://en.wikipedia.org/wiki/Median_filter 但是,这张图片更好地说明了模糊如何改善(甚至是你的大脑的)边缘检测: https://upload.wikimedia.org/wikipedia/commons/6/62/Cappadocia_Gaussian_Blur.svg 这张图片来自于一个关于高斯模糊的文章,另一种减少信号(如图像)中噪声的平滑技术。然而,中值滤波比高斯模糊更好地保留边缘,因此在图像处理中使用。(在维基百科的中值滤波文章的“边缘保护属性”下进行描述)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接