V-SLAM綜述:基礎(chǔ)(問答和名詞解釋)

面經(jīng)問題集:

https://blog.csdn.net/weixin_43795395/article/details/89762278

基礎(chǔ)矩陣F、本質(zhì)矩陣E、單應(yīng)矩陣H的理解和推導(dǎo):(至關(guān)重要)

https://www.zhihu.com/question/27581884/answer/105606049

單目相機(jī),F(xiàn)和H矩陣有何不同,E和F矩陣有何不同

E:本質(zhì)矩陣? ?F:基本矩陣? ? H:單應(yīng)矩陣

E=t*R? ?E具有五個(gè)自由度? ?用8點(diǎn)法來求解

F和E之間相差一個(gè)相機(jī)內(nèi)參 即:F=K(E)K-1


單應(yīng)矩陣H描述兩個(gè)平面的映射關(guān)系?

其中nt和d為平面的參數(shù)

若特征點(diǎn)在同一平面上,或者相機(jī)純旋轉(zhuǎn),基礎(chǔ)矩陣F的自由度下降(也即退化),如果繼續(xù)用八點(diǎn)法求解F,多出來的自由度主要由噪聲決定? ?


BA

BA的本質(zhì)是一個(gè)優(yōu)化模型,其目的是最小化重投影/光度誤差,用于優(yōu)化相機(jī)位姿和世界點(diǎn)。局部BA用于優(yōu)化局部的相機(jī)位姿,提高跟蹤的精確度;全局BA用于全局過程中的相機(jī)位姿,使相機(jī)經(jīng)過長時(shí)間、長距離的移動(dòng)之后,相機(jī)位姿還比較準(zhǔn)確。BA是一個(gè)圖優(yōu)化模型,一般選擇LM(Levenberg-Marquardt)算法并在此基礎(chǔ)上利用BA模型的稀疏性進(jìn)行計(jì)算;可以直接計(jì)算,也可以使用g2o或者Ceres等優(yōu)化庫進(jìn)行計(jì)算。

也就是根據(jù)相機(jī)的投影模型構(gòu)造構(gòu)造代價(jià)函數(shù),利用非線性優(yōu)化(比如高斯牛頓或列文伯格馬夸而爾特)來求最優(yōu)解,利用雅克比矩陣的稀疏性解增量方程,得到相機(jī)位姿和特征點(diǎn)3D位置的最優(yōu)解。


PnP

一種由3D-2D的位姿求解方式,即需要已知匹配的3D點(diǎn)和圖像2D點(diǎn)。目前遇到的場(chǎng)景主要有兩個(gè),其一是求解相機(jī)相對(duì)于某2維圖像/3維物體的位姿;其二就是SLAM算法中估計(jì)相機(jī)位姿時(shí)通常需要PnP給出相機(jī)初始位姿。

在場(chǎng)景1中,我們通常輸入的是物體在世界坐標(biāo)系下的3D點(diǎn)以及這些3D點(diǎn)在圖像上投影的2D點(diǎn),因此求得的是相機(jī)坐標(biāo)系相對(duì)于世界坐標(biāo)系(Twc)的位姿

在場(chǎng)景2中,通常輸入的是上一幀中的3D點(diǎn)(在上一幀的相機(jī)坐標(biāo)系下表示的點(diǎn))和這些3D點(diǎn)在當(dāng)前幀中的投影得到的2D點(diǎn),所以它求得的是當(dāng)前幀相對(duì)于上一幀的位姿變換,如圖所示:

兩種情況本質(zhì)上是相同的,都是基于已知3D點(diǎn)和對(duì)應(yīng)的圖像2D點(diǎn)求解相機(jī)運(yùn)動(dòng)的過程。


描述下GN、LM方法

(1) GN:改進(jìn):線搜索,增加一個(gè)α

也即先固定搜索方向 然后在該方向上尋找步長 例如最速下降法和高斯牛頓法

? ? ? ? ? ? ? ? ? 將f(x)進(jìn)行一節(jié)泰勒展開,最后求解? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? 線性方程H△x=b;

? ? ? ? ? ? ? ? ? 用JT*J近似H矩陣,省略H復(fù)雜的計(jì)算?

? ? ? ? ? ? ? ? ? 過程;

? ? ? ? ? ? ? ? ? 穩(wěn)定性差,可能不收斂;

(2) LM:信賴區(qū)域;

也即先固定搜索區(qū)域,然后考慮該區(qū)域內(nèi)的最優(yōu)點(diǎn)

? ? ? ? ? ? ? ? ? 求解線性方程(H+λI)△x=b;? (I也可以轉(zhuǎn)為DTD)

? ? ? ? ? ? ? ? ? 提供更穩(wěn)定,更準(zhǔn)確的增量? 收斂速度慢一點(diǎn) 主要運(yùn)用的就是這個(gè)LM方法

? ? ? ? ? ? ? ? ? ? 用p來判斷泰勒近似是否足夠好?

? ? ? ? ? ? ? ? 比起高斯牛頓法 多了一項(xiàng)lamdaDtD,其中,D為增量的限定范圍,實(shí)際中通常用JTJ的對(duì)角元素平方根

