使用Matlab imfindcircles函数查找圆
我尝试使用Matlab函数imfindcircles查找图像中显示的所有硬币。但它不起作用 这是我的密码:使用Matlab imfindcircles函数查找圆,matlab,computer-vision,Matlab,Computer Vision,我尝试使用Matlab函数imfindcircles查找图像中显示的所有硬币。但它不起作用 这是我的密码: I = imread('coins.jpg'); imshow(I); [centers, radii] = imfindcircles(I, [70,170],'Sensitivity',.95); centerStrongs= centers(:,:); radiiStrongs = radii(:); viscircles(centerStrongs, radiiStrongs,
I = imread('coins.jpg');
imshow(I);
[centers, radii] = imfindcircles(I, [70,170],'Sensitivity',.95);
centerStrongs= centers(:,:);
radiiStrongs = radii(:);
viscircles(centerStrongs, radiiStrongs, 'EdgeColor','b');
通过使用imdistline,我知道硬币的半径在(70170)之间,您确定这不起作用吗?尝试更好地调整灵敏度:
I = imread('/home/me/Desktop/coin.jpg');
imshow(I);
[centers, radii] = imfindcircles(I, [70,170],'Sensitivity',.98);
centerStrongs= centers(:,:);
radiiStrongs = radii(:);
viscircles(centerStrongs, radiiStrongs, 'EdgeColor','b');
我得到了每一枚硬币。
(很抱歉没有在评论中写这篇文章,我还没有足够的声誉)
您的输出是什么样子的?我想相对明亮的硬币与相对明亮的背景的对比确实使问题很难解决。此外,场景的照明也会创建硬币的阴影,这些阴影也是圆段。当您将案例与matlab文档示例进行比较时,您会发现它们使用了更清晰的场景设置。请提供您的结果以便进一步分析。谢谢,我实际上找不到任何圆。如果您希望得到更准确的结果,请尝试使用直方图均衡化或其他处理方法(如sobel过滤器)对图像进行预处理。