SLAM前端 - 相機運動估計 & 特征點位置估計

參考:
高翔——《視覺SLAM十四講》第7講 視覺里程計1
高翔——《視覺SLAM十四講》系列講解視頻及PPT ch7_1 & ch7_2


  • 目錄:
    1 相機運動估計之 2D-2D: 對極幾何
    2 相機運動估計之 3D-2D: PnP
    3 相機運動估計之 3D-3D: ICP
    4 特征點位置估計之 三角測量

  • 綜述(可能有錯,需檢查)
    (1)(僅單目相機初始化時服用)2D-2D,已知匹配好的若干特征點在兩幀圖像上的位置,得到估計的初始R、t;
    (2)(單目初始化時2D-2D之后立即服用)三角測量,已知匹配好的若干特征點在兩幀圖像上的位置,以及估計的R、t,得到估計的特征點空間位置P;
    (3)(單目三角測量后服用;以后每來一幀圖像都服用)3D-2D,已知前一幀的特征點的空間位置P(之前的三角測量實際上給了單目相機深度信息,變成Depth不準(zhǔn)確的RGBD),以及后一幀對應(yīng)到前一幀特征點的特征點在該幀圖像的位置,得到估計的R、t;
    (4)(雙目或RGBD相機服用)3D-3D,已知匹配好的若干特征點在兩幀圖像對應(yīng)的空間中的位置,得到估計的R、t。


1 相機運動估計之 2D-2D: 對極幾何

  1. 對極約束
  • 對極幾何中的幾何關(guān)系認(rèn)知:

    (1)O1、O2是光心,p1、p2是投影,e1、e2是極點,l1、l2是極線,PO1O2是極平面
    (2)約束關(guān)系:若p1已知、p2未知,可判斷p2在極線l2上;反之亦然。

  • 實踐中對問題的分析:
    (1)條件:p1、p2已知,P未知
    (2)待求:T12
  • 數(shù)學(xué)描述:

    基于“圖1的p1經(jīng)R、t到達圖2的p2”的想法,經(jīng)過一系列轉(zhuǎn)換:
    得到簡單的對極約束形式:

    定義E和F并進一步化簡對極約束的表示:
    其中E為Essential本質(zhì)矩陣,F(xiàn)為Fundamental基礎(chǔ)矩陣。
    E和F差的是內(nèi)參的關(guān)系。p和x差的也是內(nèi)參的關(guān)系。
    對極約束本質(zhì)上刻畫的是O1O2P共面的關(guān)系。
  • 進一步分析:
    E共有5個自由度(R有3個,t有3個;但是由于對極約束中,等式兩遍同乘以一個非零常數(shù)后,照樣成立,即E乘以一個非零常數(shù)后等式依然成立,故自由度減1),這就意味著至少可由5對點求得E,但是這樣的五點法很麻煩(因為要用到什么非線性什么鬼的,反正就是麻煩);而若當(dāng)作普通矩陣,則有8個自由度(3*3矩陣9個自由度,原因同上再減1個)。
  • 解決問題流程:
    (1)由匹配點計算E矩陣;
    (2)由E恢復(fù)R、t。
  1. 求解E本質(zhì)矩陣(然后使用E或F恢復(fù)R、t):八點法+SVD
  • 八點法的整體意思:

    E是(3 * 3)的,對極約束就是(1 * 3) * (3 * 3) * (3 * 1) = (1 * 1)的,可以把E轉(zhuǎn)成向量形式的e進行計算,那么左邊是1對點的形式,右邊是8對點的形式,相當(dāng)于是解Ax=0的矩陣,這樣解得E。
  • SVD解R、t:

    反正解出來之后,可能性有4種,但只有一個是合理的,這樣就解完了。
  • 八點法的討論和分析:
    (1)只用于單目的初始化,后面就用PnP和ICP了。
    (2)尺度不確定性:E=t^ R,E乘以任意倍數(shù)仍可行,也就是t^ R乘以任意倍數(shù)仍可行,R是正交矩陣,本身有約束(?),而t這個平移向量乘以任意倍數(shù),解仍可行。所以直觀上,PO1O2這個三角(軌跡和地圖),縮放任意倍,得到的觀測值都是一樣的,這就是單目的尺度不確定性。所以實踐上,一般將t的模或特征點的平均深度設(shè)為1,不過求得的t跟真實的t差的倍數(shù)還是無從得知的。
    (3)對于純旋轉(zhuǎn)問題(t=0),由于E定義為t^ R,故此時E為0矩陣,那就沒法分解E求得R、t了,所以實際上沒有平移是沒法單目初始化的,單目初始化時一定要帶有平移。
    (4)多于8對點時,就成了算最小二乘解,或者是用RANSAC算法(好像上課學(xué)過,記得思路很神奇)。
  1. 求解H單應(yīng)矩陣(然后使用H恢復(fù)R、t)
  • 什么時候用到單應(yīng)矩陣:
    若場景中的特征點都落在同一平面上(比如墻、地面等),則可以通過單應(yīng)矩陣來進行運動估計。這種情況在無人機攜帶的俯視相機、掃地機攜帶的頂式相機中比較常見。
  • 好像跟用E時是差不多的,先不看了。

2 相機運動估計之 3D-2D: PnP

  • 綜述:
    (1)3D-2D的情況是已知n個3D空間點以及其投影位置的情況;
    (2)PnP,Perspective-n-Point;
    (3)具體方法分兩類:代數(shù)方法(直接線性變換 DLT、用三對點估計位姿的P3P);非線性優(yōu)化方法(光束法平差 Bundle Adjustment),一般用優(yōu)化的方法,因為代數(shù)方法對噪聲不太魯棒
