使用 SIFT 进行对象识别:切换图像的顺序会产生两种不同的结果

信息处理 图像处理 opencv 图片
2022-02-20 08:55:31

我开发了一个大型测试系统,可以使用每个兴趣点检测器和描述符。我用它来评估给定的算法和cd-covers 的standford-image-collection这篇文章不会对任何源代码进行深入探讨。我只发现切换到图像(不称为 firstImg 和 secondImg)会产生不同的结果。Ransac-Threshold 用于计算单应性,而 epsilon 是重投影误差。对于此示例,我使用David Lowe 的 Scale-Invariant-Feature-Transform

使用 secondImg 作为队列图像的第一次测试创建了我写下的以下结果:

  • 内联:“1672”
  • Number_of_Keypoints_FST:“368”
  • Number_of_Keypoints_SND:“1749”
  • 异常值:“77”
  • 兰萨克:“65”
  • 厄普西隆:“10”

这是保存的图像。

现在我正在切换顺序。firstImg 是队列。

  • 内联:“310”
  • Number_of_Keypoints_FST:“1749”
  • Number_of_Keypoints_SND:“368”
  • 异常值:“58”
  • 兰萨克:“65”
  • 厄普西隆:“10”

这是第二个结果。

问题:我很困惑切换图像的顺序会影响结果。切换图像顺序时匹配的关键点是否应该与匹配的关键点相同?内联应该相同吗?

2个回答

啊。我感到惭愧。交叉验证怎么样?这就是解决方案。现在几乎完全匹配......几乎。=) 谢谢你,Libor。第二条评论给了我一个提示。=)

假设第一张图像有 100 个关键点,第二张图像有 500 个关键点。
对于 NN 搜索,第一张图像中的每个点都会在 500 个点中找到最近的一个但是当我们反转图像顺序时,第二张图像的每个关键点都会在 100 个关键点中搜索最近的一个。

所以基本上搜索空间会发生变化,因此结果也会发生变化。