SLAM實(shí)習(xí)生面試基礎(chǔ)知識(shí)點(diǎn)總結(jié)
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

白白最近的時(shí)間投了一些SLAM相關(guān)的實(shí)習(xí),通過(guò)各種公司的面試了解了流程以及側(cè)重點(diǎn),有答的不好被拒絕的,也有拿到offer的,也有簡(jiǎn)歷石沉大海的。發(fā)現(xiàn)很多基礎(chǔ)的問(wèn)題自己都明白但是在面試緊張的情況下描述的邏輯不是很清晰,所以導(dǎo)致面試效果不是很好,通過(guò)自己這一段時(shí)間的學(xué)習(xí)和面試遇到的一些SLAM相關(guān)的基礎(chǔ)問(wèn)題做一個(gè)總結(jié)。

1、如何對(duì)匹配好的點(diǎn)做進(jìn)一步的處理,更好保證匹配效果
(1)確定匹配最大距離,漢明距離小于最小距離的兩倍(2)使用KNN-matching算法,令K=2。則每個(gè)match得到兩個(gè)最接近的descriptor,然后計(jì)算最接近距離和次接近距離之間的比值,當(dāng)比值大于既定值時(shí),才作為最終match。(3)RANSAC(使用RANSAC找到最佳單應(yīng)性矩陣。由于這個(gè)函數(shù)使用的特征點(diǎn)同時(shí)包含正確和錯(cuò)誤匹配點(diǎn),因此計(jì)算的單應(yīng)性矩陣依賴于二次投影的準(zhǔn)確性),統(tǒng)計(jì)容差范圍內(nèi)匹配點(diǎn)最多的作為最適合的模型,剔除誤匹配的點(diǎn)。
2. 單目相機(jī),F(xiàn)和H矩陣有何不同,E和F矩陣有何不同,只旋轉(zhuǎn)不平移能不能求F,只旋轉(zhuǎn)不平移能不能求H ?

在相機(jī)只有旋轉(zhuǎn)而沒(méi)有平移的情況,此時(shí)t為0,E也將為0,導(dǎo)致無(wú)法求解R,這時(shí)可以使用單應(yīng)矩陣H求旋轉(zhuǎn),但僅有旋轉(zhuǎn),無(wú)法三角化求深度。
3. 描述BA
BA的本質(zhì)是一個(gè)優(yōu)化模型,其目的是最小化重投影/光度誤差,用于優(yōu)化相機(jī)位姿和世界點(diǎn)。局部BA用于優(yōu)化局部的相機(jī)位姿,提高跟蹤的精確度;全局BA用于全局過(guò)程中的相機(jī)位姿,使相機(jī)經(jīng)過(guò)長(zhǎng)時(shí)間、長(zhǎng)距離的移動(dòng)之后,相機(jī)位姿還比較準(zhǔn)確。BA是一個(gè)圖優(yōu)化模型,一般選擇LM(Levenberg-Marquardt)算法并在此基礎(chǔ)上利用BA模型的稀疏性進(jìn)行計(jì)算;可以直接計(jì)算,也可以使用g2o或者Ceres等優(yōu)化庫(kù)進(jìn)行計(jì)算。
Bundle Adjustment : 從視覺(jué)重建中提煉出最優(yōu)的3D模型和相機(jī)參數(shù)(內(nèi)參和外參),好似每一個(gè)特征點(diǎn)都會(huì)反射幾束光線,當(dāng)把相機(jī)位姿和特征點(diǎn)位置做出最優(yōu)的調(diào)整后,這些光線都收束到相機(jī)相機(jī)光心。也就是根據(jù)相機(jī)的投影模型構(gòu)造構(gòu)造代價(jià)函數(shù),利用非線性優(yōu)化(比如高斯牛頓或列文伯格馬夸而爾特)來(lái)求最優(yōu)解,利用雅克比矩陣的稀疏性解增量方程,得到相機(jī)位姿和特征點(diǎn)3D位置的最優(yōu)解。BA可以分為基于濾波器的BA和基于迭代的BA
4. 描述PnP
Perspective-n-Points, PnP(P3P)提供了一種解決方案,它是一種由3D-2D的位姿求解方式,即需要已知匹配的3D點(diǎn)和圖像2D點(diǎn)。目前遇到的場(chǎng)景主要就是SLAM算法中估計(jì)相機(jī)位姿時(shí)通常需要PnP給出相機(jī)初始位姿,第一幀圖像中的3D點(diǎn)以及對(duì)應(yīng)到第二幀圖像中的2D點(diǎn),通過(guò)相機(jī)成像模型,將3D點(diǎn)投影到二維平面,通過(guò)構(gòu)建誤差目標(biāo)函數(shù)通過(guò)優(yōu)化調(diào)整位姿的方法使得誤差目標(biāo)函數(shù)達(dá)到最小,所以它求得的是當(dāng)前幀相對(duì)于上一幀的位姿變換,都是基于已知3D點(diǎn)和對(duì)應(yīng)的圖像2D點(diǎn)求解相機(jī)運(yùn)動(dòng)的過(guò)程。
5. 描述下GN、LM方法
(1) GN:線搜索
將f(x)進(jìn)行一節(jié)泰勒展開(kāi),最后求解線性方程H△x=b;用JT*J近似H矩陣,H的計(jì)算過(guò)程根據(jù)特定問(wèn)題特殊分析;該方法特點(diǎn)是:穩(wěn)定性差,可能不收斂;
(2) LM:信賴區(qū)域;
求解線性方程(H+λI)△x=b;通過(guò)調(diào)整拉格朗日乘子,可以判斷是H占據(jù)主導(dǎo)地位(二階近似較好),還是λI占據(jù)主導(dǎo)地位(一階近似較好),避免非奇異和病態(tài)問(wèn)題,提供更穩(wěn)定,更準(zhǔn)確的增量。

6. 如何處理關(guān)鍵幀(可以參考ORBSLAM2中的Tracking線程)
關(guān)鍵幀選取的指標(biāo)主要有:
(1)跟蹤質(zhì)量(主要根據(jù)跟蹤過(guò)程中搜索到的點(diǎn)數(shù)和搜索的點(diǎn)數(shù)比例)/共視特征點(diǎn)
(2)距離最近關(guān)鍵幀的距離是否足夠遠(yuǎn)(空間)/運(yùn)動(dòng)
(3)距離上一關(guān)鍵幀的幀數(shù)是否足夠多(時(shí)間)
(4)局部地圖空閑
7. 為什么要引入李群李代數(shù)
旋轉(zhuǎn)矩陣自身是帶有約束的,正交且行列式為1,他們作為優(yōu)化變量時(shí),會(huì)引入額外的約束,使得優(yōu)化變的困難,通過(guò)李群李代數(shù)的轉(zhuǎn)換關(guān)系,把位姿估計(jì)變成無(wú)約束的優(yōu)化問(wèn)題。優(yōu)化過(guò)程求極值,由求導(dǎo)數(shù)的定義式,可以知道矩陣對(duì)于加法不封閉,對(duì)于乘法封閉;我們可以看錯(cuò)把李群就是變換矩陣的集合,但是用李代數(shù)的形式去表示變換矩陣,與李群的變換對(duì)應(yīng)關(guān)系恰好是與指數(shù)相乘的關(guān)系,用求導(dǎo)的定義式子就可以求解優(yōu)化問(wèn)題了。
8. 什么是極線約束(對(duì)極幾何約束)
所謂極線約束就是說(shuō)同一個(gè)點(diǎn)在兩幅圖像上的映射,已知左圖映射點(diǎn)p1,那么右圖映射點(diǎn)p2一定在相對(duì)于p1的極線上,這樣可以減少待匹配的點(diǎn)數(shù)量。可以畫(huà)圖解釋,注意成像平面、特征點(diǎn)、極點(diǎn)、極線、極平面、相機(jī)光心等概念。
9. 單目視覺(jué)slam中尺寸漂移是怎么產(chǎn)生的
單目相機(jī)根據(jù)一張圖片無(wú)法得出一張圖片中物體的實(shí)際大小,同理也就無(wú)法得出運(yùn)動(dòng)的尺度大小,這是產(chǎn)生尺度漂移的根源。而在優(yōu)化過(guò)程中,單目相機(jī)使用對(duì)極幾何中的三角測(cè)量原理求解深度信息,而三角測(cè)量中,極小的角度誤差在累積之后深度不確定都會(huì)變得很大,從而無(wú)法保證尺度一致性。
10. SLAM中的綁架問(wèn)題
綁架問(wèn)題就是重定位,是指機(jī)器人在缺少之前位置信息的情況下,如何去確定當(dāng)前位姿。例如當(dāng)機(jī)器人被安置在一個(gè)已經(jīng)構(gòu)建好地圖的環(huán)境中,但是并不知道它在地圖中的相對(duì)位置,或者在移動(dòng)過(guò)程中,由于傳感器的暫時(shí)性功能故障或相機(jī)的快速移動(dòng),都導(dǎo)致機(jī)器人先前的位置信息的丟失,在這種情況下如何重新確定自己的位置。

11、描述特征點(diǎn)法和直接法的優(yōu)缺點(diǎn)
特征點(diǎn)法優(yōu)點(diǎn):
(1)精確,直接法屬于強(qiáng)假設(shè)
(2)運(yùn)動(dòng)過(guò)大時(shí),只要匹配點(diǎn)在像素內(nèi),則不太會(huì)引起誤匹配,魯棒性好
缺點(diǎn):
(1)關(guān)鍵點(diǎn)提取、描述子、匹配耗時(shí)長(zhǎng)
(2)特征點(diǎn)丟失場(chǎng)景無(wú)法使用
(3)只能構(gòu)建稀疏地圖
直接法優(yōu)點(diǎn):
(1)省去計(jì)算特征點(diǎn)、描述子時(shí)間
(2)可以用在特征缺失的場(chǎng)合使用(比如白墻,只要有像素梯度變化就好)(3)可以構(gòu)建半稠密乃至稠密地圖
缺點(diǎn):
(1)強(qiáng)假設(shè)條件,易受光照和模糊影響
(2)運(yùn)動(dòng)必須微小,要求相機(jī)運(yùn)動(dòng)較慢或采樣頻率較高(用圖像金字塔改善)
(3)非凸性;單個(gè)像素沒(méi)有區(qū)分度
12. 特征點(diǎn)法和直接法的BA有何不同
(1) 誤差函數(shù)不同。特征點(diǎn)法是重投影誤差,直接法是光度誤差
(2) 雅克比矩陣不同
13. 光流和直接法有何不同
光流僅估計(jì)了像素間的平移,但
(1)沒(méi)有用相機(jī)結(jié)構(gòu)
(2)沒(méi)有考慮相機(jī)的旋轉(zhuǎn)和圖像縮放
(3)邊界點(diǎn)追蹤效果差
14. 特征匹配(稀疏)和稠密匹配區(qū)別
特征匹配:
(1)速度快,效率高,可以到亞像素級(jí)別,精度高
(2)匹配元素為物體的幾何特征,對(duì)照明變化不敏感
稠密匹配
(1)速度慢,效率低
(2)對(duì)無(wú)紋理區(qū)域匹配效果不理想,對(duì)光強(qiáng)條件敏感
15. EKF和BA的區(qū)別
(1) EKF假設(shè)了馬爾科夫性,認(rèn)為k時(shí)刻的狀態(tài)只與k-1時(shí)刻有關(guān)。非線性優(yōu)化使用所有的歷史數(shù)據(jù),做全體的SLAM
(2) EKF做了線性化處理,在工作點(diǎn)處用一階泰勒展開(kāi)式近似整個(gè)函數(shù),但在工作點(diǎn)較遠(yuǎn)處不一定成立。非線性優(yōu)化每迭代一次,狀態(tài)估計(jì)發(fā)生改變,我們會(huì)重新對(duì)新的估計(jì)點(diǎn)做泰勒展開(kāi),可以把EKF看做只有一次迭代的BA

