Richtige Methode zum Extrahieren der Übersetzung aus Essential Matrix über SVD

Ich habe meine Kamera kalibriert und die inneren Parameter (K) gefunden. Auch ich habe die Grundmatrix (F) berechnet.

Jetzt ist E = K_T * F * K. So weit, ist es gut.

Nun übergeben wir die Essential Matrix (E) an die SVD, um die Zerlegungswerte (U, W, V) zu verwenden, um die Rotation und Translation zu extrahieren:

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

** Frage) An dieser Stelle wurden zwei Methoden vorgeschlagen, und es hat mich verwirrt, welche wirklich die richtige Antwort geben - speziell für die Übersetzung:

Bei der ersten MethodeGeben Sie hier die Beschreibung des Links ein Der Autor schlägt vor, das R, T wie folgt zu berechnen:

Aber in der zweiten Methode [http://isit.u-clermont1.fr/~ab/Classes/DIKU-3DCV2/Handouts/Lecture16.pdf] Der Autor gibt eine andere Formel für T an: + U, -U, wie unten gezeigt:

Ich implementiere dies auf C # .Net mit OpenCv-Bibliotheken. Weiß jemand, welche Übersetzungsformel die richtige ist?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage