matlabimage-processingfeature-detectionsurf

How can I draw the rectangle including the surfPoints object on the image?


I have a grayscale image I want to extract the regions of interest using detectSURFFeatures(). Using this function I get a surfPoints object. by displaying this object on the image I get circles as regions of interest. For my case I want the rectangular areas encompassing these circles. To be more clear i have a image 1:

initial image

I want to extract Region of Interest (ROI) using : detectSURFFeatures(), we obtain the image

image after detection

if you can see we have circular region, and for my case i want the rectangular ROI that contains the circular region :

results desired


Solution

  • It looks like the radius is fully determined by the points.Scale parameter.

    % Detection of the SURF features:
    I = imread('cameraman.tif');
    points = detectSURFFeatures(I);
    imshow(I); hold on;
    
    % Select and plot the 10 strongest features 
    p = points.selectStrongest(10)
    plot(p);
    
    
    % Here we add the bounding box around the circle.
    c = 6; % Correction factor for the radius
    for ii = 1:10
        x = p.Location(ii,1); % x coordinate of the circle's center
        y = p.Location(ii,2); % y coordinate of the circle's center
        r = p.Scale(ii);      % Scale parameter
        rectangle('Position',[x-r*c y-r*c 2*r*c 2*r*c],'EdgeColor','r')
    end
    

    And we obtain the following result:

    enter image description here

    In this example the correction factor for the radius is 6. I guess that this value correspond to half of the default Scale propertie's value of a SURFPoints object (which is 12.0). But since there is no information about that in the documentation, I can be wrong. And be carreful, the scale parameter of each ROI is not the same thing as the scale propertie of a SURFPoints object.