separate connected component in two or more regions based on certain criteria

17 views (last 30 days)
I will start my question by presenting two images :
These are two different binarized images containing connected regions. I have marked red lines where I wish to separate the region.
my questions are
  1. how can I separate the connected components into two or more isolated regions ? I want the method to be automated as I want to do this on many images.
I have some ideas on what the criterias should be for the separation to occur :
  1. If the connected component contains more than a maximum amount of pixels, lets say 15 pixels, I want the region to be a canditate for splitting
  2. if the region contains more than 15 pixels AND the minimum distance across the region is less than a given length then I want the region to be separated at that line defining this minimum width . I guess this is similar to saying that I want to split the region if its circularity is low, that is I do NOT want to split the largest blob in the center of both images.
  3. If I cannot find this minimum width of the region I want to separate the region in two by requiring that the two resulting regions shall have the same amount of pixels.
I would be happy for advices on how to implement this into a working algorithm. Also other suggestions on splitting criteria is much appreciated.

Answers (2)

Matt J
Matt J on 14 Apr 2021
bwareaopen will accomplish item (1) straightforwardly. Other than that, since you haven't committed to a precise separation criteria, why not consider that in,

Image Analyst
Image Analyst on 15 Apr 2021
See Steve's blog
and
Do you know how to compute circularity? If not:
props = regionprops(mask, 'Area', 'Perimeter');
allAreas = [props.Area];
allPerimeters = [props.Perimeter];
circularities = allPerimeters ./ (4 * pi * allAreas);

Categories

Find more on Image Processing Toolbox 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!