如何结合SURF和Harris点MATLAB

时间:2015-05-25 12:03:59

标签: matlab image-processing computer-vision feature-extraction matlab-cvst

正如我们在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生成的两个特征,如下面的输出:

enter image description here

我不知道这种组合是否可行,或者是否想要从两者中获得两种匹配功能。

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

我也不知道如何从SURF&获取功能坐标位置。哈里斯匹配??

2 个答案:

答案 0 :(得分:3)

使用detectHarrisFeaturesdetectSURFFeatures基本上会返回结构,其中每个字段都包含有关图像中检测到的兴趣点的相关信息。为了给出可重现的示例,让我们使用属于图像处理工具箱的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不支持描述兴趣点。

答案 1 :(得分:1)

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

以这种方式思考:Harris检测角落,而SURF检测斑点中心。 Harris角和SURF关键点不太可能对应于世界上相同的物理点。因此,分别匹配这些点更有意义。