在Matlab中,我们知道有一个函数可以单独检测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
然后利用点列表进行特征提取和匹配。
怎么做如果他们有两种不同的类型拐点和冲浪点!
我需要从SURF和Harris生成的两个特性,如下所示:
我不知道这种组合是否可能,或者是否有任何想法从两者中获得两个匹配的特征。
实际上,我想检测这些特征,然后我想从帧中获取这些像素的位置,然后计算X和Y位置之间的差异。
我也不知道如何从SURF&Harris匹配中得到特征坐标位置??
最佳答案
使用detectHarrisFeatures
和detectSURFFeatures
基本上返回一个结构,其中每个字段包含有关在图像中检测到的兴趣点的相关信息为了给出一个可重复的例子,让我们使用图像处理工具箱中的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
因此,
harrisPoints
和surfPoints
都有一个名为Location
的字段,其中包含所需特征的空间坐标这将是一个N x 2
矩阵,其中每一行给出一个特征点的位置第一列是x
或水平坐标,第二列是y
或垂直坐标原点在图像的左上角,向下移动时y
坐标为正。因此,如果要将两个特征点组合在一起,请访问两个对象的
Location
字段,并将它们连接到一个矩阵中:>> Points = [harrisPoints.Location; surfPoints.Location];
Points
现在应该包含一个矩阵,其中每一行为您提供一个特征点。我想稍微说明一下,Harris角点检测器只是一种兴趣点检测算法所有给你的是图像中有趣点的位置SURF是一个检测和描述框架,在这里不仅可以得到兴趣点,还可以得到每个兴趣点的良好健壮描述,可以用来在其他图像中执行其他兴趣点之间的匹配因此,如果你想把Harris和SURF结合在一起,那是不可能的,因为Harris不支持描述兴趣点。
关于matlab - 如何结合SURF和Harris点MATLAB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30437961/