《视觉SLAM十四讲》学习笔记-Bundle Adjustment (BA) 问题

  • BA本质是把PnP问题当成李代数上的非线性最小二乘问题。
  • 线性问题的方式:先求相机位姿,再求空间点位置

问题:给定n个三维空间点P和投影p,希望计算相机的位姿Rt,对应的李代数为ξ. 假设:Pi=[Xi,Yi,Zi]T,则像素位置与空间位置的关系为:

s[uivi1]=Kexp(ξ)[XiYiZi1]

写在矩阵形式为:
siui=Kexp(ξ)Pi

上式中隐含有一个齐次坐标到非齐次坐标的转换。把误差求和,构建最小二乘问题,寻找最好的相机位姿:
ξ=argminξ12i=1n|ui1siKexp(ξ)Pi|22

上式为重投影误差.
应用G-N或L-M等方法之前,要知道误差项关于变量的导数,即:
e(x+x)e(x)+Jx

这里:
* e的意义为像素坐标误差,为2维
* x为相机位姿,6维变量
* J2×6的矩阵,需要进一步推导。

设变换到相机坐标系下的空间点坐标为P

P=(exp(ξ)P)1:3=[X,Y,Z]

则相机投影模型为:
su=KP

即:
[susvs]=[fx0cx0fycy001][XYZ]

所以:
u=fxXZ+cx,   v=fyYZ+cy

考虑对ξ的左乘扰动量δξ关于e的变化,根据链式法则有:

eδξ=limδξ0e(δξξ)δξ=ePPδξ

其中符号为李代数上的左乘扰动。所以有:

eP=[uXuYuZvXvYvZ]=[fxZ0fxXZ20fyZfyYZ2]

(???)的第二项为变换后的点关于李代数的导数:
TPδξ=(TP)=[IP00]

又由于:
Pδξ=[I,P]

将这两项相乘后雅可比矩阵为:
eδξ=[fxZ0fxXZ2fxXYZ2fx+fxX2Z2fxYZ0fyZfyYZ2fyfyY2Z2fyXYZ2fyXZ]

该矩阵描述了重投影误差关于相机位姿李代数的一阶变化关系.

另一方面,除了要优化位姿,也得优化特征点的空间位置,即需要讨论e关于空间点P的导数。
利用链式法则,有:

eP=ePPP

第一项与前面的式子相同。第二项按照定义有:

P=exp(ξ)P=RP+t

P求导后只剩下R,所以:
eP=[fxZ0fxXZ20fyZfyYZ2]R

上式即为相机方程关于相机特征点的导数矩阵方程

相关文章: