如何结合 SURF 和 Harris 点 MATLAB

How to combine SURF and Harris points MATLAB

正如我们在Matlab中所知道的,有单独检测Harris或SURF特征的功能。然后我需要结合这两个来自 Harris 和 SURF 的特征列表来使匹配更有效。

以下是我们已知的默认程序

points_image_Harris =detectHarrisFeatures(image );
[feature_image_Harris, validpoints_image_Harris] = extractFeatures(image,  points_image_Harris ); 
indexPairs_Harris = matchFeatures(feature_template_Harris,feature_image_Harris);

但我想在进行匹配之前合并两个点列表:像这样:

points_image_Harris =detectHarrisFeatures(image );
points_image_SURF =detectSURFFeatures(image );
Points = points_image_Harris  + points_image_SURF 

然后使用点列表进行特征提取和匹配。 这该怎么做?如果他们有两种不同的类型? cornerPoints 和 SURFPoints !

我需要从 SURF 和 Harris 生成的两个特征,如下输出:

我不知道这种组合是否可行,也不知道是否有任何想法可以从两者中获得匹配的特征。

其实我想检测这些特征,然后我想从帧中获取这些像素的位置,然后计算 X 和 Y 位置之间的差异。

我也不知道如何从 SURF & Harris 匹配中获取特征坐标位置??

使用detectHarrisFeatures and detectSURFFeatures本质上是returns一个结构,其中每个字段都包含有关图像中检测到的兴趣点的相关信息。为了给出一个可重现的例子,让我们使用图像处理工具箱中的 cameraman.tif 图像。让我们也使用带有默认参数的两个特征检测框架:

>> im = imread('cameraman.tif');
>> harrisPoints = detectHarrisFeatures(im);
>> surfPoints = detectSURFFeatures(im);

当我们显示harrisPoints时,我们得到的是:

harrisPoints = 

  184x1 cornerPoints array with properties:

    Location: [184x2 single]
      Metric: [184x1 single]
       Count: 184

当我们显示surfPoints时,我们得到的是:

surfPoints = 

  180x1 SURFPoints array with properties:

              Scale: [180x1 single]
    SignOfLaplacian: [180x1 int8]
        Orientation: [180x1 single]
           Location: [180x2 single]
             Metric: [180x1 single]
              Count: 180

因此,harrisPointssurfPoints 都有一个名为 Location 的字段,其中包含您想要的要素的空间坐标。这将是一个 N x 2 矩阵,其中每一行都为您提供特征点的位置。第一列是 x 或水平坐标,第二列是 y 或垂直坐标。原点在图像的左上角,向下移动时y坐标为正

因此,如果您想将两个特征点组合在一起,访问两个对象的 Location 字段并将它们连接在一起成为一个矩阵:

>> Points = [harrisPoints.Location; surfPoints.Location];

Points 现在应该包含一个矩阵,其中每一行都为您提供一个特征点。


小提醒一下,Harris角点检测只是一种兴趣点检测算法。提供给您的只是图像中有趣点的位置。 SURF 既是检测又是 描述 框架,您不仅可以在其中获取兴趣点,还可以获得每个兴趣点的良好稳健描述,您可以使用该描述来执行其他兴趣点之间的匹配其他图像中的点。因此,如果您想将 Harris 和 SURF 结合在一起,那是不可能的,因为 Harris 不支持描述兴趣点。

在匹配之前将不同检测器返回的点组合起来并不是一个好主意。最好分别匹配从不同种类的兴趣点提取的描述符,然后将匹配的点组合起来。否则你就是在比较苹果和橘子。

这样想:Harris 检测角点,而 SURF 检测斑点的中心。 Harris 角点和 SURF 关键点不太可能对应于世界上的同一个物理点。所以分别匹配这些点更有意义。