What are tvecs and rvecs?

asked 2016-01-20 16:25:47 -0500

Fahrradweg gravatar image

updated 2016-01-21 06:52:30 -0500

When obtaining the camera calibration parameters using calibrateCamera I get back two C++ vectors of matrices tvecs and rvecs. It seems that these are the extrinsic parameters of the camera, i.e. the parameters that describe the location and rotation of the camera. If I'm understanding it correctly, the rotation matrix rotates the scene so that the optical axis of the camera is aligned parallel to the Z-axis and the translation vector then moves the scene by the negative camera position vector, so that it is located at the origin. Am I understanding this correctly?

Bonus question: Is it possible to reproject (u, v) points from the camera image back to world coordinates? It seems to be impossible in the general case because cameraMatrix performs a central projection so that the depth information is lost.

edit retag flag offensive close merge delete

Comments

Up :) I'd like to understand too. I get these via Arucos however I don't see what it refers to. To my understanding :

  • tvecs is the location vector (stored in a 3X1 matrix), the coordinates x,y,z of the chessboard or aruco in camera's coordinates system, which is z along optical axis, x to the right and y to the bottom)
    • rvecs is the rotation vector (same as above) of the aruco under camera's coordinates system (same as above).

However it seems that I'm missing something there. When I print the values of rvecs with :

rvecs[i].at<double>(0,k)

Well it seems that values are correlated...

Maltergate gravatar imageMaltergate ( 2016-03-03 09:49:33 -0500 )edit

Yes, I think you are correct. Also, no: you cannot reproject from camera to world space exactly because z is lost. Given the plane z coordinate, then you can map from camera to world space.

a4re gravatar imagea4re ( 2018-08-28 03:08:13 -0500 )edit