Getting a single bounding box in image

1 Ansicht (letzte 30 Tage)
Igor P. Louzolo-Kimbembe
Igor P. Louzolo-Kimbembe am 27 Nov. 2013
Beantwortet: Image Analyst am 24 Okt. 2016
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 Kommentare
Igor P. Louzolo-Kimbembe
Igor P. Louzolo-Kimbembe am 27 Nov. 2013
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
kowshik Thopalli
kowshik Thopalli am 24 Okt. 2016
How did you solve your problem?

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Image Analyst
Image Analyst am 24 Okt. 2016
You must have multiple blobs in your binary image, not just one. Use bwareafilt() to extract the largest one only.

Community Treasure Hunt

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

Start Hunting!

Translated by