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§
- Pinhole
Params - Linear intrinsic parameters shared by every model except F-Theta.
Enums§
- Camera
Model Error - Camera model errors.
- Distortion
Model - 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§
- Camera
Model - Trait for camera projection models.
Functions§
- validate_
point_ in_ front - Returns
Ok(())ifz >= GEOMETRIC_PRECISION(1e-6) andErr(PointAtCameraCenter)otherwise. Used to reject points too close to the optical axis that would cause numerical instability in the perspective division.