我正在使用features2d(ORB,SIFT等)进行一些对象检测
我正在与RANSAC进一步调查单应性。 我发现许多好点被错误标记为异常值。
有很多异常值不应该是对象内部的异常值(书)
我试图将阈值提高到10 但结果却大致相同。 我能做些什么来改善这种情况吗?
RANSAC出现了什么问题吗?
答案 0 :(得分:6)
异常值意味着这些点不适合模型,但不一定必须落在对象之外。
RANSAC找到适合模型的最佳点集,其余的被认为是异常值,但是异常值可以完美地成为您跟踪的受噪声影响的对象的一个点,并且其检测到的位置与RANSAC的偏差足够大重新投射被视为异常值。
您不必担心,它正常工作,您的对象被检测到,如图所示。
答案 1 :(得分:2)
尝试使用其他功能检测器查找更多功能(最小100)或调整检测器阈值以增加数量。它也适合在物体上均匀分布点。 您可以从OpenCV尝试goodFeaturesToTrack。
答案 2 :(得分:0)
异常值是不适合模型的点。 Opencv中的RANSAC在匹配点对之间找到平面单应性。在你的案例中,书是一架飞机,内部应该在书内。如果它们被视为异常值,原因可能是
如果要素点是3D对象,则无法保证对象内部存在内部。如果匹配作为图像坐标中的输入给出,则Opencv的findHomography估计平面单应性