BA
Bundle Adjustment问题在后端用来优化相机位姿ξ{\xi}ξ(李代数形式)和观测到的路标点p(3D点),实质上是一个最小二乘问题,下面进行推导
BA求解过程
在视觉里程计中可以利用pnp、icp、对极几何等方法求得相机的位姿ξ{\xi}ξ,也就是旋转矩阵R和平移向量t。
路标点与像素点的关系是:
z=(uv)=1sK(Rp+t)1:2{z=\dbinom{u}{v}=\frac{1}{s}K(Rp+t)_{1:2}}z=(vu)=s1K(Rp+t)1:2
简写成
z=h(x,y)z=h(x,y)z=h(x,y)
xxx表示某一时刻相机位姿,对应的李代数为ξ\xiξ,yyy为观测的路标点,即三维点p,由于存在噪声等的影响,求得的像素点与观测到的实际的像素点存在误差:
e=z−h(ξ,p)e=z-h(\xi,p)e=z−h(ξ,p)
假设一共求得了m个时刻的相机位姿以及观测到n个路标点,把所有时刻观测到的路标点的误差都考虑进来,令zi,jz_{i,j}zi,j表示在位姿ξi\xi_{i}ξi下观测路标pjp_{j}pj得到的像素点坐标,则构建整体的代价函数为:
12∑i=1m∑j=1n∣∣eij∣∣2=12∑i=1m∑j=1n∣∣zij−h(ξi,pj)∣∣2\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{n}||e_{ij}||^{2}=\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{n}||z_{ij}-h(\xi_{i},p_{j})||^{2}21i=1∑mj=1∑n∣∣eij∣∣2=21i=1∑mj=1∑n∣∣zij−h(ξi,pj)∣∣2
根据在视觉里程计中求得的相机位姿和路标点作为初值,不断寻找下降方向求得最优的相机位姿和路标点使得整体代价函数最小,这就是BA优化问题
把所有的待优化参数放在一个向量里:
x=[ξ1,..,ξm,p1,..,pn]Tx=[\xi_{1},..,\xi_{m},p_{1},..,p_{n}]^{T}x=[ξ1,..,ξm,p1,..,pn]T
则有
12∣∣f(x)∣∣2=12∑i=1m∑j=1n∣∣eij∣∣2\frac{1}{2}||f(x)||^{2}=\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{n}||e_{ij}||^{2}21∣∣f(x)∣∣2=21i=1∑mj=1∑n∣∣eij∣∣2
给自变量一个增量Δx=(Δξ1,..,Δξm,Δp1,..,Δpn)T=(Δxc,Δxp)T\Delta x=(\Delta \xi_{1},..,\Delta \xi_{m},\Delta p_{1},..,\Delta p_{n})^{T}=(\Delta x_{c},\Delta x_{p})^{T}Δx=(Δξ1