Filling objects that share a border

4 views (last 30 days)
Hi,
I have a question about filling in objects that share a border with the perimeter of an image.
Consider a case such as the one shown at: http://i43.tinypic.com/2nq9ua.jpg. If I run the imfill function to fill in the holes, I don’t get the five objects that touch the border of the image filled (I have pointed out the specific areas I am talking about, in this image: http://i41.tinypic.com/5afeo4.jpg).
Is there any strategy I could follow to fill holes in those areas that are outlined using the arrows?
Thanks in advance!

Accepted Answer

Image Analyst
Image Analyst on 4 Sep 2013
Edited: Image Analyst on 5 Sep 2013
  1. Binarize and Invert the image: binaryImage = grayImage <128
  2. Call imfill(binaryImage, 'holes')
  3. call regionprops(binaryImage, 'BoundingBox') asking for bounding box
  4. Look at the 4 sides of all the bounding boxes looking for any objects that share any bounding box side coordinate.
Give it a shot.
  3 Comments
alexius
alexius on 5 Sep 2013
thank you Image Analyst for the answer. I've tried the code, and get error..
Error in imfill (line 132)
mask = padarray(mask, ones(1,ndims(mask)), -Inf, 'both');
Error in padarray (line 51)
binaryImage = imfill(binaryImage, 'holes');
can you help me, I’m quite new to IPT.
alexius
alexius on 5 Sep 2013
I'm sorry. I forgot to change the folder and filename. Now the code works. Thank you Image Analyst. :D

Sign in to comment.

More Answers (1)

Anand
Anand on 6 Sep 2013
Steve Eddins just posted about this. Here's an alternative approach:

Community Treasure Hunt

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

Start Hunting!