对于细分,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.
我们如何使用PixelIdxList
/ bwconncomp
信息获取对象的位置?
答案 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.
如果您想要x
和y
格式,请使用ind2sub
功能:
[x,y]=ind2sub(size(Im), Obj_Im.PixelIdxList)
一个例子:
[x,y]=ind2sub(size(Im), 834)
x =
24
y =
28