Bundle Adjustment (BA)
Bundle adjustment in SLAM is an optimization technique. It refines estimates of camera poses and 3D points in the map to minimize the re-projection error.
Bundle adjustment is a least squares solution for orienting images and estimating 3D point locations.
- SLAM: Creates a map of an unknown environment while also tracking the agent’s position within it.
- Bundle Adjustment: Optimizes the estimated camera poses and 3D points simultaneously.
Resources
- Bundle Adjustment - 5 Minutes with Cyrill
- The Basics about Bundle Adjustment (Cyrill Stachniss)
- slides here
- The Numerics of Bundle Adjustment (Cyrill Stachniss)
- slides here
Implementations
Bundle Adjustment Statistically optimal solution.
Is BA the bottleneck of the SLAM pipeline?
Bottleneck is still the data association according to Cyrill.
Bundle “block” adjustment: multiple images are corrected “en bloc”
Key idea of BA
- Start with an initial guess
- Project the estimated 3D points into the estimated camera images
- Compare locations of the projected 3D points with measured (2D) ones
- Adjust to minimize error in the images
Why is the correction done for the 2D point, and not the 3D point?
??
Unknowns:
- 3D locations of new points
- 1D scale factor
- 6D exterior orientation
- 5D projection parameters (interior orientation)
- Non-linear distortion parameter
In the end, you don’t really need the scale factor.
Are the control points noisy or noise-free?
Initial Guess
Having a good initial guess is key. How are we supposed to obtain the initial guess?
- Compute Relative Orientation from the first image pair
- Compute orientation for subsequent images through P3P/RRS
Critical issues
- Gross error handling is essential
- Requires enough new points in each image overlap
- No singular/critical configurations
Gross Errors / Outliers
Reasons for gross errors
- Wrong correspondences
- Wrong point measurements
Observations per point
- At least 4 views to identify the observation with a gross error
- Observed points from 5 to 6 different views typically yield good estimates
Eliminating Gross Errors
- Decompose the problem into several small blocks of 3-6 images first
- Check for gross errors in the small blocks using statistical tests
- Only consider features that can be tracked consistently in all 3-6 images
- Relative orientation (5-Point algo.) combined with RANSAC
- Eliminate gross errors, then run full BA