当使用OpenCV的findHomography
函数估计两组点之间的单应性时,从不同的图像中,即使使用RANSAC或LMEDS,由于输入点内的异常值,有时也会出现错误的单应性。 / p>
// opencv java example:
Mat H = Calib3d.findHomography( src_points, dst_points, Calib3d.RANSAC, 10 );
如何判断得到的3x3单应矩阵是否可以接受?
我已经在Stackoverflow和Google中找到了答案,但无法找到它。
我找到了这篇文章,但对我来说有点神秘:
答案 0 :(得分:22)
判断单应性是否可接受的最佳方法是。
1-取一张图像的点并使用计算出的单应性重新投影。
//for one 3D point, this would be the projection
px' = H * px;
py' = H * py;
pz' = H * pz;
2-计算重新投影的点与图像中的实际点之间的euclidean distance。
Reprojection error一点。 p是投影点,q是真实点。
3-建立一个阈值,确定重投影错误是否可接受。
例如,对于许多跟踪应用程序而言,大于一个像素的误差是不可接受的。