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

Matlab 如何在图像上绘制包含surfPoints对象的矩形?,matlab,image-processing,feature-detection,surf,Matlab,Image Processing,Feature Detection,Surf,我有一个灰度图像,我想使用detectSURFFeatures()提取感兴趣的区域。使用此函数,我得到一个surfPoints对象。 通过在图像上显示这个对象,我得到了作为感兴趣区域的圆圈。 在我的例子中,我想要包含这些圆的矩形区域。 更清楚地说,我有一张图1: 我想使用:detectSURFFeatures()提取感兴趣区域(ROI),我们获得图像 如果你能看到我们有圆形区域,对于我的例子,我想要包含圆形区域的矩形ROI: 看起来半径完全由点。比例参数决定 % Detection of t

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

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

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


看起来半径完全由
点。比例
参数决定

% 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
)的默认比例属性值的一半。但是,由于文档中没有这方面的信息,我可能是错的。值得一提的是,每个ROI的比例参数与
SURFPoints
对象的比例属性不同。

看起来半径完全由
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
)的默认比例属性值的一半。但是,由于文档中没有这方面的信息,我可能是错的。值得一提的是,每个ROI的比例参数与
冲浪点
对象的比例属性不同。

矩形
可能会对你起作用。我的问题是我没有圆的半径,我所拥有的只是冲浪点信息
矩形
可能会起作用,对你来说。我的问题是我没有圆的半径。我只有冲浪点信息谢谢你,先生@obchardon你的答案对我有用非常感谢。我有一个问题,为什么值是6,因为你在文档中没有关于它的信息。那么我们的矩形的方向呢?因为我们可以使用SURFPOINTS获得的信息来改变获得的矩形的方向。因为文档中没有信息,所以我不能确定我的解释是否正确。尝试为
scale
属性创建一个具有不同值的随机
surfPoints
对象,并检查我的解释是否仍然有效。对于旋转,您只需使用旋转矩阵旋转矩形的坐标,并使用
绘图绘制结果即可。非常感谢您的时间和帮助谢谢您的回答@obchardon您的回答对我有用非常感谢。我有一个问题,为什么该值为6,因为您在文档中没有提到它的相关信息。那么我们的矩形的方向呢?因为我们可以使用SURFPOINTS获得的信息来改变获得的矩形的方向。因为文档中没有信息,所以我不能确定我的解释是否正确。尝试为
scale
属性创建一个具有不同值的随机
surfPoints
对象,并检查我的解释是否仍然有效。对于旋转,您只需使用旋转矩阵来旋转矩形的坐标,并使用
绘图
绘制结果。非常感谢您的时间和帮助