2020視覺SLAM面試複習

前言

秋招即將來臨,雖然今年形勢恐不大好,但有備無患吧!
主要參考:
Jichao_Peng:視覺SLAM總結——視覺SLAM面試題彙總
try_again_later:SLAM秋招知識點總結——自動駕駛算法、3D視覺崗位(附有解答)


1.Sift中尺度空間、高斯金字塔、差分金字塔(DOG金字塔)

https://blog.csdn.net/dcrmg/article/details/52561656

1.Sift與surf特徵提取的區別

按照順序閱讀:
https://blog.csdn.net/cy513/article/details/4414352
https://www.cnblogs.com/jiahenhe2/p/7919356.html
https://blog.csdn.net/jwh_bupt/article/details/6567452

  • 構建圖像金字塔,SIFT特徵利用不同尺寸的圖像與高斯差分濾波器卷積;SURF特徵利用原圖片與不同尺寸的方框濾波器卷積。
  • 特徵描述子,SIFT特徵有4×4×8=128維描述子,SURF特徵有4×4×4=64維描述子
  • 特徵點檢測方法,SIFT特徵先進行非極大抑制,再去除低對比度的點,再通過Hessian矩陣去除邊緣響應過大的點;SURF特徵先利用Hessian矩陣確定候選點,然後進行非極大抑制
  • 特徵點主方向,SIFT特徵在正方形區域內統計梯度幅值的直方圖,直方圖最大值對應主方向,可以有多個主方向;SURF特徵在圓形區域內計算各個扇形範圍內x、y方向的haar小波響應,模最大的扇形方向作爲主方向

2. 相似變換、仿射變換、射影變換的區別

等距變換:相當於是平移變換(t)和旋轉變換(R)的複合,等距變換前後長度,面積,線線之間的角度都不變。自由度爲6(3+3)
相似變換:等距變換和均勻縮放(S)的一個複合,類似相似三角形,體積比不變。自由度爲7(6+1)
仿射變換:一個平移變換(t)和一個非均勻變換(A)的複合,A是可逆矩陣,並不要求是正交矩陣,仿射變換的不變量是:平行線,平行線的長度的比例,面積的比例。自由度爲12(9+3)
射影變換:當圖像中的點的齊次座標的一般非奇異線性變換,射影變換就是把理想點(平行直線在無窮遠處相交)變換到圖像上,射影變換的不變量是:重合關係、長度的交比。自由度爲15(16-1)
參考:視圖幾何總結——等距變換、相似變換、仿射變換和射影變換

3.基礎矩陣、本質矩陣和單應矩陣的

單應矩陣(Homography Matrix):可以將一個二維射影空間的點變換該另一個二維射影空間的點,如下圖所示,在不加任何限制的情況下,僅僅考慮二維射影空間中的變換,一個單應矩陣HH可由9個參數確定,減去scale的一個自由度,自由度爲8。在這裏插入圖片描述
在這裏插入圖片描述
基礎矩陣(Fundamental Matrix):對兩幅圖像中任何一對對應點xx和x′x′基礎矩陣FF都滿足條件:xTFx′=0xTFx′=0,秩只有2,因此F的自由度爲7。它自由度比本質矩陣多的原因是多了兩個內參矩陣。
本質矩陣(Essential matrix):本質矩是歸一化圖像座標下的基本矩陣的特殊形式,其參數由運動的位姿決定,與相機內參無關,其自由度爲6,考慮scale的話自由度爲5。
參考:多視圖幾何總結——基礎矩陣、本質矩陣和單應矩陣的自由度分析
本質矩陣和基礎矩陣的區別是什麼?

5.描述PnP算法

