0

我有这样的带宽图像:图像分割Matlab的

Mask Object Connected

使用该函数RegionProps,这表明一些objetcs连接:Region Props

所以我用像imerode形态操作separte的物体获得它们的质心:Objects separated Centroids

现在我已经拥有了每个物体的所有质心sep但是为了让我在侵蚀区域的时候丢失了很多信息,就像你在图片3中看到的,与图片1相比较。 所以我在想是否有“扩张”图片3直到接近图片1但不连接对象。

+0

你问我们如何做最后一张照片?那么它就是你展示的。你还需要什么?最后一种似乎有你需要的所有信息。如果你想获得不同圈子的区域,我建议你尝试将椭圆拟合到你的每个圆心 –

回答

3

你可能想看看bwmorph()。使用'thicken',inf名字值对,它会加厚标签直到它们重叠。这是一个很好的分割工具。我们可以使用它为原始图像创建分割边界。

bw是原始图像。 标签是侵蚀标签的图像。

lines = bwmorph(labels, 'thicken', inf); 

Image of segmentation lines

segmented_bw = bw & lines 

enter image description here

你也可以跳过几个阶段,并实现与基于标记的分水岭similiar结果。或者甚至更好,因为形态上的跷跷板已经破坏了右下方分割不良的聚类中所看到的一些信息。

+0

我已经尝试了分水岭,但它没有显示我想要的结果。但随着形态学操作的加厚,它给了我一些积极的结果。在某些情况下删除一些信息,但我会用这种方法解决。感谢您的有益想法。 –

1

您可以在每个面具白色像素分配到最近的质心,并用所得标签映射工作:

[y x]= find(bw); % get coordinates of mask pixels 
D = pdist2([x(:), y(:)], [cx(:), cy(:)]); % assuming cx, cy are centers' coordinates 
[~, lb] = min(D, [], 2); % find index of closest center 
lb_map = 0*bw; 
lb_map(bw) = lb; % should give you the map. 

更多信息请参见pdist2