Fill holes in binary Image
27 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Tony Rochelle
il 28 Giu 2020
Commentato: Benjamin Rahimian
il 26 Mar 2024
Hey Guys,
I extracted the background by using the difference and now I want to work on my mask. The image below is currently mask of the binary image after filling it out with imfill(..'holes'). But unfortunately not everything of the body is filled out. Is there a way to fill out the middle part of the body? Thank you very much.

0 Commenti
Risposta accettata
Image Analyst
il 28 Giu 2020
You could try imclose() followed by imfill()
se = strel('disk', 20, 0);
mask = imclose(mask, se);
mask = imfill(mask, 'holes');
imshow(mask);
or you could try an active contour, like the attached demo.
There are fancier ways if you want to make sure the outer boundary doesn't change, but it's more work and I don't have time for that now. See if one of the two methods I gave above works OK for you.
3 Commenti
Image Analyst
il 26 Mar 2024
I'd dilate it enough to close the gap while still having a hole in the middle. Then I'd invert the image and call imclearborder so that you have only the hole and not the surround. Then I'd dilate the hole the same amount you dilated the original binary image. Then I'd OR that expanded hole with the original binary image that has the original boundaries. That should fill the hole however there might still be some very tiny pinholes in the filled blob so then I'd call imfill again to fill those potential tiny holes.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Image Processing Toolbox in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!