Bundle Adjustment

光束平差原理与求解

Posted by CongYu on January 1, 2022

Bundle Adjustment 光束平差,是同时优化相机的位姿与观测点的一类优化问题,是SLAM算法的核心部分。本文简单总结BA的原理与推导,以及求解过程。


Created 2022.01.01 by Cong Yu; Last modified: 2022.01.01-v1.0.2

Contact: windmillyucong@163.com

Copyleft! 2022 Cong Yu. Some rights reserved.


Bundle Adjustment

References

0. Concepts

默认读者已经知晓的概念:

本文笔记中的概念:

  • Bundle Adjustment 光束平差
  • Non-linear Optimization 非线性优化

1. BA

数据:多个相机$C_1,…,C_i,…,C_m$,多个三维空间点$p_1,…p_j,…,p_n$。

观测时相机的位姿存在误差,点的位姿存在误差,观测过程也存在误差。这些误差导致位姿是无法精确求解的。所以,BA问题构建为最优化问题。

相机观测这些点,得到真实观测像素值$z_{ij}$;同时,可由理想观测方程:$h(\xi_i, p_j)$,输入相机位姿$\xi_i$,输入三维点位姿$p_j$,得到理想观测像素值。

两者之间的误差$e$即我们要最小化的目标: \(e_{ij} =z_{ij} - h(\xi_i,p_j) \tag1\)

上式只考虑了一个相机对一个三维点的误差,考虑整个BA问题,共m个相机和n个三维点,最多产生$mn$ 个观测,我们要同时调整所有的相机的位姿和所有三维点的位置,最小化整体的误差,所以VSLAM系统中的问题表达为: \(\underset{(\mathbf{\xi, p}) } {\text{argmin}} \sum_{i=1}^{m} \sum_{j=1}^{n} \frac 1 2 ||z_{ij} - h(\xi_i,p_j)||^2 \tag2\) ^bd48db

其中 $(\mathbf{\xi, p}) \equiv \begin{bmatrix} \xi_1,…,\xi_i,…,\xi_m,p_1,…,p_j,…p_n \end{bmatrix}^T$ 表示所有待优化的位姿与所有三维点。

img

Fig1. ba

BA优化问题的求解过程:由于式(2) 的形式过于复杂,数值求解公式比较难以得出,可以使用优化方法求解。从某个初始值开始,对待优化参数$(\mathbf{\xi, p}) \equiv \begin{bmatrix} \xi_1,…,\xi_i,…,\xi_m,p_1,…,p_j,…p_n \end{bmatrix}^T$ 寻找梯度下降的方向,更新增量 $(\Delta\mathbf{\xi}, \Delta\mathbf{p})$,迭代优化即可。

梯度如何求取?

  • https://zhuanlan.zhihu.com/p/345004627

todo(congyu) 公式整理以及code

2. Nonlinear Least Squares

详见非线性优化 2022-01-02-optimization

本文摘出一则主要公式,继续推导BA优化的求解问题

  • https://blog.csdn.net/try_again_later/article/details/88680687?spm=1001.2014.3001.5501

todo(congyu) 公式整理以及code

3. Sparse Bundle Adjustment

如上文所言,我们最多产生$mn$个误差项,但事实上在SLAM问题中,并不是所有相机对所有三维点都可以产生观测,公式2中有很多项都是0。

// todo(congyu):稀疏性对BA求解有什么好处呢? 具体的推导公式

还有各种进阶BA算法:

  • Parallel BA
    • Ni et al. 2007, Wu et al. 2011 (PBA)
  • Hierarchical BA
    • Steedly et al. 2003, Snavely et al. 2008, Frahm et al. 2010
  • Segment-based BA
    • Zhu et al. 2014, Zhang et al. 2016 (ENFT)
  • Incremental BA
    • Kaess et al. 2008 (iSAM), Kaess et al. 2011 (iSAM2), Indelman et al. 2012 (iLBA), Ila et al. 2017 (SLAM++), Liu et al. 2017 (EIBA), Liu et al. 2018 (ICE-BA)

todo(congyu)

4.1 Parallel BA

todo(congyu)

4.2 Hierarchical BA

todo(congyu)

4.3 Segment-based BA

todo(congyu)

4.4 Incremental BA

todo(congyu)


Contact

Feel free to contact me windmillyucong@163.com anytime for anything.

License

Creative Commons BY-SA 4.0

CC0