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

Rui*_*ues 24 geometry opencv computer-vision homography

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

// opencv java example:
Mat H = Calib3d.findHomography( src_points, dst_points, Calib3d.RANSAC, 10 );
Run Code Online (Sandbox Code Playgroud)

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

我在Stackoverflow和Google中找到了这个问题的答案,但无法找到它.

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

"单应性的几何误差"

Jav*_*ock 22

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

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

//for one 3D point, this would be the projection
px' = H * px;
py' = H * py;
pz' = H * pz;
Run Code Online (Sandbox Code Playgroud)

2-计算重新投影点与图像中实际点之间的欧氏距离.

一点重投影错误.p是投影点,q是真实点.

在此输入图像描述

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

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

  • 当您知道两张图片很可能在相似位置共享补丁时,您建议的内容对跟踪有效.当您计算两个不同图像之间的单应性以检查一个图像是否包含另一个图像时,重投影错误根本没用.例如,在我的情况下,我经常从一个图像中获得许多(~30)个点被映射到第二个图像中的相同点(或几个,近点).你对这个案子有什么建议吗? (11认同)