【问题标题】:MATLAB: Using hough transform to detect circleMATLAB:使用霍夫变换检测圆
【发布时间】:2014-03-19 00:40:06
【问题描述】:

我正在编写一个 matlab 代码,用于接收照片并检测圆形对象。例如,该函数将桃子(圆形物体)的图片作为输入,并返回带有圆圈的桃子图片。

目前,我正在使用霍夫变换,利用 imfindcircles 函数。但是,此功能需要我指定半径范围和某种灵敏度/阈值。对于不同大小的图像和圆形对象,这些值会有所不同。因此,要获得所需的输出,我将不得不为每个输入图像手动更改这些值,这不是我想要的。我要在 100 多张图片上使用此功能,因此我无法手动执行此操作。

我的问题是有什么方法可以减少我的圆形物体检测功能的手动操作,并且可能完全自动化(不需要我输入任何值,只需输入图像)?

【问题讨论】:

  • 您的问题与编程无关。考虑在信号处理网站上发帖。

标签: matlab feature-detection


【解决方案1】:

圆检测的复杂度

霍夫变换是一种投票程序,需要对圆的最小和最大半径做出假设。一般来说,使用Randomized Hough Transform for Circles 你会选择三个点,然后尝试形成一个圆并检查半径是否在所需范围内。运行它进行大量迭代,您应该在累加器矩阵中找到代表圆的峰值(多次命中)。如果您不对对象大小做出任何假设,我认为很明显这种方法是行不通的。

【讨论】:

    【解决方案2】:

    进行一些常规预处理以调整对比度和亮度,例如对比度拉伸,直方图均衡。如果图像中可能有一些噪点,那么也应用一点高斯平滑。

    以这种方式标准化图像将减少图像间差异并帮助您设置阈值。

    【讨论】:

      【解决方案3】:

      霍夫变换可用于检测圆、线等。您可以参考 Matlab 中的演示。霍夫变换的应用有几种情况。

      【讨论】:

        猜你喜欢
        • 2015-05-03
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多