Skip to main content

Module bundle_adjust

Module bundle_adjust 

Source
Expand description

Bundle adjustment for multi-camera calibration.

Implements a Levenberg-Marquardt-style optimizer for globally consistent multi-camera calibration by minimizing reprojection error across all camera views simultaneously.

§Algorithm

Given N cameras and M 3D points observed across multiple views:

  1. Initialize camera parameters (rotation, translation, focal length) and 3D point positions from an initial estimate.
  2. Compute the Jacobian of the reprojection error with respect to all parameters.
  3. Solve the normal equations (J^T J + lambda * diag(J^T J)) * delta = -J^T r where r is the residual vector.
  4. Update parameters and adjust lambda based on error reduction.
  5. Repeat until convergence.

§References

  • Triggs, B. et al. “Bundle Adjustment — A Modern Synthesis” (2000).
  • Levenberg, K. “A Method for the Solution of Certain Non-Linear Problems in Least Squares” (1944).

Structs§

BundleAdjustConfig
Configuration for bundle adjustment.
BundleAdjustResult
Result of bundle adjustment.
BundleAdjuster
Bundle adjuster using Levenberg-Marquardt optimization.
CameraParams
Camera parameters: 6 extrinsics (3 rotation + 3 translation) + 1 focal length. Rotation is stored as a Rodrigues vector (axis * angle).
Observation
A 2D observation: which camera saw which 3D point, and at what pixel location.
Point3D
A 3D point.