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 ![]()