已知空間點世界座標系座標和其像素投影,公式如下
在這裏插入圖片描述
目前一共有兩種解法,直接線性變換方法(一對點能夠構造兩個線性約束,因此12個自由度一共需要6對匹配點),另外一種就是非線性優化的方法,假設空間座標點準確,根據最小重投影誤差優化相機位姿。

  • 直接線性變化
    考慮某個空間點 P ,它的齊次座標爲 P = (X, Y, Z, 1)^T 。在圖像 I 中,投影到特徵點 x 1 = (u 1 , v 1 , 1)^T (以歸一化平面齊次座標表示)。此時相機的位姿 R, t 是未知的。與單應矩陣的求解類似,我們定義增廣矩陣 [R|t] 爲一個 3 × 4 的矩陣,包含了旋轉與平移信息 。我們把它的展開形式列寫如下:
    在這裏插入圖片描述
    用最後一行把 s 消去,得到兩個約束:
    在這裏插入圖片描述
    爲了簡化表示,定義 T 的行向量:
    在這裏插入圖片描述
    於是有:
    在這裏插入圖片描述

    在這裏插入圖片描述
    請注意 t 是待求的變量,可以看到每個特徵點提供了兩個關於 t 的線性約束。假設一共有 N 個特徵點,可以列出線性方程組:
    在這裏插入圖片描述
    由於 T 一共有 12 維,因此最少通過六對匹配點,即可實現矩陣 T 的線性求解,這種方法(也)稱爲直接線性變換(Direct Linear Transform, DLT)。當匹配點大於六對時,可以使用 SVD 等方法對超定方程求最小二乘解。
    在 DLT 求解中,我們直接將 T 矩陣看成了 12 個未知數,忽略了它們之間的聯繫。因爲旋轉矩陣 R ∈ SO(3),用 DLT 求出的解不一定滿足該約束,它是一個一般矩陣。平移向量比較好辦,它屬於向量空間。對於旋轉矩陣 R,我們必須針對 DLT 估計的 T 的左邊3 × 3 的矩陣塊,尋找一個最好的旋轉矩陣對它進行近似。這可以由 QR 分解完成,相當於把結果從矩陣空間重新投影到 SE(3) 流形上,轉換成旋轉和平移兩部分。
    需要解釋的是,我們這裏的x1x_1使用了歸一化平面座標,去掉了內參矩陣 K 的影響——這是因爲內參 K 在 SLAM 中通常假設爲已知。如果內參未知,那麼我們也能用 PnP去估計 K, R, t 三個量。然而由於未知量的增多,效果會差一些。

  • 非線性優化
    考慮nn個三維空間點PP及其投影pp,我們希望計算相機的位姿R,tR,t,它的李羣表示爲TT。假設某空間點座標爲Pi=[Xi,Yi,Zi]TP_i=[X_i,Y_i,Z_i]^T,其投影的像素座標爲ui=[ui,vi]Tu_i=[u_i,v_i]^T。得像素位置與空間點位置的關係如下:
    si[uivi1]=KT[XiYiZi1]s_i\begin{bmatrix}u_i\\v_i\\1\\ \end{bmatrix}=KT\begin{bmatrix}X_i\\Y_i\\Z_i\\1\\ \end{bmatrix}
    寫成矩陣形式就是:
    siui=KTPis_iu_i=KTP_i
    由於相機位姿未知及觀測點的噪聲,該等式存在一個誤差。因此,我們把誤差求和,構建最小二乘問題,然後尋找最好的相機位姿,使它最小化:
    T=argminT12i=1nui1siKTPi22T^\ast=arg\min_T{ {1\over2} \sum_{i=1}^{n}{ ||u_i-{1\over s_i}KTP_i||_2^2}}
    該誤差項,是將3D點的投影位置觀測位置作差,所以稱爲重投影誤差。使用齊次座標時,這個誤差有3維。不過,由於uu最後一維爲1,該維度的誤差一直爲零,因而我們更多時候使用非齊次座標,於是誤差就只有2維了。我們通過特徵匹配知道了p1p_1p2p_2是同一個空間點PP的投影,但是不知道相機的位姿。在初始值中,PP的投影p^2\hat p_2與實際的p2p_2之間有一定的距離。於是我們調整相機的位姿,使得這個距離變小。不過,由於這個調整需要考慮很多個點,所以最後的效果是整體誤差的縮小,而每個點的誤差通常都不會精確爲零。

