BA是一种优化方法,最小化重投影误差优化PnP得到的R、t
应用场景:利用共视点的3D坐标与相机内参矩阵,根据PnP计算位姿R、t(有误差)。利用R、t及相机的投影模型可以计算出这些特征点在第二帧图像上的投影(有误差),本身这些点在第二帧图像上有真实投影,利用这两个投影构建函数进行优化可以优化位姿。
1 BA解决的代价函数
观测模型如下:
(1)世界坐标系转相机坐标系
设P点的世界坐标,转到相机坐标系:
(2)归一化
(3)去畸变
(4)相机坐标系转像素坐标系
(5)得到相机的观测模型:
(6)构建重投影误差模型:
z是实际值,h是通过观测模型得到的值,知识针对空间中一点。
2 LM算法求解
BA优化一般通过LM算法求解,参考最优化八:高斯牛顿法、LM法。
1中(6)方程中表示了一个点一个位姿构成的重投影误差,利用多个位姿多个点构建优化方程(m个位姿,n个点):
(2-1)
f(x)中的x是R、t、xyz。位姿用李代数表示,并将变量分为两部分,位姿与
点,变量如下:
(2-2)
则优化目标变为问题如下:
(2-3)
优化函数f(x)有m+n个变量待求取,一般用LM法求解,为什么不用最速下降法?我觉得是最速下降法迭代次数过多,效率低。LM法要用到梯度,梯度计算如下:
(2-4)
参考最优化八:高斯牛顿法、LM法,针对函数f(x)求解更新变量需要求解如下方程:
(2-5)
J是一阶导数。为了计算方便,将一阶梯度替换如下:
(2-6)
F代表的偏导数,E代表
的偏导数,则参考式(2-5),用g代替等式右边,本问题方程如下:
(2-7)
等式左边展开并用H表示得到:
(2-8)
目的是求解(2-7)中的,需要求取H的逆,但是H矩阵很大,一般几百个点就会有几百个参数,求解需要用到H矩阵的稀疏特性。
3 H矩阵的稀疏性
这据说是21世纪最重要的发现。
最优化问题中包含了m个位姿n个特征点,公式(2-4)可以写成如下方程:
即:
对其中一项令:
则:
H的稀疏性如下:
(1)是对角阵。
(2)有可能稀疏有可能稠密
利用H的稀疏性计算方程(2-7)需要用到苏耳消元法。
4 Schur消元
求解问题如下:
(4-1)
将变量分开写为:
(4-2)
消去矩阵H中右上角部分,等式左右同乘以矩阵:
(4-3)
整理得到:
(4-4)
方程第一项与为位置点p无关,取出:
(4-5)
求解代入(4-4)求解
。
消元优势在于矩阵为对角阵, 逆矩阵很容易求解。