I tried to post this question on StackOverflow, but it seems to cause confusion over there, so I am attempting my luck here again:
I have a multi-camera system where the cameras are mounted to a fixed structure (except for wind-induced vibration, the cameras are not moving). I measured the position and the orientation of the cameras with a total station, which means that I have a rough estimate of the translation vectors and the (what I call) camera’s forward vector (vector pointing from the sensor’s principal point out the front of the camera).
Using the total station, I also measured the 3D position of a couple of markers, and I am now trying to get an extrinsic camera calibration using Calib3D.calibrateCamera()
.
Sidenote: I did do a separate intrinsic calibration, so we are only talking about the extrinsic parameters tvec
and rvec
here.
At first, I tried to run calibrateCamera()
without any initial values for the extrinsic parameters, but the results were obvious garbage (OpenCV estimated that the cameras must be several km below the ground). I therefore would like to give calibrateCamera()
the initial guess that I measured using the total station for tvec
and rvec
, but I am struggling to convert my forward vector into a Rodrigues vector.
Here’s a figure to illustrate how I understand the situation:
My camera is looking into the direction of v_cam
, so, v_cam
is the aforementioned “forward vector”. Given some reference vector v_Ref
, the Rodrigues vector v_Rodrigues
defines the rotation axis around which v_Ref
is rotated and through its length, v_Rodrigues
defines by what angle v_Ref
needs to be rotated to result in v_cam
.
So, given that I (roughly) know v_cam
, I would like to construct v_Rodrigues
by calculating the cross-product of v_cam
and v_Ref
and scaling the result by the angle between v_Ref
and v_cam
.
Now, the two questions that I have are:
- Is my understanding of the math correct?
- How does OpenCV define
v_Ref
?
The second question could also be rephrased as: “If the rotation were to be represented by a rotation matrix, what direction would the camera be pointing in if the rotation matrix is an identity matrix?”
Cheers, and thank you for your help