The right way to retrieve a translation from the main matrix via SVD

I calibrated my camera and found the internal parameters (K). I also computed the base matrix (F).

Now E = K_T * F * K. So far so good.

Now we pass the main matrix (E) to SVD to use the decomposition values ​​(U, W, V) to extract the rotation and translation:

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

** Question) At the moment, two methods were proposed, and this confused me, which really gives the correct answer, in particular, for translation:

First, enter a description of the link here. The author suggests calculating R, T as follows:

enter image description here

But in the second method [ http://isit.u-clermont1.fr/~ab/Classes/DIKU-3DCV2/Handouts/Lecture16.pdf], the author provides another formula for T, which is + U, -U, as shown below :

enter image description here

I implement this in C # .Net using the openCv libraries. Does anyone know which translation formula is correct?

+7
source share
1 answer

the first solution shows the matrix representation of the transverse product with the vector t (therefore, the first solution = [t] x), and the second solution shows only the translation vector t ( https://en.wikipedia.org/wiki/Essential_matrix ).

Definition of [t] x:

enter image description here

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

+4
source

All Articles