正确的方法,从通过SVD本质矩阵提取翻译(Correct way to extract Transl

2019-08-21 15:00发布

我校准我的相机,发现内在的参数(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,如下所示:

我使用OpenCV的库在C#.NET实现这一点。 任何人都知道这翻译公式是正确的?

Answer 1:

第一溶液示出具有向量t(因此第一溶液= [T] x)的叉积的矩阵表示,而第二溶液却与此平移向量t( https://en.wikipedia.org/wiki/Essential_matrix ) 。

[T] x的定义是:

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



文章来源: Correct way to extract Translation from Essential Matrix through SVD