通过SVD从基本矩阵中提取翻译的正确方法

我校准了我的相机并找到了内在参数(K)。 我也计算了基本矩阵(F)。

现在E = K_T * F * K。 到现在为止还挺好。

现在我们将基本矩阵(E)传递给SVD以使用分解值(U,W,V)来提取旋转和平移:

 essentialMatrix = K.Transpose().Mul(fund).Mul(K);
 CvInvoke.cvSVD(essentialMatrix, wMatrix, uMatrix, vMatrix, Emgu.CV.CvEnum.SVD_TYPE.CV_SVD_DEFAULT);

**问题)在这一点上,有两种方法被提出,它让我困惑,哪一个真的给出了正确的答案 - 特别是翻译:

起初,方法在这里输入链接描述,作者建议计算R,T如下:

在这里输入图像描述

但在第二种方法[http://isit.u-clermont1.fr/~ab/Classes/DIKU-3DCV2/Handouts/Lecture16.pdf]中,作者提供了另一个T的公式,它是+ U,-U,如下所示:

在这里输入图像描述

我正在C#.Net上使用openCv库实现这一点。 谁知道哪个翻译公式是正确的?


第一个解决方案显示了带有向量t的交叉乘积的矩阵表示(所以第一个解= [t] x),而第二个解决方案只显示了翻译矢量t(https://en.wikipedia.org/wiki/Essential_matrix) 。

[t] x的定义是:

(来自http://gandalf-library.sourceforge.net/tutorial/report/img148.png)

链接地址: http://www.djcxy.com/p/70875.html

上一篇: Correct way to extract Translation from Essential Matrix through SVD

下一篇: Bug with find.exe?