通过霍夫变换进行圆检测
Circle detection via Hough Transform
我正在编写一个 matlab 代码,用于拍摄照片并检测圆形物体。使用一些滤镜后,我得到了下图。
为了检测圆形物体(它不是一个完美的圆),我尝试应用Hough Transform传递不同的半径和阈值,但它无法正确检测。为什么会这样?是物体的形状还是图像的背景?
另外,是否可以使用霍夫变换在下图中检测到相同的对象?
圆形物体的边缘在人眼看来,但我不确定是否可以通过霍夫变换将图像中的背景完全消除。
您可以在图像处理工具箱中使用 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);
我正在编写一个 matlab 代码,用于拍摄照片并检测圆形物体。使用一些滤镜后,我得到了下图。
为了检测圆形物体(它不是一个完美的圆),我尝试应用Hough Transform传递不同的半径和阈值,但它无法正确检测。为什么会这样?是物体的形状还是图像的背景?
另外,是否可以使用霍夫变换在下图中检测到相同的对象?
圆形物体的边缘在人眼看来,但我不确定是否可以通过霍夫变换将图像中的背景完全消除。
您可以在图像处理工具箱中使用 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);