1

我有如下图像:

二进制图像

它是通过绘制的imshow(I)I是一个逻辑矩阵,你可以从这里得到这个:http: //pastebin.com/qsxA0GXy

这些物体大多类似于一个粗糙的圆圈,但它们也可以是某种尺寸大约三倍的椭圆形。

我想找到这些物体中心的坐标,但只是估计的。我不想使用循环霍夫变换,因为我只需要一个估计值并且我需要一个快速算法。

我的想法是:循环每个像素,如果它是一个true值,则搜索所有相邻像素,true然后通过计算获得对象的中心

x = x_max - xmin;

y = y_max - ymin;

但我不喜欢这种方法,因为使用 2 个嵌套的 for 循环对我来说似乎很慢。你能想到什么更好的吗?谢谢!

4

2 回答 2

2

这似乎相当快。不太确定它会如何扩展:

L = bwlabel(I);
stats = regionprops(L,I,'Centroid');
于 2012-12-05T09:28:38.740 回答
0

试试这个答案中使用的概念:https ://stackoverflow.com/a/2242565/845528

我试过了(通过保存您在上面提供的图像。我没有转到您提供的链接)。它似乎工作:

    Image = imread('im.jpg');
    dImage = im2double(Image);
    logicalImage = im2bw(dImage, 0.5);

    dilatedImage = bwmorph(logicalImage, 'shrink',Inf);
    [x,y] = find(dilatedImage);
于 2012-12-05T09:23:25.980 回答