MATLAB imfindcircles () не работает должным образом даже с моим самым базовым тестовым изображением - PullRequest
0 голосов
/ 27 сентября 2018

Мне нужно найти несколько смутных круговидных структур на многих изображениях с микроскопа и надеяться, что мне помогут в этом бесконечные круги.Поэтому, чтобы начать, я создал довольно случайную, базовую тестовую картину.В коде показаны два примера, найденных в сети.Тот, у которого есть монеты, выглядит как сложная задача, но функция легко определяет круги.

На моем изображении я могу найти один в лучшем случае.В чем проблема?Я совершаю очевидную ошибку?

 % Example from web
im = imread('http://kimyamuhendisi.com/images/pipe.jpg');
[c,r] = imfindcircles(im,[10,20]);
figure, imshow(im); viscircles(c,r);

% Example from web
A = imread('coins.png');
[centers, radii, metric] = imfindcircles(A,[15 30]);
figure, imshow(A); viscircles(centers, radii, 'EdgeColor', 'b');

% My test picture
Iuint8 = imread('https://i.imgur.com/yEM8pza.jpg');
Igray = rgb2gray(Iuint8); 
[centers, radii] = imfindcircles(Igray,[10 30]); %Finds B
% [centers, radii] = imfindcircles(Igray,[20 40]) %Nothing
% [centers, radii] = imfindcircles(Igray,[30 50]) %Nothing
% [centers, radii] = imfindcircles(Igray,[50 70]) %Nothing
% [centers, radii] = imfindcircles(Igray,[70 90]) %Nothing
% [centers, radii] = imfindcircles(Igray,[90 120]) %Nothing
% [centers, radii] = imfindcircles(Igray,[240 270]) %Nothing
figure, imshow(Igray); viscircles(centers, radii, 'EdgeColor', 'b');

image

...