即使我使用非常基本的测试图像,MATLAB imfindcircles()也无法正常工作

时间:2018-09-27 12:27:23

标签: matlab image-processing hough-transform

我需要在很多显微镜照片中找到一些模糊的圆形结构,并希望imfindcircles可以帮助我做到这一点。因此,为了开始使用,我创建了一个相当随机的基本测试图片。代码中显示的是在网上找到的两个示例。装有硬币的硬币看起来像是一项艰巨的任务,但是该功能可以轻松识别圆圈。

在我的图像中,我最多只能找到一个。问题是什么?我在犯一些明显的错误吗?

 % 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

0 个答案:

没有答案