Camera Models
Below are all supported camera intrinsics models in MetriCal. If there is a model that you use that is not listed here, just contact us! We're always looking to expand our support.
Common Variables and Definitions
Variables | Description |
---|---|
, | Pixel coordinates in the image plane, with origin at the principal point |
, , | Feature coordinates in the world, in 3D Euclidean Space |
, , | Corrected camera ray, in homogeneous coordinates centered on the camera origin |
, , | Distorted camera ray, in homogeneous coordinates centered on the camera origin |
Modeling (3D → 2D) refers to projecting a 3D point in the world to a 2D point in the image, given the intrinsics provided. In other words, it models the effect of distortion on a 3D point. This is also known as "forward projection".
Correcting (2D → 3D) refers to the process of finding the camera ray that is created when intrinsics are applied to a 2D point in the image. When "undistorting" a pixel, this can be thought of as finding the corrected ray's point of intersection with the image plane. In other words, it corrects for the effect of distortion. This is also known as "inverse projection".
Unified refers to a model that can be used to both model and correct for distortion.
No Distortion
MetriCal keyword: no_distortion
This model is a classic pinhole projection with no distortion or affine effects. This model is most applicable when you're already correcting your images with a rectification process, or when you're using a camera with a very low distortion profile.
Parameter | Description |
---|---|
focal length (px) | |
principal point in x (px) | |
principal point in y (px) |
De facto, nearly any camera that is already corrected for distortion uses this model. All models on this page are either pinhole models by design, or degrade to a pinhole model when no distortion is present.
OpenCV RadTan
OpenCV.org. Camera Calibration and 3D Reconstruction documentation. OpenCV 4.10-dev. https://docs.opencv.org/4.x/d9/d0c/group__calib3d.html#ga7dfb72c9cf9780a347fbe3d1c47e5d5a
MetriCal keyword: opencv_radtan
Type: Modeling
This is based on OpenCV's default distortion model, which is a modified Brown-Conrady model. If you've ever used OpenCV, you've most certainly used this.
Parameter | Description |
---|---|
focal length (px) | |
principal point in x (px) | |
principal point in y (px) | |
first radial distortion term | |
second radial distortion term | |
third radial distortion term | |
first tangential distortion term | |
second tangential distortion term |
Common Use Cases
OpenCV's adoption of this model has made it the de facto starting point for most calibration tasks. However, this does not mean it's multi-purpose. OpenCV RadTan is best suited for cameras with a field of view of 90° or less.
A good number of sensor packages use this model, including:
Model | Cameras With Model |
---|---|
Intel RealSense D435 | All cameras |
Intel RealSense D435i | All cameras |
Intel RealSense D455 | All cameras |
Modeling
Correcting
Correcting for OpenCV RadTan is a non-linear process. The most common method is to run a non-linear optimization to find the corrected point. This is the method used in MetriCal.