視覺SLAM筆記--第6篇: 單目初始化和三角測量

單目初始化和三角測量

參考博客

參考博客:https://blog.csdn.net/llfjcmx/article/details/83410318

1. 三角測量

在得到了相機的運動之後,下一步我們需要用相機的運動來估計特徵點的空間位置,但是在單目SLAM中,僅通過單張圖像是無法獲得像素的深度信息的,需要用三角測量(三角化)的方法來估計地圖點的深度。

三角測量是指通過在兩處觀察同一個點的夾角,來確定該點的距離。

在這裏插入圖片描述
考慮圖像I1,I2I_{1},I_{2},相機的光心爲o1,o2o_{1},o_{2},以左圖爲參考,右圖的變換矩陣爲R,tR, t

假設在I1I_{1}中有特徵點p1p_{1},對應到I2I_{2}中的特徵點p2p_{2},理論上講o1p1o2p2o_{1}p_{1}和o_{2}p_{2}會相交於某一點P,該點即是兩個特徵點所對應的地圖點在三維場景中的位置,但是由於噪聲的影響,這兩條直線往往無法相交,因此可以通過最小二乘法來求解出距離最近的那個點作爲相交點。

按照對極幾何中的定義,如果設x1,x2x_1,x_{2}爲兩個特徵點的歸一化座標,於是有下列關係式:
s1x1=s2x2R+ts_{1}x_{1}=s_{2}x_{2}R+t已知:座標系oo1o到o_{1}的變換矩陣RtR、t歸一化座標x1,x2x_{1},x_{2},現在要求的就是兩個特徵點的深度s1,s2s_{1},s_{2}

左乘[x1]×[x_{1}]_{\times}可得s1[x1]×x1=0s_{1}[x_{1}]_{\times}x_{1}=0
s2[x1]×x2R+[x1]×t=0s_{2}[x_{1}]_{\times}x_{2}R+[x_{1}]_{\times}t =0可以解出s2s_{2}, 將其帶入原來的式子可解出s1s_{1}.
但是,由於噪聲的存在,我們求出來的R,t不一定能夠使得上式精確等於0,因此在實際情況中,更常見的做法是求最小二乘解而不是零解。

2. 單目初始化

由於 E(本質矩陣)本身具有尺度等價性,它分解得到的 RtR、t也有一個尺度等價性。而本身具有約束,所以我們認爲 tt 具有一個尺度。換言之,在分解過程中,對t乘以任意非零常數,分解都是成立的。因此,我們通常把t進行歸一化,讓它的長度等於1.

tt 長度的歸一化,直接導致了單目視覺的尺度不確定性。因爲對t乘以任意一個比例常數後,對極約束仍然是成立的。換言之,在單目SLAM中,對軌跡和地圖同時縮放任意倍數,我們得到的圖仍然是一樣的。

單目視覺的初始化問題

在單目視覺中,我們對兩張圖像的t進行歸一化,相當於固定了一個尺度。雖然我們不知道它的實際長度是多少,但是我們可以以這時的 tt 爲單目1,計算相機運動和特徵點的3D位置,這一步稱爲單目SLAM的初始化。

在初始化之後,就可以用3D-2D來計算相機的運動了,初始化之後的軌跡和地圖的單位,就是初始化時固定的尺度。因此,初始化也是單目SLAM中不可避免的一個步驟。

初始化的兩張圖片必須要有一定程度的平移,而後的軌跡和地圖都將會以這一步的平移爲單位。單目初始化不能只有純旋轉,必須要有一定程度的平移,如果沒有平移,單目將無法初始化

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