繁体   English   中英

通过SVD从Essential Matrix提取翻译的正确方法

[英]Correct way to extract Translation from Essential Matrix through 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,如下所示:

在此处输入图片说明

我正在使用openCv库在C#.Net上实现此功能。 有人知道哪个翻译公式正确吗?

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

[t] x的定义是:

在此处输入图片说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM