在Matlab中使用bwconncomp获取对象位置

时间:2014-05-16 18:28:50

标签: matlab image-processing image-segmentation

对于细分,matlab bwconncomp中有一个函数。它可以计算检测到的对象数量。

  Im=imread('Mountain.ppm');
  [Seg_Im] = normalize_segmentation(Im);
  Im_filt=medfilt2(Seg_Im,[3 3]);

  se=strel('disk',2);
  Seg_Im = imclose(Im_filt,se);
  Obj_Im= bwconncomp(Seg_Im,6)

  Obj_Im = 

Connectivity: 6
   ImageSize: [30 32]
  NumObjects: 1
PixelIdxList: {[129x1 double]}

当我访问PixelIdxList时,最大值为834.

那是什么834?因为图像大小只有30x32。

我们如何使用PixelIdxList / bwconncomp信息获取对象的位置?

1 个答案:

答案 0 :(得分:1)

查看手册会告诉您它是一个线性索引:

 PixelIdxList:   1-by-NumObjects cell array where the kth element
                 in the cell array is a vector containing the linear
                 indices of the pixels in the kth object.

如果您想要xy格式,请使用ind2sub功能:

[x,y]=ind2sub(size(Im), Obj_Im.PixelIdxList)

一个例子:

[x,y]=ind2sub(size(Im), 834)

x =

    24

y =

    28