круги на полях, обнаруженные из кругов нахождения в matlab - PullRequest
0 голосов
/ 27 декабря 2018

Я определяю круги на изображении с помощью функции imfindcircles.Ниже приведен код. изображение здесь

  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 голосов
/ 27 декабря 2018

Вот решение, которое работает для этого изображения.Я использовал пол и потолок, чтобы избежать краев, и 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})
...