如何在二进制image_matlab

时间:2016-06-08 22:33:16

标签: matlab binary

嗨我需要找到每个点的中心坐标(一个二进制图像中的多个点)。 dotfig.png

当我使用代码时

  A=imread('dotfig.png');
  B=im2bw(A)
  [b,a]=find(B==0);

因此,我得到了a,b的行和列的坐标。我得到了多个a和多个b(图中的7个点)。实际上,我只想得到七个a和七个b,它们代表了pic中七个点的中心坐标。我知道ginput可能会给我类似的价值。但是我不想在我的代码中使用手动输入。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:0)

只需使用regionprops

 stats = regionprops(B,'Centroid')

以下是如何使用它的详细方法:

首先,我会生成一些随机点

a=zeros(50);
a(ind2sub(size(a),randi(numel(a),7,1)))=1;
a=padarray(a,[10 10]);
a=conv2(a,fspecial('gaussian',7,1),'same');
b=a>0.02; 
imagesc(b); 

然后使用regionprops:

stats = regionprops(b,'Centroid');

这只是绘制各种质心:

hold on;
for n=1:numel(stats)
plot(stats(n).Centroid(1),stats(n).Centroid(2),'rx'); hold on
text(stats(n).Centroid(1)-4,stats(n).Centroid(2)-4,...
     ['x=' num2str(stats(n).Centroid(1)) ', y=' num2str(stats(n).Centroid(2))],'Color','w' );
end

enter image description here