Matlab 基于Hough变换的圆检测
我正在编写一个matlab代码,它可以拍摄照片并检测圆形物体。在使用了一些过滤器之后,我得到了下图 为了检测圆形物体它不是一个完美的圆,我尝试应用不同的半径和阈值,但它无法正确检测。为什么会发生这种情况?是关于物体的形状还是图像的背景 也可以使用Hough变换在后续图像中检测相同的对象吗 圆形物体的边缘看起来像人眼,但我不确定通过Hough变换可以完全消除图像中的背景。可以在图像处理工具箱中使用。使用形态学填充圆圈并提高灵敏度可能有助于:Matlab 基于Hough变换的圆检测,matlab,image-processing,hough-transform,Matlab,Image Processing,Hough Transform,我正在编写一个matlab代码,它可以拍摄照片并检测圆形物体。在使用了一些过滤器之后,我得到了下图 为了检测圆形物体它不是一个完美的圆,我尝试应用不同的半径和阈值,但它无法正确检测。为什么会发生这种情况?是关于物体的形状还是图像的背景 也可以使用Hough变换在后续图像中检测相同的对象吗 圆形物体的边缘看起来像人眼,但我不确定通过Hough变换可以完全消除图像中的背景。可以在图像处理工具箱中使用。使用形态学填充圆圈并提高灵敏度可能有助于: im = imread('pattern.jpg');
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);
可以在图像处理工具箱中使用。使用形态学填充圆圈并提高灵敏度可能有助于:
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);
@user3319676-下次你应该把这一点弄清楚。您没有提到使用圆形Hough变换的事实。您引用了MATLAB FEX上的一个脚本,该脚本不是imfindcircles。我使用了您的解决方案,用于第二个图像,但没有“imfill”和“imclose”,效果很好。@user3319676-下次您应该澄清这一点。您没有提到使用圆形Hough变换的事实。您参考了MATLAB FEX上的一个脚本,它不是imfindcircles。我使用了您的解决方案,在没有“imfill”和“imclose”的情况下生成了第二个图像,它很有效。