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

时间:2018-12-27 04:21:08

标签: matlab crop geometry

我正在使用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','--')

现在,我要裁剪检测到的圆并将其另存为其他图形。

1 个答案:

答案 0 :(得分:0)

以下是适用于此图像的解决方案。我使用了地板和天花板以避免边缘,并且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)
    cropped{iCirc,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(cropped{1})
subplot(1,2,2)
imshow(cropped{2})