【问题标题】:Circle detection via Hough Transform通过霍夫变换进行圆检测
【发布时间】:2015-03-28 23:02:13
【问题描述】:

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

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

还可以使用霍夫变换在下图中检测到相同的对象吗?

人眼可以看到圆形物体的边缘,但我不确定是否可以通过霍夫变换从图像中完全消除背景。

【问题讨论】:

    标签: matlab image-processing hough-transform


    【解决方案1】:

    您可以在图像处理工具箱中使用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);
    

    【讨论】:

    • @user3319676 - 下次你应该说清楚。您没有提到您使用了圆形霍夫变换这一事实。您引用了 MATLAB FEX 上的一个脚本,not imfindcircles.
    • 我已将您的解决方案用于没有“imf​​ill”和“imclose”的第二张图片,它有效。
    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多