MATLAB Answers

Felix
1

Rectangle around the object, Bounding box,

Asked by Felix
on 18 Sep 2013
Latest activity Commented on by Image Analyst
on 30 Mar 2017

Hello, I used this code to make rectangle around the object at binary image:

st = regionprops(BW, 'BoundingBox' );

figure, imshow('MY_IMAGE.jpg')

 rectangle('Position',[st.BoundingBox(1),st.BoundingBox(2),st.BoundingBox(3),st.BoundingBox(4)],...
'EdgeColor','r','LineWidth',2 )

but if I have more than one object, this code doesn't working How can I draw N rectangles for N objects on image? Thank you

  2 Comments

I want to find out an region properties of below image

Use regionprops(). See my Image Segmentation Tutorial where I cover all that code.

Log in to comment.

2 Answers

Answer by Image Analyst
on 18 Sep 2013
 Accepted Answer

Put it in a loop (untested)

for k = 1 : length(st)
  thisBB = st(k).BoundingBox;
  rectangle('Position', [thisBB(1),thisBB(2),thisBB(3),thisBB(4)],...
  'EdgeColor','r','LineWidth',2 )
end

  7 Comments

does it work the same way as "vision.BlobAnalysis"? same results?

Log in to comment.


Answer by Hafsa Asad on 28 Jan 2017
Edited by Hafsa Asad on 28 Jan 2017

Here is an even simpler way to do it if you have the binary image with white blobs

    st = regionprops(my_binary_image, 'BoundingBox', 'Area' );
    for ii= 1 : length(st)
        Areai(ii)= st(ii).Area;
    end
    largest_blob_id= find(Areai==max(Areai)); 
imshow(my_binary_image) 
rectangle('Position'[st(largest_blob_id).BoundingBox(1),st(largest_blob_id).BoundingBox(2),st(largest_blob_id).BoundingBox(3),st(largest_blob_id).BoundingBox(4)], 'EdgeColor','r','LineWidth',2 )

  1 Comment

That would be good if he wanted to draw the box around only the largest blob instead of drawing "N rectangles for N objects". An even shorter way would be to get rid of the for loop like this:

st = regionprops(my_binary_image, 'BoundingBox', 'Area' );
[maxArea, indexOfMax] = max([st.Area]);
rectangle('Position'[st(indexOfMax).BoundingBox(1),st(indexOfMax).BoundingBox(2),st(indexOfMax).BoundingBox(3),st(indexOfMax).BoundingBox(4)], 'EdgeColor','r','LineWidth',2 )

Log in to comment.


Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!