VSLAM基礎(五)————三角化、PnP、ICP

在之前的章節中我們獲得了同名像點從而恢復相片的姿態,接下來就該輪到vslam前端中最後一部分————計算三維點座標(三角化),並通過三維座標預測姿態(PnP)。

一、三角化

在單目slam中僅通過單張圖像無法獲得像素的深度信息,所以我們需要通過三角測量(Triangulation)的方法來估計地圖的深度。一般情況是當我們得到兩個視圖的一組匹配點,我們希望能恢復出世界點在三維世界的座標。

這裏介紹一個線性三角形法:

 

在已知了兩張圖像的姿態後我們能建立以下等式

x=PX;

x′=P′X;

然後使用DLT算法整理可得AX = 0(一對點可得到4行方程)

這裏相當於解一個線性最小二乘問題。方程的解爲A的最小奇異值對應的單位奇異矢量。

而三角化存在一個矛盾

圖像平移越大,三角化的精度越高;平移越小,匹配效果越好;

二、PnP

PnP是求解3D到2D點對運動的方法。直接點說它是在已知3D空間點座標與對應2D圖像投影座標的情況下,恢復圖像姿態。在vslam中,在初始化獲得了一系列3D點後,我們就可以使用PnP來估計後續姿態。相比於對極幾何估計姿態,PnP方法需要更少的點對(3個以上),不需要對極約束,並且PnP方法可以避免尺度的問題。

這裏介紹一個線性PnP算法:

一個點對(3D點X及其投影2D點x座標)可以建立x=PX(在這裏P是未知);

P爲11個自由度矩陣,故有6對點對使用DLT建立方程就可解得P;

當然PnP算法是一個大類,上面所講只是一個概念的展示,想要深入的瞭解可以查找P3P,EPnP、UPnP。。。

三、ICP

ICP是求解3D到3D點的位姿估計問題。實際上是我們知道在兩個相機座標系下同一地圖點的兩個座標,則可以建立一個歐式變換:

p_{i} = Rp_{i}^{i} + t

同PnP解法一樣也存在線性解法(DLT、SVD)與非線性優化解法,這裏就不再贅述了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章