从多个图像中找到最佳匹配的图像进行SIFT BF-Match

问题描述 投票:0回答:3

我读过很多关于使用 SIFT 和强力匹配(如 thisthis)将一张图像与多个图像进行匹配的问题。 是否可以进行多对一匹配?我想做的是以下事情。

  1. 循环查询目录中的图像
  2. 为每个图像提取 SIFT 关键点和描述符
  3. 与每个火车/模板图像进行匹配(再次使用 SIFT)
  4. 获取具有最佳匹配的模板图像(例如最小欧几里得距离?)
  5. 使用这个最佳模板图像并计算该模板图像和当前查询图像之间的仿射变换。

到目前为止,我已经成功到第3步了,但一直停留在这一点。

我正在使用 Opencv 2.7.12 和 python 2.7。由于这个版本中没有

drawMatches
,所以我使用这个实现

python opencv sift template-matching
3个回答
1
投票

第 1 步:对从 BF-Match 获得的比赛运行 RANSAC。

第 2 步:测试单应性矩阵的有效性/优良性,如这里

第3步:如果单应性矩阵良好,则变换

当然欧几里得也应该有效


0
投票

我建议如下:

为您的图像匹配过程创建工作流程以获得最佳匹配:

对于数据库中的每对图像,执行以下操作:

  1. 第 1 阶段:在应用 SIFT(图像预处理)之前执行任何图像对比度增强,请检查此此处
  2. 第 2 阶段:运行 SIFT 并从每对图像中提取匹配集作为 CSV 文件。
  3. 第 3 阶段:对每个生成的 CSV 文件运行 RANSAC 以消除任何异常值。

此外,如果您可以同时运行每个工作流程,这样可以缩短执行时间,那就太好了。

检查此工作流程,以便为您提供更好的想法: enter image description here


0
投票

最简单的方法是对每个图像对进行 for 循环,并使用它来查找 n 个最佳匹配的平均误差。然后选择误差最小的匹配或图像对。

© www.soinside.com 2019 - 2024. All rights reserved.