多张图片的特征匹配

Posted

技术标签:

【中文标题】多张图片的特征匹配【英文标题】:Features matching on multiple images 【发布时间】:2015-09-02 09:04:30 【问题描述】:

我正在尝试在多个图像上实现特征匹配。这个想法是跟踪图像数据集中的一些特征。我在 Matlab 上使用 mexopenCV,算法的基础是:

1. Feature Detection using SIFT or SURF
2. Feature Description using SIFT or SURF
3. Feature matching using Flann matcher or Brute Force
4. Filtering matches using RANSAC

我的问题如下: 使用场景中的单个对象,所有跟踪的特征都在该对象上。但是,当我将另一个对象添加到场景中时,跟踪的特征仅存在于新对象上,而第一个对象上没有任何特征。有没有解释为什么会这样?

图片 1

图片 2

P.S:每张图像上的特征是在所有数据集(8 张图像)上跟踪的特征。

【问题讨论】:

我已经为您添加了图片,以便您更有可能得到回复。 感谢您的帮助! 这太奇怪了。根据我的经验,您将获得更多功能,而不仅仅是新对象中的功能。您的算法可以检测到的特征数量是否有上限? 您是否设置了最大特征数?如果您发布了一些可能有帮助的代码 我认为这与 RANSAC 的行为方式有关。场景中的棋盘和雕像的深度不同,RANSAC 所做的是他试图找到具有最多匹配特征的最佳模型。但鉴于有两个模型(由于场景中的深度变化),RANSAC 只会匹配两者中最好的特征。我搜索了更多,发现它与多模态拟合有关。有顺序 RANSAC 或多 RANSAC 可以处理此问题,但我仍然不确定我的结论。有谁可以说是这个原因? 【参考方案1】:

我想我找到了只在一个对象上查找特征的原因。正如我在评论中提到的,RANSAC 在匹配特征时会尝试找到最佳模型。由于我们对两个对象的深度进行了更改,因此我们基本上有两个模型需要拟合。我搜索了多模态拟合,发现有Sequential RANSAC 和Multi-RANSAC 可以解决这个问题。我通过将模型数量设置为 2 来尝试使用顺序 RANSAC,并获得了不错的结果。

【讨论】:

以上是关于多张图片的特征匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何实现两张图片的匹配?

sift算法特征点如何匹配?

matlab 尺度不变特征变换sift 图片匹配算法

特征匹配篇

opencv ORB特征匹配

opencv AKAZE 局部特征匹配算法