Getting a single bounding box in image

I am currently trying to obtain the bounding boxes of a bw image. Sometimes I get a single 1-by-4 vector, sometimes too I get multiple 1-by-4 vectors. In the latter case how am I supposed to figure out the real bounding box of the image? My image is a single apple on a white background. First I convert the image to bw using im2bw, I use imcomplement to get a white apple on a black background, and then I use the regionprops function with parameter 'BoundingBox'. The reason I'm doing this is because I would like to create a training set of apples, using a structure having imageFileName as the field of image file names, and BoundingBoxes as the field of the images bounding boxes. However I obtain several bounding boxes for a single image. I think it would be more logical to get only one bounding box per bw image.

3 Comments

When you use im2bw(), what threshold are you supplying? Are you doing any corrections for illuminations before converting to bw ?
When using im2bw I use graythresh for automatic thresholding. Here is a code snippet
if true
% code
im = imread('file_path');
im = im2bw(im, graythresh(im));
im = imcomplement(im);
im = imfill(im, 'holes');
bbox = regionprops(im, 'BoundingBox');
bbox % structure of 5 1-by-4 vectors
end
How did you solve your problem?

Sign in to comment.

Answers (1)

You must have multiple blobs in your binary image, not just one. Use bwareafilt() to extract the largest one only.

Answered:

on 24 Oct 2016

Community Treasure Hunt

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

Start Hunting!