Bounding box using MATLAB for the image

后端 未结 4 784
南方客
南方客 2021-01-14 09:05

I am trying to draw a bounding box around the white blob in the image below:

\"enter

相关标签:
4条回答
  • 2021-01-14 09:18

    Have you tried regionprops from Image Toolbox?

    0 讨论(0)
  • 2021-01-14 09:19

    Pseduo -

    • Pick largest y, largest x, smallest x, smallest y with in the blob. That is, points on the blob. These are your coordinates that you can use to build the bounding box.

    assuming top left of image as (0,0)

    (smallestX,smallestY)-----------------(largestX,smallestY)    
          |                                      |
          |                                      |          
          |                                      | 
          |                                      |
    (smallestX,largestY)------------------(largestX,largestY)    
    

    And for finding minimum/maximum values and indices.

    [r,c]=find(img==min(min(img)))
    [r,c]=find(img==max(max(img)))
    

    r,c represent row and column in the img matrix.

    • I have marked the points on your image that you can use to create the bounding box.
    • Zoomed Image to get a better view. Makred Zoomed
    0 讨论(0)
  • 2021-01-14 09:19

    I think you can try to use bwboundries

    boundaries = bwboundaries(blob);
    
    numberOfBoundaries = size(boundaries);
    
    for k = 1 : numberOfBoundaries
    
        thisBoundary = boundaries{k};
    
        plot(thisBoundary(:,2), thisBoundary(:,1), 'g', 'LineWidth', 2);
    
    end
    
    0 讨论(0)
  • 2021-01-14 09:22

    As the 20,000th viewer of this question, I'll answer what I think the asker is actually asking.

    To render a rectangle on the page, you just need to properly interpret the bounding box for the shape. You've already computed this in s(idx).BoundingBox

    Thus, add these two lines to your script:

    bb = s(idx).BoundingBox;
    rectangle('Position',[bb(1) bb(2) bb(3) bb(4)],'EdgeColor','green');
    

    and you'll get:

    0 讨论(0)
提交回复
热议问题