CameraCalibration
Camera calibration parameters
Panel support
CameraCalibration
is used in the Image panel.
Schema
field | type | description |
---|---|---|
timestamp | time | Timestamp of calibration data |
frame_id | string | Frame of reference for the camera. The origin of the frame is the optical center of the camera. +x points to the right in the image, +y points down, and +z points into the plane of the image. |
width | uint32 | Image width |
height | uint32 | Image height |
distortion_model | string | Name of distortion model |
D | float64[] | Distortion parameters |
K | float64[9] | Intrinsic camera matrix (3x3 row-major matrix) |
R | float64[9] | Rectification matrix (stereo cameras only, 3x3 row-major matrix) |
P | float64[12] | Projection/camera matrix (3x4 row-major matrix) |
distortion_model
Supported parameters: plumb_bob
(k1, k2, p1, p2, k3) and rational_polynomial
(k1, k2, p1, p2, k3, k4, k5, k6). Distortion models are based on OpenCV's pinhole camera model. This is the same implementation used by ROS
K
A 3x3 row-major matrix for the raw (distorted) image.
Projects 3D points in the camera coordinate frame to 2D pixel coordinates using the focal lengths (fx, fy) and principal point (cx, cy).
[fx 0 cx]
K = [ 0 fy cy]
[ 0 0 1]
R
A rotation matrix aligning the camera coordinate system to the ideal stereo image plane so that epipolar lines in both stereo images are parallel.
P
[fx' 0 cx' Tx]
P = [ 0 fy' cy' Ty]
[ 0 0 1 0]
By convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image. That is, the left 3x3 portion is the normal camera intrinsic matrix for the rectified image.
It projects 3D points in the camera coordinate frame to 2D pixel coordinates using the focal lengths (fx', fy') and principal point (cx', cy') - these may differ from the values in K.
For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will also have R = the identity and P[1:3,1:3] = K.
For a stereo pair, the fourth column [Tx Ty 0]' is related to the position of the optical center of the second camera in the first camera's frame. We assume Tz = 0 so both cameras are in the same stereo image plane. The first camera always has Tx = Ty = 0. For the right (second) camera of a horizontal stereo pair, Ty = 0 and Tx = -fx' * B, where B is the baseline between the cameras.
Given a 3D point [X Y Z]', the projection (x, y) of the point onto the rectified image is given by:
[u v w]' = P * [X Y Z 1]'
x = u / w
y = v / w
This holds for both images of a stereo pair.
Reference implementations
Foxglove schemas are framework-agnostic, and can be implemented using any supported message encoding:
encoding | schema |
---|---|
ROS 1 | foxglove_msgs/CameraCalibration |
ROS 2 | foxglove_msgs/msg/CameraCalibration |
JSON | foxglove.CameraCalibration |
Protobuf | foxglove.CameraCalibration |
FlatBuffers | foxglove.CameraCalibration |
OMG IDL | foxglove::CameraCalibration |
You must use the schema names specified above for Foxglove to recognize the schema.