label two objects that share part of the same boundary separately
1 view (last 30 days)
Show older comments
I have a matrix like this:
m = [0,1,1,1,0;1,0,0,0,1;0,1,1,1,0;0,1,0,1,0;0,0,1,0,0];
And I want to label the interior separately, which results in a matrix like this:
m1 = [0,1,1,1,0;1,2,2,2,1;0,1,1,1,0;0,1,3,1,0;0,0,1,0,0];
But I'm not sure how to do that. Any suggestion will be appreciated! Thank you!
0 Comments
Accepted Answer
Steve Eddins
on 3 Aug 2022
m = [0,1,1,1,0;1,0,0,0,1;0,1,1,1,0;0,1,0,1,0;0,0,1,0,0]
Fill the holes. From your example, it looks like the background connectivity should be 4.
filled_holes = imfill(m,4,'holes')
The pixels that were added are the holes.
hole_pixels = filled_holes & ~m
Label the hole pixels.
L = bwlabel(hole_pixels,4)
Add the labels (incremented by one) to the original matrix.
m_out = m;
m_out(hole_pixels) = L(hole_pixels) + 1
More Answers (0)
See Also
Categories
Find more on Axis Labels in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!