16. 單目,雙目,深度相機(jī)對(duì)比
單目:成本低,搭建簡(jiǎn)單,單目相機(jī)有尺度不確定性,需要專門(mén)初始化;
雙目:不需要專門(mén)初始化,能夠計(jì)算深度,基線距離越大,測(cè)量距離越遠(yuǎn),可以用于室內(nèi)和室外,標(biāo)定較為復(fù)雜,視差計(jì)算比較消耗資源,視差最小為一個(gè)像素,此時(shí)基線固定的化,所測(cè)距離最遠(yuǎn);深度:測(cè)量范圍窄,噪聲大,易受日光干擾,無(wú)法測(cè)量透射材料,主要用于室內(nèi)。
17. 常用的邊緣檢測(cè)算子和優(yōu)缺點(diǎn)
邊緣檢測(cè)一般分為三步,分別是濾波、增強(qiáng)、檢測(cè)。基本原理都是用高斯濾波器進(jìn)行去噪,之后在用卷積內(nèi)核尋找像素梯度。常用有三種算法:canny算子,sobel算子,laplacian算子
canny算子:一種完善的邊緣檢測(cè)算法,抗噪能力強(qiáng),用高斯濾波平滑圖像,用一階偏導(dǎo)的有限差分計(jì)算梯度的幅值和方向,對(duì)梯度幅值進(jìn)行非極大值抑制,采用雙閾值檢測(cè)和連接邊緣。
sobel算子:一階導(dǎo)數(shù)算子,引入局部平均運(yùn)算,對(duì)噪聲具有平滑作用,抗噪聲能力強(qiáng),計(jì)算量較大,但定位精度不高,得到的邊緣比較粗,適用于精度要求不高的場(chǎng)合。laplacian算子:二階微分算子,具有旋轉(zhuǎn)不變性,容易受噪聲影響,不能檢測(cè)邊緣的方向,一般不直接用于檢測(cè)邊緣,而是判斷明暗變化。
18. 一階梯度下降,G-N和L-M三種方法的關(guān)系
(H+λI)△x=b當(dāng)λ= 0時(shí),L-M等于G-N;當(dāng)λ= ∞時(shí),L-M等于一階梯度下降。L-M的好處就在于:如果下降的太快,使用較小的λ,如果下降的太慢,使用較大的λ
19. 為什么SLAM中常用L-M
G-N中的H矩陣可能為奇異矩陣或者病態(tài)矩陣,導(dǎo)致算法不收斂。而且當(dāng)步長(zhǎng)較大時(shí),也無(wú)法保證收斂性,所以采用L-M求解增量方程,但是它的收斂速度可能較慢。
20. 介紹RANSAC算法
RANSAC算法的基本假設(shè)是樣本中包含正確數(shù)據(jù)(inliers,可以被模型描述的數(shù)據(jù)),也包含異常數(shù)據(jù)(outliers,偏離正常范圍很遠(yuǎn)、無(wú)法適應(yīng)數(shù)學(xué)模型的數(shù)據(jù)),即數(shù)據(jù)集中含有噪聲。這些異常數(shù)據(jù)可能是由于錯(cuò)誤的測(cè)量、錯(cuò)誤的假設(shè)、錯(cuò)誤的計(jì)算等產(chǎn)生的。同時(shí)RANSAC也假設(shè),給定一組正確的數(shù)據(jù),存在可以計(jì)算出符合這些數(shù)據(jù)的模型參數(shù)的方法。舉個(gè)例子通俗的講,從一群點(diǎn)中估算直線模型,該算法先假設(shè)一個(gè)直線模型,并設(shè)定一定的容差范圍,通過(guò)迭代統(tǒng)計(jì)一群點(diǎn)中所有在容差范圍內(nèi)的點(diǎn)的個(gè)數(shù),最終統(tǒng)計(jì)最多的模型最適應(yīng)這群點(diǎn),迭代次數(shù)越多越準(zhǔn)確,其他的容差范圍外的點(diǎn)就是被剔除的點(diǎn),
優(yōu)缺點(diǎn):RANSAC算法的優(yōu)點(diǎn)是能魯棒的估計(jì)模型參數(shù)。例如,他能從包含大量局外點(diǎn)的數(shù)據(jù)集中估計(jì)出高精度的參數(shù)。缺點(diǎn)是它計(jì)算參數(shù)的迭代次數(shù)沒(méi)有上限,如果設(shè)置迭代次數(shù)的上限,得到的結(jié)果可能不是最優(yōu)的結(jié)果,甚至可能得到錯(cuò)誤的結(jié)果。RANSAC只有一定的概率得到的可信的模型,概率與迭代次數(shù)成正比。另一個(gè)缺點(diǎn)是它要求設(shè)置跟問(wèn)題相關(guān)的閾值,RANSAC只能從特定的數(shù)據(jù)集中估計(jì)出一個(gè)模型,如果存在兩個(gè)(或多個(gè))模型,RANSAC不能找到別的模型。

