Skip to main content

Crate apex_camera_models

Crate apex_camera_models 

Source
Expand description

Camera projection models for bundle adjustment, SLAM, and Structure-from-Motion.

Every model implements the CameraModel trait, which exposes projection, unprojection, and analytic point / pose / intrinsic Jacobians. The cookbook has the full mathematical formulations.

Re-exports§

pub use bal_pinhole::BALPinholeCameraStrict;
pub use double_sphere::DoubleSphereCamera;
pub use eucm::EucmCamera;
pub use fov::FovCamera;
pub use ftheta::FThetaCamera;
pub use kannala_brandt::KannalaBrandtCamera;
pub use pinhole::PinholeCamera;
pub use rad_tan::RadTanCamera;
pub use ucm::UcmCamera;

Modules§

bal_pinhole
BAL (Bundle Adjustment in the Large) pinhole camera model.
double_sphere
Double Sphere camera model.
eucm
Extended Unified Camera Model (EUCM).
fov
Field-of-View (FOV) camera model.
ftheta
NVIDIA f-theta fisheye camera model.
kannala_brandt
Kannala-Brandt fisheye camera model.
pinhole
Pinhole camera model.
rad_tan
Radial-Tangential (Brown-Conrady) camera model.
ucm
Unified Camera Model (UCM).

Structs§

PinholeParams
Linear intrinsic parameters shared by every model except F-Theta.

Enums§

CameraModelError
Camera model errors.
DistortionModel
Lens distortion models. The exact parameter ranges are enforced by DistortionModel::validate.

Constants§

CONVERGENCE_THRESHOLD
Convergence threshold for iterative unprojection (e.g. Kannala-Brandt).
GEOMETRIC_PRECISION
Threshold for geometric validity checks (e.g. point in front of camera).
JACOBIAN_TEST_TOLERANCE
Allowed difference between analytic and numerical Jacobians in tests.
MIN_DEPTH
Minimum depth (meters) for a 3D point to be projectable.
NUMERICAL_DERIVATIVE_EPS
Step size for numerical differentiation of Jacobians.
PROJECTION_TEST_TOLERANCE
Allowed projection error in projection tests.

Traits§

CameraModel
Trait for camera projection models.

Functions§

validate_point_in_front
Returns Ok(()) if z >= GEOMETRIC_PRECISION (1e-6) and Err(PointAtCameraCenter) otherwise. Used to reject points too close to the optical axis that would cause numerical instability in the perspective division.