SLAM實習生面試基礎知識點總結
點擊下方卡片,關注“新機器視覺”公眾號
視覺/圖像重磅干貨,第一時間送達
白白最近的時間投了一些SLAM相關的實習,通過各種公司的面試了解了流程以及側重點,有答的不好被拒絕的,也有拿到offer的,也有簡歷石沉大海的。發(fā)現(xiàn)很多基礎的問題自己都明白但是在面試緊張的情況下描述的邏輯不是很清晰,所以導致面試效果不是很好,通過自己這一段時間的學習和面試遇到的一些SLAM相關的基礎問題做一個總結。
1、如何對匹配好的點做進一步的處理,更好保證匹配效果
(1)確定匹配最大距離,漢明距離小于最小距離的兩倍(2)使用KNN-matching算法,令K=2。則每個match得到兩個最接近的descriptor,然后計算最接近距離和次接近距離之間的比值,當比值大于既定值時,才作為最終match。(3)RANSAC(使用RANSAC找到最佳單應性矩陣。由于這個函數(shù)使用的特征點同時包含正確和錯誤匹配點,因此計算的單應性矩陣依賴于二次投影的準確性),統(tǒng)計容差范圍內匹配點最多的作為最適合的模型,剔除誤匹配的點。
2. 單目相機,F(xiàn)和H矩陣有何不同,E和F矩陣有何不同,只旋轉不平移能不能求F,只旋轉不平移能不能求H ?

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

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

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

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

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

26、解釋相機內外參數(shù)
相機內參包括焦距fx,fy,cx,cy,徑向畸變系數(shù)k1,k2,k3,切向畸變系數(shù)p1,p2其中內參一般來說是不會改變,但是當使用可變焦距鏡頭時每次改變焦距需要重新標定內參當圖像裁剪時內參cx,cy會發(fā)生改變,比如圖像從8*8變成4*4時,cx,cy需要除以2一般標定工業(yè)相機時只需要得到畸變系數(shù)k1,k2即可,對于畸變系數(shù)較大的魚眼相機需要得到k3,p1,p2相機外參分為旋轉矩陣R和平移矩陣t,旋轉矩陣和平移矩陣共同描述了如何把點從世界坐標系轉換到攝像機坐標系
—版權聲明—
僅用于學術分享,版權屬于原作者。
若有侵權,請聯(lián)系微信號:yiyang-sy 刪除或修改!