21、如何優(yōu)化重投影誤差?采用什么方法求解?如果誤匹配的點(diǎn)重投影之后誤差很大,如何解決它對(duì)整個(gè)優(yōu)化問(wèn)題的影響?
圖優(yōu)化模型,將路標(biāo)點(diǎn)和相機(jī)位姿作為兩個(gè)節(jié)點(diǎn),觀測(cè)模型作為邊,同時(shí)優(yōu)化兩個(gè)變量,SLAM中常用L-M求解,如果誤匹配誤差很大可以考慮用核函數(shù)(Huber),核函數(shù)可以減小誤匹配對(duì)整個(gè)方法的影響。
22、 g2o工程化的注意事項(xiàng)
圖優(yōu)化流程:
①選擇節(jié)點(diǎn)和邊,確定參數(shù)化形式
②加入節(jié)點(diǎn)和邊
③選擇初值,開(kāi)始迭代
④計(jì)算J和H
⑤解H△x = -b
⑥GN/LM
g2o需要實(shí)現(xiàn)其中的③-⑥g2o結(jié)構(gòu)如下圖所示:
①選擇線性方程求解器(PCG/Cspare/Choldmod)
②選擇一個(gè)blockslover
③選擇迭代方式(GN/LM/Dogleg)
實(shí)現(xiàn)過(guò)程 :選擇節(jié)點(diǎn)和邊
節(jié)點(diǎn):g2o :: VertexSE3Expmap(相機(jī)位姿)
? ? ? ? ?g2o :: VertexSBApointXYZ(路標(biāo))
邊:g2o :: EdgeProjectXYZ2UV(重投影誤差)

? ? ? ? ? ? ? ? ? ? g2o函數(shù)架構(gòu)圖? ? ? ? ? ? ? ? ? ? ? ?
24、卡爾曼濾波
預(yù)測(cè):如何從上一時(shí)刻的狀態(tài),根據(jù)輸入信息推斷當(dāng)前時(shí)刻的狀態(tài)分布(先驗(yàn))計(jì)算協(xié)方差
更新:計(jì)算增益Kg,然后計(jì)算后驗(yàn)觀測(cè),更新?tīng)顟B(tài)和協(xié)方差
25、 坐標(biāo)系轉(zhuǎn)換世界坐標(biāo)系(world) 相機(jī)坐標(biāo)(camera)歸一化坐標(biāo)系 ?像素坐標(biāo)(pixel)

26、解釋相機(jī)內(nèi)外參數(shù)
相機(jī)內(nèi)參包括焦距fx,fy,cx,cy,徑向畸變系數(shù)k1,k2,k3,切向畸變系數(shù)p1,p2其中內(nèi)參一般來(lái)說(shuō)是不會(huì)改變,但是當(dāng)使用可變焦距鏡頭時(shí)每次改變焦距需要重新標(biāo)定內(nèi)參當(dāng)圖像裁剪時(shí)內(nèi)參cx,cy會(huì)發(fā)生改變,比如圖像從8*8變成4*4時(shí),cx,cy需要除以2一般標(biāo)定工業(yè)相機(jī)時(shí)只需要得到畸變系數(shù)k1,k2即可,對(duì)于畸變系數(shù)較大的魚(yú)眼相機(jī)需要得到k3,p1,p2相機(jī)外參分為旋轉(zhuǎn)矩陣R和平移矩陣t,旋轉(zhuǎn)矩陣和平移矩陣共同描述了如何把點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到攝像機(jī)坐標(biāo)系
好消息,小白學(xué)視覺(jué)團(tuán)隊(duì)的知識(shí)星球開(kāi)通啦,為了感謝大家的支持與厚愛(ài),團(tuán)隊(duì)決定將價(jià)值149元的知識(shí)星球現(xiàn)時(shí)免費(fèi)加入。各位小伙伴們要抓住機(jī)會(huì)哦!

交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

