本文最后更新于:2024年10月10日 下午

bundle adjustment, 中文名称是光束法平差,经典的BA目的是优化相机的pose和landmark,其在SfM和SLAM 领域中扮演者重要角色。本文记录相关内容。

简介

bundle adjustment,中文名称是光束法平差,经典的BA目的是优化相机的pose和landmark,其在SfM和SLAM 领域中扮演者重要角色.目前大多数书籍或者参老文献将其翻译成"捆绑调整"是不太严谨的做法.bundle adjustment 最早是19世纪由搞大地测量学(测绘学科)的人提出来的,19世纪中期的时候,geodetics的学者就开始研究large scale triangulations(大型三角剖分)。20世纪中期,随着camera和computer的出现,photogrammetry(摄影测量学)也开始研究adjustment computation,所以他们给起了个名字叫bundle adjustment(隶属摄影测量学科前辈的功劳)。21世纪前后,robotics领域开始兴起SLAM,最早用的recursive bayesian filter(递归贝叶斯滤波),后来把问题搞成个graph然后用least squares方法求解。

这些东西归根结底就是Gauss大神“发明”的least squares method(最小二乘法)。当年天文学家Piazzi整天闲得没事看星星,在1801年1月1号早上发现了一个从来没观测到的星星,再接下来的42天里做了19次观测之后这个星星就消失了。当时的天文学家为了确定这玩意到底是什么绞尽了脑汁,这时候Gauss出现了,(最初)只用了3个观察数据,就用least squares算出了这个小行星的轨道,接下来天文学家根据Gauss的预测,也重新发现了这个小行星(虽然有小小的偏差),并将其命名为Ceres,也就是谷神星。Google的ceres-solver就是根据这个来命名的。[ref: How Gauss Determined the Orbit of Ceres]

Bundle Adjustment

所谓bundle,来源于bundle of light,其本意就是指的光束,这些光束指的是三维空间中的点投影到像平面上的光束,而重投影误差正是利用这些光束来构建的,因此称为光束法,强调光束也正是描述其优化模型是如何建立的。剩下的就是平差,那什么是平差呢?

测量平差:由于测量仪器的精度不完善和人为因素及外界条件的影响,测量误差总是不可避免的。为了提高成果的质量,处理好这些测量中存在的误差问题,观测值的个数往往要多于确定未知量所必须观测的个数,也就是要进行多余观测。有了多余观测,势必在观测结果之间产生矛盾,测量平差的目的就在于消除这些矛盾而求得观测量的最可靠结果并评定测量成果的精度。测量平差采用的原理就是“最小二乘法”。

算法理论

观测值:像点坐标 优化量(平差量):pose 和landmark 因为一旦涉及平差,就必定有如下公式:观测值+观测值改正数=近似值+近似值改正数,那么bundle adjustment 的公式还是从共线条件方程出发:

优化函数(误差方程)如下,其中 $u_{ij}$ 是像点坐标,$C_j$ 是相机投影矩阵,$X_i$ 是三维点坐标:

$$ \min\sum_{i=1}^n\sum_{j=1}^m\left(u_{ij}-\pi(C_j,X_i)\right)^2 $$

更详细一点,将问题抽象为图模型,这个图模型的节点由相机 $P_0$ 和三维空间点构成 $X_j$ 构成,如果点 $X_j$ 投影到相机 $P_i$ 的图像上则将这两个节点连接起来。

令点$X_j$在相机$P_i$拍摄到的图像归一化坐标系上的坐标为$k(u_{ij}^T,1)^{^{\prime\prime}}=K_i^{-1}x_{ij}$,其重投影后的图像归一化坐标系下坐标 为$k^{\prime}(v_{ij}^T,1)^T=K_i^{-1}P_iX_j$,其中$K_i^{-1}$是为了在计算时能不受相机内参影响$k$和$k^{\prime}$是将齐次坐标转换为非齐次坐标的常数项,可以 得到该重投影误差为 $$ e_{ij}=\|u_{ij}-v_{ij}\| $$ BA 是要将所有重投影误差的和最小化,那么这里自然就要开始求和了。 $$ \min_{R_i,t_i,X_j}\sum_{i,j}\sigma_{ij}\|u_{ij}-v_{ij}\| $$ 其中当点$X_j$在相机$P_i$中有投影时$\sigma_{ij}=1$,否则为$\sigma_{ij}=0$。

非线性优化

可以使用各种优化算法来进行计算,BA现在基本都是利用LM(Levenberg-Marquardt)算法并在此基础上利用BA模型的稀疏性质来进行计算的,

LM算法是最速下降法(梯度下降法)和Gauss-Newton的结合体

参考资料



文章链接:
https://www.zywvvd.com/notes/3d/bundle-adjustment/bundle-adjustment/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

光束平差法(Bundle Adjustment)
https://www.zywvvd.com/notes/3d/bundle-adjustment/bundle-adjustment/
作者
Yiwei Zhang
发布于
2024年9月29日
许可协议