September 04, 2022
Unknown
Position of 3D points and each camera’s relative pose ( DoF)Given
Constraints
Solution ⇒ Non-linear least-square optimization
Cost Function
Reprojection error
Optimization
OpenCV
Bundle adjustment
(Graph) Optimization
SfM (Global)
Build a viewing graph (well-matched pairs) while finding inliers
⇒ Load images and extract features
⇒ Match features and find good matches (which has enough inliers)
Optimize camera pose and 3D points together (BA)
SfM (Incremental)
Select the next image to add
⇒ Separate points into known and unknown for PnP (known) and triangulation (unknown)
Feature-based Method vs Direct Method
Visual Odometry vs Wheel Odometry
| Visual Odometry | Wheel Odometry |
|---|---|
| + direct motion measure | + simple calculation |
| + six degree-of-freedoms | |
| + easy to install | |
| − heavy computation | − indirect motion measure (e.g. slippage) |
| − visual disturbance (e.g. moving objects) | − two degree-of-freedoms |
| − necessary to be on rotor/shaft |
Visual Odometry vs Visual SLAM
Visual Odometry
no assumption on trajectories
⇒ navigation / large space (outdoor)
Visual SLAM
closed-loop is preferred for convergence
⇒ mapping / small space (indoor, campus)
Feature-based Monocular Visual Odometry
Two-view Motion Estimation
Find 2D-2D feature correspondence
Feature
→ Good-Feature-to-Track [Shi94_CVPR] with bucketing to distribute features
Correspondence
→ Lucas-Kanade optical flow [Lucas81_IJCAI]
Reject outlier correspondence
Error measure
→ Sampson distance
Estimate (scaled) relative pose
PnP Pose Estimation
Find 2D-2D feature correspondence
Feature
→ Good-Feature-to-Track [Shi94_CVPR] with bucketing to distribute features
Correspondence
→ Lucas-Kanade optical flow [Lucas81_IJCAI]
Find 2D-3D point correspondence & Reject outlier correspondence
Error measure
→ Projection error
Estimate pose
Updat 3D points map