从 matlab 中的 imfindcircles 检测到的麦田怪圈

Posted

技术标签:

【中文标题】从 matlab 中的 imfindcircles 检测到的麦田怪圈【英文标题】:crop circles detected from imfindcircles in matlab 【发布时间】:2018-12-27 04:21:08 【问题描述】:

我正在使用 imfindcircles 函数从图像中检测圆圈。 下面是代码。 image here

  img= imread('image.png');
  imshow(img);
  rmin=10
  rmax=50
  [centersDarkl, radiiDarkl]=imfindcircles(img, 
  [rmin,rmax],'ObjectPolarity','dark','Sensitivity',0.80);
  viscircles(centersDarkl, radiiDarkl,'LineStyle','--')

现在,我想裁剪检测到的圆圈并将它们保存为不同的图形。

【问题讨论】:

您要上传 image.jpg 以便我们帮忙吗? 我已经编辑了帖子并添加了图片 【参考方案1】:

这是适用于此图像的解决方案。我使用 floor 和 ceil 来避开边缘,rmax 必须大于 75。

[img,map] = imread('MwBQo.png','png');
img = ind2rgb(img, map);
figure;
imshow(img);
rmin = 10;
rmax = 80;
[centersDarkl, radiiDarkl] = imfindcircles(img,...
    [rmin,rmax],'ObjectPolarity','dark','Sensitivity',0.80);
viscircles(centersDarkl, radiiDarkl,'LineStyle','--')
for iCirc = 1:size(centersDarkl,1)
    croppediCirc,1 =  img(...
        ceil(centersDarkl(iCirc,2)-radiiDarkl(iCirc)):...
        floor(centersDarkl(iCirc,2)+radiiDarkl(iCirc)),...
        ceil(centersDarkl(iCirc,1)-radiiDarkl(iCirc)):...
        floor(centersDarkl(iCirc,1)+radiiDarkl(iCirc)),:);
end

figure;
subplot(1,2,1)
imshow(cropped1)
subplot(1,2,2)
imshow(cropped2)

【讨论】:

以上是关于从 matlab 中的 imfindcircles 检测到的麦田怪圈的主要内容,如果未能解决你的问题,请参考以下文章

imfindcircles 没有找到明显的圆圈

圆的低对比度分割

二进制图像圆拟合

从 MATLAB 调用 Powershell 不会移动到 MATLAB 中的下一行

从Matlab中的单个文件加载多个函数[重复]

MATLAB从入门到精通-如何用matlab来提取txt文本中的实验数据