我的图像如下:
它是通过imshow(I)
绘制的,而I
是一个逻辑矩阵,你可以从这里得到这个:
http://pastebin.com/qsxA0GXy
这些物体大多类似于粗糙的圆圈,但它们也可能是某种尺寸大约三倍的椭圆形。
我想找到这些物体中心的坐标,但只是估计。我不想使用圆形霍夫变换,因为我只需要一个估计值,我需要一个快速算法。
我的想法是:循环每个像素,如果它是true
值,搜索所有也是true
的neighboor像素,然后通过计算获得对象的中心
x = x_max - xmin;
y = y_max - ymin;
但我不喜欢这种方法,因为使用2个嵌套for循环对我来说似乎很慢。 你能想到更好的东西吗? 谢谢!
答案 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);