當(dāng)lamda較小的時(shí)候 H占主導(dǎo)地位 接近于高斯牛頓

lamda較大的時(shí)候 lamda*I占主導(dǎo)地位 接近于一階梯度下降


普通牛頓法:增量方程需要計(jì)算目標(biāo)函數(shù)的H矩陣(二階導(dǎo)數(shù))計(jì)算量大

高斯牛頓:用JtJ作為牛頓法中二階的H矩陣的近似,省略了這一計(jì)算過程

但此時(shí) JtJ可能只是半正定的 從而增量穩(wěn)定性差 可能不收斂


如何處理關(guān)鍵幀

關(guān)鍵幀選取的指標(biāo)主要有:

(1)跟蹤質(zhì)量(主要根據(jù)跟蹤過程中搜索到的點(diǎn)數(shù)和搜索的點(diǎn)數(shù)比例)/共視特征點(diǎn)

(2)距離最近關(guān)鍵幀的距離是否足夠遠(yuǎn)(空間)/運(yùn)動(dòng)

(3)距離上一關(guān)鍵幀的幀數(shù)是否足夠多(時(shí)間)


為什么要引入李群李代數(shù)

旋轉(zhuǎn)矩陣自身是帶有約束的,正交且行列式為1,他們作為優(yōu)化變量時(shí),會(huì)引入額外的約束,使優(yōu)化變的困難,通過李群李代數(shù)的轉(zhuǎn)換關(guān)系,把位姿估計(jì)變成無約束的優(yōu)化問題。


極線約束

所謂極線約束就是說同一個(gè)點(diǎn)在兩幅圖像上的映射,已知左圖映射點(diǎn)p1,那么右圖映射點(diǎn)p2一定在相對(duì)于p1的極線上,這樣可以減少待匹配的點(diǎn)數(shù)量。(畫圖解釋)


單目視覺slam中尺寸漂移是怎么產(chǎn)生的

單目相機(jī)根據(jù)一張圖片無法得出一張圖片中物體的實(shí)際大小,同理也就無法得出運(yùn)動(dòng)的尺度大小,這是產(chǎn)生尺度漂移的根源。而在優(yōu)化過程中,單目相機(jī)使用對(duì)極幾何中的三角測(cè)量原理,而三角測(cè)量中,極小的角度誤差在累積之后深度不確定都會(huì)變得很大,從而無法保證尺度一致性。

逆深度表示我覺得原因有兩個(gè): 1. 實(shí)際場(chǎng)景中,遇到點(diǎn)的深度可能很遠(yuǎn)甚至無窮遠(yuǎn),遇到的點(diǎn)的深度非常近的較少,采用高斯分布假設(shè),初始值難以覆蓋深度很遠(yuǎn)的點(diǎn)。 這時(shí)候用深度的倒數(shù),在數(shù)值分布上更符合高斯分布的假設(shè);? ?2. 實(shí)際上應(yīng)用中,逆深度具有更好的數(shù)值穩(wěn)定性,為啥? 因?yàn)榈箶?shù)的連續(xù)性較好啊, 你想5和10直線差了5,而1/5和1/10之間差的就小多了, 而且仿真發(fā)現(xiàn)逆深度的表示更有效

H矩陣求逆加速:

GPU硬件加速? ?利用稀疏性進(jìn)行邊緣化? ?SVD分解等數(shù)值方法

如何對(duì)匹配好的點(diǎn)做進(jìn)一步的處理,更好保證匹配效果?或如何濾除外點(diǎn)

a) 確定匹配的最大距離:先求出所有匹配點(diǎn)最小距離min_dist(Hamming距離嗎?),小于2倍的最小距離的點(diǎn),認(rèn)為是內(nèi)點(diǎn),即30<匹配點(diǎn)距離<=2*min_dist,30是經(jīng)驗(yàn)值,有些點(diǎn)會(huì)特別小。

b) 基于KNN匹配算法:令k=2,即取最近鄰與次近鄰距離(.distance(),該距離類似于歐式距離,用于表征匹配質(zhì)量,距離越小,匹配效果越好)的比值,比值小于一定閾值(如<0.8)則認(rèn)為是內(nèi)點(diǎn);

c) RANSAC方法。


相比VSLAM,加入IMU后,哪些狀態(tài)可觀?

a) 單目SLAM7個(gè)自由度不可觀:6個(gè)自由度+尺度;

b) 單目+IMU4個(gè)自由度不可觀:偏航角(yaw)+3自由度不可觀;翻滾角(roll)、俯仰角(pitch)由于重力存在而可觀,尺度因子由于加速度計(jì)的存在而可觀;


等距變換 = 剛體變換? :

注意 自由度為3? ?(平面的剛體變換 平移兩個(gè)自由度? 旋轉(zhuǎn)1個(gè)自由度)


相似變換是等距變換與均勻縮放的復(fù)合:

在旋轉(zhuǎn)矩陣上加了一個(gè)縮放因子s,其一共有四個(gè)自由度,因?yàn)楸鹊染嘧儞Q多了一個(gè)自由度? ? ? ? ? ?其不變量為:長度的比率、角度和面積的比率

