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
默认读者已经知晓的概念:
- 观测方程 1.1 针孔相机的投影模型
- 相机位姿
- 三维空间点
本文笔记中的概念:
- 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$ 表示所有待优化的位姿与所有三维点。
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求解有什么好处呢? 具体的推导公式
4. Related Works
还有各种进阶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.