主要内容

detectSURFFeatures

检测 SURF 特征

说明

points = detectSURFFeatures(I) 返回 SURFPoints 对象 points,其中包含有关在二维灰度或二值输入图像 I 中检测到的 SURF 特征的信息。detectSURFFeatures 函数实现加速稳健特征 (SURF) 算法来寻找斑点特征。

示例

points = detectSURFFeatures(I,Name,Value) 支持上述语法中的输入参量,且可使用一个或多个名称-值参量来指定选项。

示例

全部折叠

读取图像并检测相关点。

I = imread('cameraman.tif');
points = detectSURFFeatures(I);

显示图像中感兴趣的位置。

imshow(I); hold on;
plot(points.selectStrongest(10));

Figure contains an axes object. The hidden axes object contains 3 objects of type image, line. One or more of the lines displays its values using only markers

输入参数

全部折叠

输入图像,指定为 M×N 二维灰度或二值图像。输入图像必须为非稀疏实矩阵。

数据类型: single | double | int16 | uint8 | uint16 | logical

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: detectSURFFeatures(I,'MetricThreshold',100)

最强特征阈值,指定为非负标量。要返回更多斑点,请减小此阈值。

倍频程的数量,指定为大于或等于 1 的整数标量。增大此值可检测更大的斑点。推荐值介于 14 之间。

每个倍频程跨多个尺度,可使用不同大小的滤波器对这些尺度进行分析:

倍频程滤波器大小
1 9×9、15×15、21×21、27×27...
2 15×15、27×27、39×39、51×51...
3 27×27、51×51、75×75、99×99...
4....

较高的倍频程使用较大的滤波器,并对图像数据进行子采样。倍频程越多,找到的斑点越大。根据图像大小适当设置 NumOctaves 参数。例如,一个 50×50 图像要求您将 NumOctaves 参数设置为小于或等于 2NumScaleLevels 参数控制每个倍频程使用的滤波器的数量。分析单个倍频程中的数据需要至少三个级别。

要计算的每个倍频程的尺度级别数,指定为大于或等于 3 的整数标量。增大此数值可以更精细的尺度增量检测更多斑点。推荐值介于 36 之间。

矩形感兴趣区域,指定为向量。该向量必须为 [x y width height] 形式。当您指定 ROI 时,该函数会在由 [width height] 指定的大小为 [x y] 的区域内检测斑点。[x y] 元素指定区域的左上角。

输出参量

全部折叠

SURF 特征,以 SURFPoints 对象形式返回。此对象包含有关在灰度或二值图像中检测到的 SURF 特征的信息。

参考

[1] Bay, H., A. Ess, T. Tuytelaars, and L. Van Gool. “SURF:Speeded Up Robust Features.” Computer Vision and Image Understanding (CVIU).Vol. 110, No. 3, pp. 346–359, 2008.

扩展功能

全部展开

版本历史记录

在 R2011b 中推出