通过Hough变换进行圆检测

时间:2015-03-28 23:02:14

标签: matlab image-processing hough-transform

我正在编写一个matlab代码,它接收照片并检测圆形对象。使用了一些过滤器后,我得到了下面的图像。

enter image description here

为了检测圆形物体(它不是一个完美的圆圈),我尝试应用Hough Transform传递不同的半径和阈值,但无法正确检测。为什么会这样?它是关于物体的形状还是图像的背景?

还可以使用Hough Transform在下图中检测相同的对象吗?

enter image description here

圆形物体的边缘似乎是肉眼,但我不确定是否可以通过霍夫变换完全消除背景。

1 个答案:

答案 0 :(得分:5)

您可以在图像处理工具箱中使用imfindcircles。使用形态学填充圆圈并提高灵敏度可能会有所帮助:

im = imread('pattern.jpg');
im2 = rgb2gray(im(100:end-100, 100:end-100, :));
im3 = im2bw(im2, 0.1);
im4 = imclose(im3, strel('disk', 4, 4));
im5 = imfill(im4, 'holes');
imshow(im5);
[centers, radii] = imfindcircles(im5, [180, 200], 'Sensitivity', .99);
viscircles(centers, radii);

enter image description here