主要内容

本页采用了机器翻译。点击此处可查看英文原文。

detectSIFTFeatures

检测尺度不变特征变换 (SIFT) 特征

自 R2021b 起

说明

points = detectSIFTFeatures(I) 在二维灰度或二值输入图像 I 中检测 SIFT 特征,并返回一个 SIFTPoints 对象。detectSIFTFeatures 函数实现了尺度不变特征变换 (SIFT) 算法,用于在图像中查找局部特征。

示例

points = detectSIFTFeatures(I,Name=Value) 支持上述语法中的任何参量组合,且可使用一个或多个名称-值参量指定选项。例如,detectSIFTFeatures(I,ContrastThreshold=0.0133) 会检测对比度小于 0.0133 的 SIFT 特征。

示例

全部折叠

加载一个图像。

I = imread('cameraman.tif');

在图像中检测 SIFT 特征。

points = detectSIFTFeatures(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

名称-值参数

全部折叠

示例: detectSIFTFeatures(I,ContrastThreshold=0.0133) 检测对比度小于 0.0133 的 SIFT 特征。

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

用于选择最强特征的对比度阈值,指定为 [0,1] 范围内的非负标量。阈值用于过滤掉图像中低对比度区域内的微弱特征。提高对比度阈值,以减少返回的特征数量。

边缘阈值,指定为一个不小于 1 的非负标量。阈值用于过滤图像中容易受噪声影响的不稳定边缘状特征。提高边缘阈值,以减少过滤过程中被移除的特征数量。

每个倍频程中的层数,指定为一个大于或等于 1 的整数标量。八度数是根据图像分辨率自动计算得出的。增加每个八度内的层数,以检测图像中的更大特征。

高斯函数的 sigma 值,指定为标量。在初始八度上,将高斯分布的标准差应用于输入图像。西格玛值通常在 [1,2] 范围内。如果图像模糊,请降低σ值。

关键点检测的感兴趣区域,指定为由 'ROI' 和一个格式为 [x y width height] 的向量组成的、以逗号分隔的元组。前两个元素表示感兴趣区域左上角的位置。最后两个元素分别表示感兴趣区域的宽度和高度。感兴趣区域的宽度和高度必须各自大于或等于 63 的值。

输出参量

全部折叠

SIFT 特征,以 SIFTPoints 对象的形式返回。该对象包含在二维灰度或二值图像中检测到的 SIFT 特征的相关信息。

参考

[1] Lowe, David G. "Distinctive Image Features from Scale-Invariant Keypoints." International Journal of Computer Vision 60, no. 2 (November 2004): 91--110.

扩展功能

全部展开

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2021b 中推出