你怎么知道单应矩阵是否可以接受?

时间:2012-06-15 14:53:54

标签: opencv geometry computer-vision homography

当使用OpenCV的findHomography函数估计两组点之间的单应性时,从不同的图像中,即使使用RANSAC或LMEDS,由于输入点内的异常值,有时也会出现错误的单应性。 / p>

// opencv java example:
Mat H = Calib3d.findHomography( src_points, dst_points, Calib3d.RANSAC, 10 );

如何判断得到的3x3单应矩阵是否可以接受?

我已经在Stackoverflow和Google中找到了答案,但无法找到它。

我找到了这篇文章,但对我来说有点神秘:

"The geometric error for homographies"

1 个答案:

答案 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是真实点。

enter image description here

3-建立一个阈值,确定重投影错误是否可接受。

例如,对于许多跟踪应用程序而言,大于一个像素的误差是不可接受的。