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)求解。
消元優勢在於矩陣爲對角陣, 逆矩陣很容易求解。