Fill holes in binary Image
27 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Image Analyst
2020-6-28
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 个评论
Image Analyst
2024-3-26
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!