Fill holes in binary Image
48 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tony Rochelle
le 28 Juin 2020
Commenté : Benjamin Rahimian
le 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 commentaires
Réponse acceptée
Image Analyst
le 28 Juin 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 commentaires
Image Analyst
le 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.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!