Fill holes in binary Image

31 ビュー (過去 30 日間)
Tony Rochelle
Tony Rochelle 2020 年 6 月 28 日
コメント済み: Benjamin Rahimian 2024 年 3 月 26 日
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.

採用された回答

Image Analyst
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
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.
Benjamin Rahimian
Benjamin Rahimian 2024 年 3 月 26 日
Thanks

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeImage Processing Toolbox についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by