我校准了相机并找到了内在参数 (K)。我还计算了基本矩阵 (F)。
现在 E= K_T* F * K 。到目前为止一切顺利。
现在我们将 Essential Matrix(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);
** 问题)在这一点上,已经提出了两种方法,我很困惑哪一种方法真正给出了正确的答案——专门针对翻译:
首先方法enter link description here作者建议按如下方式计算 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)
关于c# - 通过 SVD 从基本矩阵中提取翻译的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15940663/