Matlab:在二进制图像中搜索对象的中心

时间:2012-12-05 08:45:01

标签: image matlab object image-processing binary

我的图像如下:

binary img

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

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

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

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

  

x = x_max - xmin;

     

y = y_max - ymin;

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

2 个答案:

答案 0 :(得分:2)

这似乎很快。不太确定它会如何缩放:

L = bwlabel(I);
stats = regionprops(L,I,'Centroid');

答案 1 :(得分: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);