I want to recover the relativ transformation from two poses using taken a image in that pose. Therefore Im using the recoverPose() function. The feature points are chessboard corners, which are found by the function findChessboardCornersSB(). Like the function description says its doing chirality check, so that the 3D feature points are in front of both cameras (z > 0).

So the direction of t should be returned correctly. But when I’m comparing the result with a different measurement device the direction is incorrect, so it should be -t instead of t (Im aware that t is just known up to a scale factor, but the direction should be correct). The same thing holds for the rotation.

Example:

Transformation from pose 1 to pose 2 (camera):

t_c: array([[-0.53089827],

[-0.24692117],

[-0.81066452]])

r_c: array([-7.79764231, 12.76942642, 14.08820934])

Transformation from pose 1 to pose 2 (different measurement device, it isn’t perfect but the direction is correct comparing the result to the real world):

t_dm: [ 7.52418209, 22.41531195, 31.09952373]

r_dm: [ 3.85999644, -9.27509701, -13.9813268 ]

As you can see:

-r_c ~= r_dm

-k * t_c ~= t_dm with k>0 (scale factor)

Did you experienced the same behavior? Also if you dont, a answer would also help. Im using opencv 4.9.0.

Thanks in advance!