主要内容

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

SURFPoints

用于存储 SURF 兴趣点的对象

说明

此对象支持在 detectSURFFeaturesextractFeatures 函数之间传递数据。它还可以用于处理和绘制这些函数返回的数据。您可以使用该对象以交互方式填充这些点。当您希望将非 SURF 兴趣点检测器与 SURF 描述子结合使用时,可以采用这种方法。

创建对象

描述

points = SURFPoints(location) 根据一个 [x y] 点坐标组成的 M×2 数组,构建一个 SURFPoints 目标。

示例

输入参量

全部展开

点坐标,指定为形式为 [x y] 的 M×2 数组。M 表示点数。

属性

全部展开

对象持有的点数,以数值形式指定。

点位置,指定为由 [x y] 点坐标组成的 M×2 数组。

检测到该特征的尺度,指定为数值标量或 M 元素向量。值必须大于或等于 1.6

检测特征的强度,指定为值或 M 元素向量。SURF 算法使用近似海森矩阵的行列式作为度量。

检测特征的方向,指定为数值标量或包含 M 元素的向量。该值必须为角度,单位为弧度。角度以 X 轴为基准,逆时针方向测量,原点由 Location 属性指定。请勿手动设置此属性。请改用调用 extractFeatures 来填充此值。extractFeatures 函数用于修改 0.0 的默认值。Orientation 主要用于可视化目的。

在检测过程中确定的拉普拉斯算子的符号,指定为 -101。您可以使用此参数来加快特征匹配过程。

具有相同度量值但拉普拉斯算子符号不同的斑点,其强度值可能不同。例如,背景上的白色斑点与白色背景上的黑色斑点。您可以使用此参数快速剔除不匹配的斑点。

对于非 SURF 检测器,此属性不适用。例如,对于角特征,您可以直接使用默认值 0

对象函数

plot绘制检测到的特征点
isempty判断 points 对象是否为空
length存储的点数
selectStrongest选择度量最高的点
sizepoints 对象的返回大小
selectUniformSelect uniformly distributed subset of point features
selectSelect point or region features during code generation

示例

全部折叠

读取图像。

    I = imread('cameraman.tif');

检测 SURF 特征。

    points = detectSURFFeatures(I);

显示排名前 10 的强点的位置和比例尺。

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

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

在命令行中显示 10 个最强点的 [x y] 坐标。

    strongest.Location
ans = 10×2 single matrix

  139.7482   95.9542
  107.4502  232.0347
  116.6112  138.2446
  105.5152  172.1816
  113.6975   48.7220
  104.4210   75.7348
  111.3914  154.4597
  106.2879  175.2709
  131.1298   98.3900
  124.2933   64.4942

读取图像。

    I = imread('cameraman.tif');

检测 SURF 特征。

    points = detectSURFFeatures(I);

显示最后 5 个点。

    imshow(I); hold on;
    plot(points(end-4:end));

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

提示

尽管 SURFPoints 可能包含许多点,但它是一个标量对象。因此,numel(points) 始终返回 1。该值可能与 length(points) 不同,后者返回该对象实际持有的点数。

参考

[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 中推出