通过Hough变换进行圆检测

Oğu*_*şar 1 matlab image-processing hough-transform

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

在此输入图像描述

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

还可以使用Hough变换在下面的图像中检测相同的对象吗?

在此输入图像描述

圆形物体的边缘似乎是人眼,但我不确定背景是否可以通过Hough变换完全从图像中消除.

Dim*_*ima 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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述