【问题标题】:findHomography with RANSAC wrong outlieringfindHomography 与 RANSAC 错误异常值
【发布时间】:2012-08-16 07:09:31
【问题描述】:

我正在使用 features2d(ORB、SIFT 等)进行一些对象检测

我正在使用 RANSAC 进一步研究单应性。 我发现很多好点都被错误地标记为异常值。

对象(书)内部有很多不应该是异常值的异常值

我尝试将阈值提高 10,但结果几乎相同。 我可以做些什么来改善这种情况吗?

RANSAC 有什么问题吗?

【问题讨论】:

  • 我将 RANSAC 与 OpenCV 一起使用,我没有任何问题。可能是您的图像中有噪点吗?您使用的是校准过的相机吗?

标签: c++ opencv homography ransac


【解决方案1】:

异常值在这种情况下意味着这些点不适合模型,但它们不一定要落在您的对象之外

RANSAC 找到适合模型的最佳点集,其余点被视为异常值,但异常值完全可以是您正在跟踪的对象中受噪声影响的点,并且其检测到的位置与 RANSAC 的偏差足够大重新投影被视为异常值。

您不必担心,它工作正常并且检测到您的对象,如图所示。

【讨论】:

  • 我不认为异常值是错误的。可能发生的情况是您的内点不够好。一个好的单应性至少需要 4 个点,如果噪音太大,RANSAC 将失败,因为它是一种线性方法。
  • 是的,这是 RANSAC 认为的内点,但这并不意味着这些点会产生良好的单应性。您的图像中可能有模糊,并且点的位置不精确。当我快速移动相机时,有时我也会遇到类似的问题。跟踪丢失。
  • 这对我来说是一个真正的问题 =/ 是的,可能画面中有一些模糊,但我相信并没有那么严重(而且我没有在该画面中移动相机)
【解决方案2】:

尝试使用其他特征检测器找到更多特征(最少 100 个)或调整检测器阈值以增加数量。也适合在对象上平均分配点。 你可以试试 OpenCV 的 goodFeaturesToTrack。

【讨论】:

  • +1 是的,找到超过 100 个点会增加出现“好”内点的机会。我觉得 SIFT 还可以,结合 FLANN 匹配
【解决方案3】:

异常值在这种情况下是不适合模型的点。 Opencv 中的 RANSAC 在匹配点对之间找到平面单应性。在你的情况下,书是一架飞机,内线应该在书内。如果它们被认为是异常值,原因可能是

  1. 匹配错误
  2. 图像特征中的冗余(简单,例如棋盘)

在特征点是 3D 对象的情况下,不能保证内点位于对象内部。如果将匹配作为图像坐标中的输入给出,则 Opencv 的 findHomography 会估计平面单应性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 2012-10-20
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多