Prawidłowy sposób wyodrębnienia tłumaczenia z Essential Matrix przez SVD

Kalibrowałem aparat i znalazłem wewnętrzne parametry (K). Obliczyłem także podstawową macierz (F).

Teraz E = K_T * F * K. Jak na razie dobrze.

Teraz przekazujemy Essential Matrix (E) do SVD, aby użyć wartości dekompozycji (U, W, V) do wyodrębnienia rotacji i tłumaczenia:

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

** Pytanie) W tym momencie zaproponowano dwie metody, które zdezorientowały mnie, która z nich naprawdę daje właściwą odpowiedź - specjalnie dla tłumaczenia:

Najpierw metodawprowadź opis linku tutaj autor sugeruje obliczenie R, T w następujący sposób:

Ale w drugiej metodzie [http://isit.u-clermont1.fr/~ab/Classes/DIKU-3DCV2/Handouts/Lecture16.pdf] autor podaje inną formułę dla T, która jest + U, -U jak pokazano poniżej:

Implementuję to na C # .Net przy użyciu bibliotek openCv. Ktoś wie, który Formula do tłumaczenia jest właściwy?

questionAnswers(1)

yourAnswerToTheQuestion