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