如何在图像上绘制包含 surfPoints 对象的矩形?

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

我有一张灰度图像,我想使用 detectSURFFeatures() 提取感兴趣的区域。使用这个函数我得到一个 surfPoints 对象。 通过在图像上显示此对象,我将圆圈作为感兴趣区域。 对于我的情况,我想要包含这些圆圈的矩形区域。 更清楚地说,我有一张图片 1:

我想使用 detectSURFFeatures() 提取感兴趣区域 (ROI),我们获得图像

如果你能看到我们有圆形区域,对于我的情况,我想要包含圆形区域的矩形 ROI :

看来半径完全由points.Scale参数决定。

% 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

我们得到以下结果:

在这个例子中,半径的修正系数是6。我猜这个值对应于 SURFPoints 对象(即 12.0)默认 Scale 属性值的一半。但由于文档中没有相关信息,我可能是错的。请注意,每个 ROI 的规模 参数SURFPoints 对象的规模 属性 不同。