computer-visionrobotics3d-reconstructionslamstructure-from-motion

What's the difference between factor graph optimization and bundle adjustment?


I see that in SLAM literatures, factor graph optimization is frequently used. While in Structure from Motion literatures, usually they use bundle adjustment. What's the difference between the two methods ?

Furthermore, can we implement one method with libraries for the other ? E.g. implementing Bundle adjustment with g2o, or implementing factor graph optimization with ceres solver ?

Thanks in advance!


Solution

  • Factor graph optimization is an optimization of any generic factor graph with nodes (states) and edges (constraints), for example you can have IMU preintegration constraints between two poses that you wish to minimize the error of based on the covariance matrix of the measurements.

    Bundle adjustment is a special case of factor graph optimization where the only states are camera poses and landmark position, and the only constraints are the reprojection constraints from the landmarks to the cameras.

    I'm not sure about g2o, but you can definitely use ceres to do either, as its just the case of defining the correct cost functions.