Extraer la traducción y la rotación de la Matriz Fundamental

Estoy tratando de recuperar vectores de traslación y rotación de una Matriz fundamental calculada. Yo uso OpenCV y el enfoque general es de wikipedia. Mi código es así:

//Compute Essential Matrix
Mat A = cameraMatrix(); //Computed using chessboard
Mat F = fundamentalMatrix(); //Computed using matching keypoints
Mat E = A.t() * F * A;

//Perfrom SVD on E
SVD decomp = SVD(E);

//U
Mat U = decomp.u;

//S
Mat S(3, 3, CV_64F, Scalar(0));
S.at<double>(0, 0) = decomp.w.at<double>(0, 0);
S.at<double>(1, 1) = decomp.w.at<double>(0, 1);
S.at<double>(2, 2) = decomp.w.at<double>(0, 2);

//V
Mat V = decomp.vt; //Needs to be decomp.vt.t(); (transpose once more)

//W
Mat W(3, 3, CV_64F, Scalar(0));
W.at<double>(0, 1) = -1;
W.at<double>(1, 0) = 1;
W.at<double>(2, 2) = 1;

cout << "computed rotation: " << endl;
cout << U * W.t() * V.t() << endl;
cout << "real rotation:" << endl;
Mat rot;
Rodrigues(images[1].rvec - images[0].rvec, rot); //Difference between known rotations
cout << rot << endl;

Al final, trato de comparar la rotación estimada con la que calculé utilizando el tablero de ajedrez que se encuentra en cada imagen (planeo obtener los parámetros extrínsecos sin el tablero de ajedrez). Por ejemplo me sale esto:

computed rotation:
[0.8543027125286542, -0.382437675069228, 0.352006107978011;
  0.3969758209413922, 0.9172325022900715, 0.03308676972148356;
  0.3355250705298953, -0.1114717965690797, -0.9354127247453767]

real rotation:
[0.9998572365450219, 0.01122579241510944, 0.01262886032882241;
  -0.0114034800333517, 0.9998357441946927, 0.01408706050863871;
  -0.01246864754818991, -0.01422906234781374, 0.9998210172891051]

Claramente, parece que hay un problema, simplemente no puedo entender lo que podría ser.

EDIT: Aquí están los resultados que obtuve con la vt sin transponer (obviamente de otra escena):

computed rotation: 
[0.8720599858028177, -0.1867080200550876, 0.4523842353671251;
 0.141182538980452, 0.9810442195058469, 0.1327393312518831;
-0.4685924368239661, -0.05188790438313154, 0.8818893204535954]
real rotation
[0.8670861432556456, -0.427294988334106, 0.2560871201732064;
 0.4024551137989086, 0.9038194629873437, 0.1453969040329854;
-0.2935838918455123, -0.02300806966752995, 0.9556563855167906]

Aquí está mi matriz de cámara calculada, el error fue bastante bajo (alrededor de 0.17 ...).

[1699.001342509651, 0, 834.2587265398068;
  0, 1696.645251354618, 607.1292618175946;
  0, 0, 1]

Estos son los resultados que obtengo al intentar reproyectar un cubo ... Cámara 0, el cubo está alineado con el eje, la rotación y la traducción son (0, 0, 0).imagen http://imageshack.us/a/img802/5292/bildschirmfoto20130110u.png

y el otro, con las epilíneas de los puntos en la primera imagen.imagen http://imageshack.us/a/img546/189/bildschirmfoto20130110uy.png

Respuestas a la pregunta(2)

Su respuesta a la pregunta