2.1 直接線性變換 DLT
  • 分析:


    展開后最后一行左邊只有s,那就可以用這一行消去前兩行中的s。則一個特征點提供兩個方程:
    為了求解12個未知數(shù),需要6對點。
  • 討論:
    (1)由于求解時將12個元素看成是獨立的,而R要有正交矩陣的約束,所以就要用QR分解什么鬼的;
    (2)其他的先空著
2.2 P3P

* 本質(zhì)上就是利用3對三角形的相似關(guān)系:

而根據(jù)余弦定理:
然后各種代入,得到一個關(guān)于x和y的二元二次方程組:
其中:

而解這個二元二次方程組需要用到吳消元法,求解析解。但解出的是4個解,再用一對驗證點D、d計算最可能解。最終得到ABC三點在相機坐標(biāo)系下的3D坐標(biāo)。

2.3 Bundle Adjustment

參考:Bundle Adjustment---即最小化重投影誤差(高翔slam---第七講)

  • 這個詞很抽象的樣子,先整體感受一下:
    (1)一般翻譯成“光束法平差”,很久沒有讀通,現(xiàn)在覺得“平”是個動詞,“平差”指擺平誤差。依據(jù)什么去“平差”?是用“光束”的方法,而“光束法”本身并不是理解成一個現(xiàn)成的方法,“光束”只是指相機拍照時三維空間點投影到二維圖像的連線集合。合起來,就是“利用三維到二維投影的光束,消除誤差”。
    (2)光束法平差的本質(zhì)是優(yōu)化,目標(biāo)函數(shù)是(min重投影誤差)。
    (3)“第一次投影”指相機拍照時三維空間點投影到圖像;“第二次投影 / 重投影”指計算得到的三維坐標(biāo)點(非真實)投影到計算得到的相機位姿(非真實)。

3 相機運動估計之 3D-3D: ICP

  • 綜述:

    (1)首先,3D-3D的情況是雙目相機或RGBD相機的情況;
    (2)要搞清楚,所謂“ICP(Iterative Closest Point 迭代最近點)”并不是指解決這類問題的方法。對于激光SLAM來說,由于激光中數(shù)據(jù)特征不夠豐富,我們無從得知兩個點集之間的匹配關(guān)系,只能認(rèn)為距離最近的兩個點為同一個,這是“迭代最近點”;而在視覺SLAM中,特征點提供了較好的匹配關(guān)系(其實就省了“ICP”),而ICP在這里指代匹配好的兩組點間的運動估計問題(其實還是感覺很奇怪,ICP就理解成“兩組點的特征匹配已經(jīng)做好的這種狀態(tài)下,去做運動估計”吧);
    (3)具體方法分兩種:線性代數(shù)求解(SVD);非線性優(yōu)化求解(類似Bundle Adjustment)。
    (4)注意,在3D-3D問題中,并沒有出現(xiàn)相機模型,只與匹配好的兩組點有關(guān)。

3.1 SVD
  • 分析:

    (1)構(gòu)建最小二乘問題,找使其最小的R、t:
    變換后,目標(biāo)函數(shù)變成:

    左邊只與R有關(guān),而且與每個點的去質(zhì)心坐標(biāo)有關(guān);右邊與R、t有關(guān),而且只與兩個質(zhì)心有關(guān)。

    (2)而左邊部分變成了優(yōu)化這個:
    在這個東西里用SVD求解R。
    (3)用右邊部分就能直接求出t了:
  • 真正的SVD部分:
    就不想看了。

4 特征點位置估計之 三角測量

  • 綜述:
    有了相機的運動估計,下一步需要通過三角測量來估計特征點的空間位置。
  • 分析1:

    理論上O1p1與O2p2會交于一點P,然而由于噪聲影響,往往無法相交,因此可以通過最小二乘法求解。按照對極幾何:
    其中x1、x2為特征點在兩個像平面成像的歸一化坐標(biāo),s1、s2為特征點的深度。
    這兩個深度是可以分開求的,例如算s2,則對上式兩側(cè)左乘x1^:

    其中左側(cè)為0,右側(cè)可以看做關(guān)于s2的方程。如此可分別求得s1和s2,即可求得P的空間坐標(biāo)。

  • 分析2:

    但是上面單獨求解s1、s2的過程中,由于噪聲的存在,導(dǎo)致估得的R、t不能使得s1x1=s2Rx2+t這個式子精確成立。所以更常見的方法是求最小二乘解而不是零解:
  • 討論:
    先空著。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最近翻閱關(guān)于從2D視頻或者圖片中重構(gòu)3D姿態(tài)的文章及其源碼,發(fā)現(xiàn)都有關(guān)于攝像機參數(shù)的求解,查找了相關(guān)資料,做...
    予汐閱讀 6,541評論 0 3
  • /**轉(zhuǎn)載自https://blog.csdn.net/xiaoxiaowenqiang/article/deta...
    Maxsium閱讀 763評論 0 0
  • 你跳過槽嗎? 跳過 為什么? 把工作搞砸了,被罰款4000塊錢,我一個月工資才1500,所以我辭職了 工資太低,3...
    我是帥老師閱讀 310評論 0 0
  • 今天沒有任何矯情造作的標(biāo)題,因為練琴已經(jīng)累垮了,腦子也動不了…… 今天畫了表情包,就……剛剛寫完調(diào)研報告的我比較閑...
    小猴子0209閱讀 206評論 0 0
  • 近來可能會更新之前寫過的一個長篇,寫了四個小節(jié),大概思路都已成形,感覺應(yīng)該會有點太過煽情,有點狗血,劇情還在考慮當(dāng)...
    我逐光而居閱讀 587評論 3 2

友情鏈接更多精彩內(nèi)容