主要内容

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

detectORBFeatures

检测 ORB 关键点

说明

points = detectORBFeatures(I) 返回一个 ORBPoints 对象,其中包含有关 ORB 关键点的信息。通过使用“定向 FAST 和旋转 BRIEF (ORB) ”特征检测方法,从输入图像中检测出 ORB 关键点。

示例

points = detectORBFeatures(I,Name,Value) 使用一个或多个名称-值参量指定选项。

示例

示例

全部折叠

将图像读入工作区。

I = imread('businessCard.png');

将图像转换为灰度图像。

I = im2gray(I);

显示该灰度图像。

figure
imshow(I)

Figure contains an axes object. The hidden axes object contains an object of type image.

检测并存储 ORB 关键点。

points = detectORBFeatures(I);

显示灰度图像,并绘制检测到的 ORB 关键点。隐藏检测到的关键点周围的圆圈。ORB 关键点是在强度方差较大的区域中检测到的。

figure
imshow(I)
hold on
plot(points,'ShowScale',false)
hold off

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

将二值图像读入工作区。

I = imread('star.png');

显示图像。

figure
imshow(I)

Figure contains an axes object. The hidden axes object contains an object of type image.

检测并存储 ORB 关键点。将图像分解的缩放因子指定为 1.01,分解层数指定为 3。

points = detectORBFeatures(I,'ScaleFactor',1.01,'NumLevels',3);

显示图像并绘制检测到的 ORB 关键点。二值形状图像中的角点被检测为 ORB 关键点。

figure
imshow(I)
hold on
plot(points)
hold off

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 引起来。

示例: detectORBFeatures(I,'NumLevels',4)

图像分解的缩放因子,指定为由 'ScaleFactor' 和一个大于 1 的标量组成的以逗号分隔的元组。每个分解级别的尺度值为 ScaleFactor(level-1),其中 level 是 [0, Numlevels-1] 范围内的任意值。给定尺寸为 M×N 的输入图像,每个分解层级的图像尺寸均为 Mlevel=MScaleFactor(level1)Nlevel=NScaleFactor(level1)

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint64 | uint32

分解级别数,指定为由 'NumLevels' 和一个大于或等于 1 的标量组成的以逗号分隔的数对。增加此值,可在更多分解层次上从图像中提取关键点。

提取关键点的分解级别数量受该级别图像大小的限制。在某个分解级别上,图像尺寸必须至少为 63×63,才能检测关键点。最高分解级别按

levelmax = floor(log(min(M,N))log(63)log(ScaleFactor))+1

计算。如果 'NumLevels' 的默认值或指定值大于 levelmax,则该函数会将 NumLevels 修改为 levelmax,并返回一条警告。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint64 | uint32

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

输出参量

全部折叠

ORB 关键点,以 ORBPoints 对象的形式返回。该对象包含有关在输入图像中检测到的关键点的信息。

算法

该函数利用[1]中的 ORB 特征检测方法,从输入图像中检测关键点。

参考

[1] Rublee, E., V. Rabaud, K. Konolige, and G. Bradski. "ORB: An Efficient Alternative to SIFT or SURF." In Proceedings of the 2011 International Conference on Computer Vision, 2564–2571. Barcelona, Spain: IEEE, 2011.

扩展功能

全部展开

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

版本历史记录

在 R2019a 中推出