27

当使用 OpenCV 的findHomography函数来估计来自不同图像的两组点之间的单应性时,即使您使用 RANSAC 或 LMEDS,有时也会由于输入点内的异常值而得到错误的单应性。

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

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

我在 Stackoverflow 和 Google 中寻找了这个问题的答案,但找不到。

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

“单应性的几何误差”

4

1 回答 1

25

判断单应性是否可接受的最好方法是。

1- 获取一张图像的点并使用计算的单应性重新投影它们。

//for one 3D point, this would be the projection
px' = H * px;
py' = H * py;
pz' = H * pz;

2-计算重投影点和图像中真实点之间的欧几里得距离。

一点的重投影误差。p 是投影点,q 是实点。

在此处输入图像描述

3-建立一个阈值来决定重投影误差是否可以接受。

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

于 2012-08-23T07:58:59.893 回答