Filling objects that share a border

3 ビュー (過去 30 日間)
alexius
alexius 2013 年 9 月 4 日
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!

採用された回答

Image Analyst
Image Analyst 2013 年 9 月 4 日
編集済み: Image Analyst 2013 年 9 月 5 日
  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 件のコメント
alexius
alexius 2013 年 9 月 5 日
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 2013 年 9 月 5 日
I'm sorry. I forgot to change the folder and filename. Now the code works. Thank you Image Analyst. :D

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

その他の回答 (1 件)

Anand
Anand 2013 年 9 月 6 日
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!

Translated by