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?