仿射變換:

A是一個(gè)2×2、的非奇異矩陣,因此仿射變換一共六個(gè)自由度?

對(duì)A進(jìn)行SVD分解

仿射變換之后平行直線仍然平行


射影變換:


非齊次坐標(biāo)的一般非奇異線性變換和一個(gè)平移的符合,其一共具有八個(gè)自由度


視差與深度的關(guān)系。在相機(jī)完成校正后,則有d/b=f/z,其中d表示視差,b表示基線,f是焦距,z是深度


重投影誤差(Reprojection Error)和對(duì)稱轉(zhuǎn)移誤差(Symmetric transfer error)


重投影誤差:

重投影誤差是指投影的點(diǎn)(理論值)與圖像上的測(cè)量點(diǎn)的誤差。例如在標(biāo)定的時(shí)候我們經(jīng)常用到重投影誤差作為最終標(biāo)定效果的評(píng)價(jià)標(biāo)準(zhǔn),我們認(rèn)為標(biāo)定板上的物理點(diǎn)是理論值,它經(jīng)過投影變換后會(huì)得到理論的像素點(diǎn)a,而測(cè)量的點(diǎn)經(jīng)過畸變矯正后的像素點(diǎn)為a′,它們的歐氏距離|a?a′|2即表示重投影誤差。

對(duì)稱轉(zhuǎn)移誤差:

左右圖像上某一對(duì)測(cè)量的得到的匹配點(diǎn),各自經(jīng)過單應(yīng)變換得到各自的理論匹配點(diǎn),對(duì)稱轉(zhuǎn)移誤差是指這一對(duì)測(cè)量得到的匹配點(diǎn)與另一張圖像變換過來的理論匹配點(diǎn)的歐式距離



這里的x三角? 表示估計(jì)點(diǎn)? 估計(jì)點(diǎn)是可以用H完全轉(zhuǎn)換的? 但是不太明白估計(jì)點(diǎn)是什么意思 怎么來的 以及這么算出來的誤差代表什么

這里重投影誤差 應(yīng)該是建立在畸變矯正的意義上 也就是說 對(duì)于x 經(jīng)過畸變矯正后得到的估計(jì)點(diǎn)x三角? 以及x三角經(jīng)過H變換后的x三角一撇?


歸一化平面、成像平面:


我們從頭開始一步一步理一下:

1、首先從相機(jī)坐標(biāo)系開始吧,物點(diǎn)在相機(jī)坐標(biāo)系下所在的平面叫做物平面(當(dāng)然還有世界坐標(biāo)系,但是那個(gè)就涉及外參了,本文暫不討論那個(gè));

2、物平面的點(diǎn)通過小孔成像后,投到成像平面(相機(jī)光心之后),雖然此時(shí)的面是真正的成像平面,但是此時(shí)得到的坐標(biāo)是負(fù)的,很麻煩的;

3、為了方便計(jì)算我們把該成像平面放到相機(jī)之前,并且以后都這么算,然后把此平面叫做成像平面,注意此時(shí)推到過程是:將X和Y坐標(biāo)乘以f(焦距)除以Z(z坐標(biāo)),因?yàn)榇诉^程會(huì)將3D轉(zhuǎn)化成2D,所以Z肯定要被消去,這樣理解可能更直觀,本質(zhì)還是三角形相似;又因?yàn)槠叫泄獬上穸汲稍诮蛊矫媛?,所以乘以f是理所應(yīng)當(dāng)?shù)模?/p>

4、由于此時(shí)單位依舊是米,我們最終得到的可是像素坐標(biāo),單位是像素,所以還需要一個(gè)米與像素之間的縮放。公式里是α和β,當(dāng)然我們還需要把整個(gè)點(diǎn)挪到像素原點(diǎn)去,像素圖像的原點(diǎn)在左上角,圖形的原點(diǎn)在中心,此時(shí)有一個(gè)cx,cy的平移,但是面的位置沒有改變,但是性質(zhì)變了,已經(jīng)成為像素平面了,單位是pixel。

現(xiàn)在回頭看,我們需要做的是:

① 把第2步省去,因?yàn)榧迂?fù)號(hào)不是我們想要的,所以我們的腦海里將不再有相機(jī)之后的平面了;

② 推導(dǎo)出歸一化平面,把第3步分開,先除Z,此時(shí)物平面就轉(zhuǎn)到了相機(jī)前單位距離處,這時(shí)歸一化平面就有了。之后再乘以f,讓歸一化平面挪到成像平面;

③ 把乘f,米與像素的縮放(α、β),平移(cx,cy)整合成內(nèi)參矩陣K。

所以最終的過程就是從物平面除以Z變成歸一化平面,乘以f變成成像平面,縮放平移變成像素平面,也可以乘以內(nèi)參由歸一化平面變成像素平面。我們平時(shí)用歸一化平面多一些,畢竟齊次嘛,可以忽略物點(diǎn)深度的影響。這樣看來,由近及遠(yuǎn)以此是:相機(jī)平面,歸一化平面(1),成像平面(f),像素平面(f)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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