MATLAB:使用霍夫变换检测圆

时间:2014-03-19 00:40:06

标签: matlab feature-detection

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

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

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

3 个答案:

答案 0 :(得分:1)

圆检测的复杂性

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

答案 1 :(得分:0)

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

通过这种方式对图像进行标准化可以减少图像间的差异,并帮助您设置阈值。

答案 2 :(得分:0)

Hough变换可用于检测圆,线等。您可以在Matlab中引用演示。 Hough变换的应用有几种情况。