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!