目前有兩個主要場景場景,其一是求解相機相對於某2維圖像/3維物體的位姿;其二就是SLAM算法中估計相機位姿時通常需要PnP給出相機初始位姿。
在場景1中,我們通常輸入的是物體在世界座標系下的3D點以及這些3D點在圖像上投影的2D點,因此求得的是相機座標系相對於世界座標系(Twc)的位姿
在場景2中,通常輸入的是上一幀中的3D點(在上一幀的相機座標系下表示的點)和這些3D點在當前幀中的投影得到的2D點,所以它求得的是當前幀相對於上一幀的位姿變換

6.閉環檢測常用方法

ORB SLAM中採用的是詞袋模型進行閉環檢測篩選出候選幀,再通過求解Sim3判斷最合適的關鍵幀
LSD SLAM中的閉環檢測主要是根據視差、關鍵幀連接關係,找出候選幀,然後對每個候選幀和測試的關鍵幀之間進行雙向Sim3跟蹤,如果求解出的兩個李代數滿足馬氏距離在一定範圍內,則認爲是閉環成功

7.梯度下降法、牛頓法、高斯-牛頓法的區別

在BA優化、PnP、直接法裏面都有接觸到非線性優化問題,上面幾種方法都是針對對非線性優化問題提出的方法,將非線性最優化問題作如下展開,就可以獲得梯度下降法和牛頓法
在這裏插入圖片描述
梯度下降法是一個一階最優化算法,通常也稱爲最速下降法。 要使用梯度下降法找到一個函數的局部極小值,必須向函數上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行迭代搜索。因此指保留一階梯度信息。缺點是過於貪心,容易走出鋸齒路線。
在這裏插入圖片描述
牛頓法是一個二階最優化算法,基本思想是利用迭代點處的一階導數(梯度)和二階導數(Hessen矩陣)對目標函數進行二次函數近似。因此保留二階梯度信息。缺點是需要計算H
H矩陣,計算量太大。
HΔx=JT(x)HΔx^∗=−J^T(x)
而把非線性問題,先進行一階展開,然後再作平方處理就可以得到高斯-牛頓法和列文博格方法
在這裏插入圖片描述在這裏插入圖片描述
高斯-牛頓法對上式展開並對ΔxΔx進行求導即可得高斯牛頓方程,其實其就是使用JJTJJT對牛頓法的HH矩陣進行替換,但是JJTJJT有可能爲奇異矩陣或變態,ΔxΔx也會造成結果不穩定,因此穩定性差
在這裏插入圖片描述
列文博格法就是在高斯-牛頓法的基礎上對ΔxΔx添加一個信賴區域,保證其只在展開點附近有效,即其優化問題變爲帶有不等式約束的優化問題,利用Lagrange乘子求解
在這裏插入圖片描述在這裏插入圖片描述

8.推導一下卡爾曼濾波、描述下粒子濾波

卡爾曼濾波
卡爾曼濾波 – 從推導到應用(一)
卡爾曼濾波 – 從推導到應用(二)
概率機器人總結——(擴展)卡爾曼濾波先實踐再推導
粒子濾波
Particle Filter Tutorial 粒子濾波:從推導到應用(一)
Particle Filter Tutorial 粒子濾波:從推導到應用(二)
Particle Filter Tutorial 粒子濾波:從推導到應用(三)
Particle Filter Tutorial 粒子濾波:從推導到應用(四)
概率機器人總結——粒子濾波先實踐再推導

9.多傳感器融合

擴展卡爾曼濾波EKF與多傳感器融合
無損卡爾曼濾波UKF與多傳感器融合

10.什麼是極線約束

