findHomography与RANSAC错误的异常

时间:2012-08-20 23:00:09

标签: c++ opencv homography ransac

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

我正在与RANSAC进一步调查单应性。 我发现许多好点被错误标记为异常值。

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

我试图将阈值提高到10 但结果却大致相同。 我能做些什么来改善这种情况吗?

RANSAC出现了什么问题吗?

3 个答案:

答案 0 :(得分:6)

在这种情况下,

异常值意味着这些点不适合模型,但不一定必须落在对象之外

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

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

答案 1 :(得分:2)

尝试使用其他功能检测器查找更多功能(最小100)或调整检测器阈值以增加数量。它也适合在物体上均匀分布点。 您可以从OpenCV尝试goodFeaturesToTrack。

答案 2 :(得分:0)

在这种情况下,

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

  1. 匹配错误
  2. 图像功能的冗余(例如,简单的棋盘格)
  3. 如果要素点是3D对象,则无法保证对象内部存在内部。如果匹配作为图像坐标中的输入给出,则Opencv的findHomography估计平面单应性