Revision history [back]

Improve accuracy about calculation of transformation

I'm trying to get a rigid transformation from a model body to a camera center(The model was binded on the camera.So the transformation between them is rigid.In fact,it's a OptiTrack model binded on a Kinect v1).The model body defined a coordinate system called BODY.The camera defined a coordinate system called CAM.The aruco marker defined a coordinate system called MARKER.

The OptiTrack SDK give me the high precision transformation from BODY to MARKER,marked as tf_b2m.I'm using opencv solvePnP to get the transformation from MARKER to CAM,marked as tf_m2c.So i could get the transformation from BODY to CAM tf_b2c=tf_m2c*tf_b2m.

Theoretically,the tf_b2c should be a constant transformation.But i get about (+-10mm,+-5mm,+-2mm) in translation vector,(+-5 degree,+-1 degree,+-0.5 degree) in rotation euler angle.

Now i think the such big error because of solvePnP or camera calibration.I'm using Kinect v1 with resolution 640x480.And i'm using the opencv 3.4.0 to calibrate the Kinect several times and get stable intrinsic parameters. Please give some help about improve accuracy of camera calibration or solvePnP.

And any idea is appreciated. Thanks a lot!