所謂極線約束就是說同一個點在兩幅圖像上的映射,已知左圖映射點p1,那麼右圖映射點p2一定在相對於p1的極線上,這樣可以減少待匹配的點數量。如下圖:
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200524204802774.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05pZ2h0X19fUmFpZA==,size_16,color_FFFFFF,t_70

11.單目視覺SLAM中尺寸漂移是怎麼產生的

用單目估計出來的位移,與真實世界相差一個比例,叫做尺度。這個比例在單目初始化時通過三角化確定,但單純靠視覺無法確定這個比例到底有多大。由於SLAM過程中噪聲的影響,這個比例還不是固定不變的。修正方式是通過迴環檢測計算Sim3進行修正。

12.解釋SLAM中的綁架問題

綁架問題就是重定位,是指機器人在缺少之前位置信息的情況下,如何去確定當前位姿。例如當機器人被安置在一個已經構建好地圖的環境中,但是並不知道它在地圖中的相對位置,或者在移動過程中,由於傳感器的暫時性功能故障或相機的快速移動,都導致機器人先前的位置信息的丟失,在這種情況下如何重新確定自己的位置。
初始化綁架可以闡述爲一種通常狀況初始化問題,可使用蒙特卡洛估計器,即粒子濾波方法,重新分散粒子到三維位形空間裏面,被裏程信息和隨機擾動不斷更新,初始化粒子聚集到/收斂到可解釋觀察結果的區域。追蹤丟失狀態綁架,即在綁架發生之前,系統已經保存當前狀態,則可以使用除視覺傳感器之外的其他的傳感器作爲候補測量設備。

13.特徵點法

特徵點法:
優點:1. 沒有直接法的強假設,更加精確;2. 相較與直接法,可以在更快的運動下工作,魯棒性好
缺點:1. 特徵提取和特徵匹配過程耗時長;2. 特徵點少的場景中無法使用;3.只能構建稀疏地圖
直接法
優點:1.省去了特徵提取和特徵匹配的時間,速度較快;2. 可以用在特徵缺失的場合;3. 可以構建半稠密/稠密地圖
缺點:1. 易受光照和模糊影響;2.運動必須慢;3.非凸性,易陷入局部極小解

14.EKF和BA的區別

(1) EKF假設了馬爾科夫性,認爲k時刻的狀態只與k-1時刻有關。BA使用所有的歷史數據,做全體的SLAM
(2) EKF做了線性化處理,在工作點處用一階泰勒展開式近似整個函數,但在工作點較遠處不一定成立,這就是EKF的非線性誤差。BA每迭代一次,狀態估計發生改變,我們會重新對新的估計點做泰勒展開,可以把EKF看做只有一次迭代的BA

15. 10個相機同時看到100個路標點,問BA優化的雅克比矩陣多少維

因爲誤差對相機姿態的偏導數的維度是2×6,對路標點的偏導數是2×3,又10個相機可以同時看到100個路標點,所以一共有10×100×2行,100×3+10×6列。
在這裏插入圖片描述

16.介紹經典的視覺SLAM框架

視覺SLAM總結——ORB SLAM2中關鍵知識點總結
視覺SLAM總結——一文詳解單目VINS論文與代碼解讀目錄
視覺SLAM總結——SVO中關鍵知識點總結
視覺SLAM總結——LSD SLAM中關鍵知識點總結

17.介紹下你熟悉的非線性優化庫

非線性優化庫一般有ceres和g2o兩種

18.室內SLAM與自動駕駛SLAM有什麼區別?

19.什麼是緊耦合、松耦合?優缺點。

這裏默認指的是VIO中的鬆緊耦合,這裏參考深藍學院的公開課裏面介紹:
在這裏插入圖片描述
緊耦合是把圖像的特徵加到特徵向量中去,這樣做優點是可以免去中間狀態的累計誤差,提高精度,缺點是系統狀態向量的維數會非常高,需要很高的計算量;
松耦合是把VO處理後獲得的變換矩陣和IMU進行融合,這樣做優點是計算量小但是會帶來累計誤差。
下面是對經典的VIO框架進行一個分類

20.地圖點的構建方法有哪些

(1)在ORB SLAM2中是根據三角化的方法確定地圖點的,利用匹配好的兩個點構建AX=b
AX=b的方程,然後利用SVD分解取最小奇異值對應的特徵向量作爲地圖點座標,參考多視圖幾何總結——三角形法

21.如果對於一個3D點,我們在連續幀之間形成了2D特徵點之間的匹配,但是這個匹配中可能存在錯誤的匹配。請問你如何去構建3D點

毋庸置疑首先想到的是用RANSAC方法進行連續幀之間的位姿估計,然後用內點三角化恢復地圖點,具體一點說使用RANSAC估計基礎矩陣的算法步驟如下:
(1)從匹配的點對中選擇8個點,使用8點法估算出基礎矩陣FF
(2)計算其餘的點對到其對應對極線的距離dnd_n​,如果dn<dd_n<d​則該點爲內點,否則爲外點。記下符合該條件的內點的個數爲mim_i
(4)迭代kk次,或者某次得到內點的數目mim_i佔有的比例大於等於95%,則停止。選擇mim_i​最大的基礎矩陣作爲最終的結果。
如果是利用非線性優化的方法獲得位姿的話,可以在非線性優化代價函數中加入魯棒核函數來減少無匹配所帶來的誤差,例如《視覺SLAM十四講》裏面提到的Huber核:
H(e)={12e2ifeδδ(e12δ)otherwiseH(e)=\left\{\begin{array}{ll}\frac{1}{2}e^2&\text{if}|e|\leq\delta\\\delta\left(|e|-\frac{1}{2}\delta\right)&\text{otherwise}\end{array}\right.
在《機器人的狀態估計》一書總將這種方法稱爲M估計,核函數還包裹Cauchy核
ρ(u)=12ln(1+u2)\rho(u)={1\over2}\ln(1+u^2)
Geman-MeClure核
ρ(u)=12u21+u2ρ(u)=\frac{1}{2}\frac{u^2}{1+u^2}
可參考:RANSAC算法理解

22.RANSAC在選擇最佳模型的時候用的判斷準則是什麼?

簡單地說一般是選用具有最小殘差和的模型作爲最佳模型。

23.除了RANSAC之外,還有什麼魯棒估計的方法?

在《機器人的狀態估計》一書中還介紹了M估計(廣義的最大似然估計)協方差估計
所謂M估計指的是加入魯棒代價函數最大似然估計,而協方差估計指的是同時估計狀態和協方差的方法,也稱自適應估計。

24.3D地圖點是怎麼存儲的?表達方式?

以ORB SLAM2爲例,3D地圖點是以類的形式存儲的,在類裏面除了存儲3D地圖點的空間點,同時還存儲了3D點的描述子(其實就是BRIFE描述子),用來快速進行與特徵點的匹配,同時還用一個map存儲了與其有觀測關係的關鍵幀以及其在關鍵幀中的Index等等。

25.什麼是Bundle Adjustment

https://www.cnblogs.com/Jessica-jie/p/7739775.html

26.給你m相機n個點的bundle adjustment。當我們在仿真的時候,在迭代的時候,相機的位姿會很快的接近真值。而地圖點卻不能很快的收斂這是爲什麼呢?

約束相機位姿的方程遠多於約束地圖點的方程

27.與高斯牛頓法相比LM算法的優缺點

高斯牛頓法的缺點是:

  • JTJJ^TJ可能是奇異的病態的,無法保證求解的增量的穩定性;
  • 步長可能很大從而導致無法滿足高斯牛頓的一階能大致擬合的假設
    優點:
  • 下降速度比LM快

LM是信賴區域優化法的代表,而加上步長的高斯牛頓法是線搜索方法的代表。

28.

29.

30.

31.

32.

33.

34.

35.

36.

37.

38.

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