最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

萬(wàn)字干貨!視覺SLAM面試題匯總(19年秋招)第二部分

2020-09-02 13:38 作者:深藍(lán)學(xué)院  | 我要投稿

本周福利又雙叒叕來(lái)了!視覺SLAM面試題匯總(19年秋招)的第二部分為大家傾情放送!點(diǎn)贊關(guān)注不迷路!為了保證學(xué)習(xí)效果,建議大家收藏后細(xì)讀^-^


任何問(wèn)題歡迎評(píng)論區(qū)交流,有評(píng)必回!

以下為本次放送的面試題及解答部分


26. 除了RANSAC之外,還有什么魯棒估計(jì)的方法?

27. 3D地圖點(diǎn)是怎么存儲(chǔ)的?表達(dá)方式?

28. 給你m相機(jī)n個(gè)點(diǎn)的bundle adjustment。當(dāng)我們?cè)诜抡娴臅r(shí)候,在迭代的時(shí)候,相機(jī)的位姿會(huì)很快的接近真值。而地圖點(diǎn)卻不能很快的收斂這是為什么呢?

29. LM算法里面那個(gè)λ是如何變化的呢?

30. 說(shuō)一下3D空間的位姿如何去表達(dá)?

31. 李群和李代數(shù)的關(guān)系

32.求導(dǎo)

33. Mat是如何訪問(wèn)元素的?先訪問(wèn)行還是先訪問(wèn)列?

34. 寫出單目相機(jī)的投影模型,畸變模型。

35. 安裝2D lidar的平臺(tái)勻速旋轉(zhuǎn)的時(shí)候,去激光數(shù)據(jù)畸變,寫代碼

36. 給兩組已經(jīng)匹配好的3D點(diǎn),計(jì)算相對(duì)位姿變換,寫代碼

37. ORB-SLAM初始化的時(shí)候?yàn)槭裁匆瑫r(shí)計(jì)算H矩陣和F矩陣?

38. 說(shuō)一下Dog-Leg算法

39. Vins-Mono里面什么是邊緣化?First Estimate Jacobian?一致性?可觀性?

40. 說(shuō)一下VINS-Mono的優(yōu)缺點(diǎn)

41.導(dǎo)一下VINS-Mono里面的預(yù)積分公式

42.給定一些有噪聲的GPS信號(hào)的時(shí)候如何去精準(zhǔn)的定位?

43.何標(biāo)定IMU與相機(jī)之間的外參數(shù)?

44 給你xx誤差的GPS,給你xx誤差的慣導(dǎo)你怎么得到一個(gè)cm級(jí)別的地圖?

45. 計(jì)算H矩陣和F矩陣的時(shí)候有什么技巧呢?

46. 給一組點(diǎn)云,從中提取平面。

47. 給一張圖片,知道相機(jī)與地面之間的相對(duì)關(guān)系,計(jì)算出圖的俯視圖。

48. 雙線性插值如何去做,寫公式。

49. RGB-D的SLAM和RGB的SLAM有什么區(qū)別?

50.什么是ORB特征? ORB特征的旋轉(zhuǎn)不變性是如何做的? BRIEF算子是怎么提取的?

51.ORB-SLAM中的特征是如何提取的?如何均勻化的?


還是老規(guī)矩,先自己想,再看答案喲~^-^



26. 除了RANSAC之外,還有什么魯棒估計(jì)的方法?

在《機(jī)器人的狀態(tài)估計(jì)》一書中還介紹了M估計(jì)(廣義的最大似然估計(jì))和協(xié)方差估計(jì),所謂M估計(jì)指的是加入魯棒代價(jià)函數(shù)最大似然估計(jì),而協(xié)方差估計(jì)指的是同時(shí)估計(jì)狀態(tài)和協(xié)方差的方法,也稱自適應(yīng)估計(jì)。

27. 3D地圖點(diǎn)是怎么存儲(chǔ)的?表達(dá)方式?

以O(shè)RB SLAM2為例,3D地圖點(diǎn)是以類的形式存儲(chǔ)的,在類里面除了存儲(chǔ)3D地圖點(diǎn)的空間點(diǎn),同時(shí)還存儲(chǔ)了3D點(diǎn)的描述子(其實(shí)就是BRIFE描述子),用來(lái)快速進(jìn)行與特征點(diǎn)的匹配,同時(shí)還用一個(gè)map存儲(chǔ)了與其有觀測(cè)關(guān)系的關(guān)鍵幀以及其在關(guān)鍵幀中的Index等等。

28. 給你m相機(jī)n個(gè)點(diǎn)的bundle adjustment。當(dāng)我們?cè)诜抡娴臅r(shí)候,在迭代的時(shí)候,相機(jī)的位姿會(huì)很快的接近真值。而地圖點(diǎn)卻不能很快的收斂這是為什么呢?

約束相機(jī)位姿的方程遠(yuǎn)多于約束地圖點(diǎn)的方程


29. LM算法里面那個(gè)λ是如何變化的呢?

這里我想從頭開始理一遍,參考《視覺SLAM十四講》首先LM算法優(yōu)勢(shì)在哪里,GN法采用雅克比矩陣

的形式來(lái)代替難求的海森矩陣,但是

是半正定的,可能出現(xiàn)奇異矩陣或者病態(tài)的情況,而且Δx太大的時(shí)候也會(huì)導(dǎo)致這種二階泰勒展開的近似不夠準(zhǔn)確,為解決第二個(gè)問(wèn)題,提出了給Δx添加一個(gè)信賴區(qū)域方法,也就是LM法,其采用下式判斷近似差異的大小進(jìn)而確定信賴區(qū)域范圍:? ? ? ? ? ? ?

?其中分析是實(shí)際的代價(jià)函數(shù)下降值,分母是近似下降值。如果ρ越接近1說(shuō)明近似越準(zhǔn)確,ρ過(guò)小說(shuō)明實(shí)際下降較小,需要縮小信賴區(qū)域范圍,如果ρ過(guò)大說(shuō)明實(shí)際下降較大,需要擴(kuò)大信賴區(qū)域范圍。其步驟如下:

1.初始化

和優(yōu)化半徑μ;

2.進(jìn)行迭代求解

?這里D為單位陣是信賴區(qū)域范圍為一個(gè)球形

3.計(jì)算ρ

4.如果ρ>3/4,則μ=2μ(擴(kuò)大信賴區(qū)域范圍)

5.如果ρ=1/4,則μ=0.5μ(縮小信賴區(qū)域范圍)

6.如果ρ大于某一閾值,則進(jìn)行更新

這里面需要優(yōu)化一個(gè)帶約束的非線性優(yōu)化函數(shù),采用拉格朗日乘子法就引入了λ,如下

?求解后獲得? ? ? ? ? ? ? ? ?

?當(dāng)D=I時(shí)有? ? ? ? ? ? ? ? ? ??

?求解后當(dāng)λ較小時(shí)說(shuō)明Δx近似于GN方法求解的結(jié)果,二階是較好的近似,而λ較大時(shí)說(shuō)明近似于一階梯度下降法,二階近似效果不夠好。

30. 說(shuō)一下3D空間的位姿如何去表達(dá)?

李群或者李代數(shù)

31. 李群和李代數(shù)的關(guān)系

?如上圖所示(摘自《視覺SLAM十四講》),從李群到李代數(shù)是對(duì)數(shù)映射,形式上是先取對(duì)數(shù),然后取∨,從李代數(shù)到李群是對(duì)數(shù)映射,形式上先取∧,再取指數(shù),下面具體說(shuō):

三維旋轉(zhuǎn):李群就是三維旋轉(zhuǎn)矩陣,李代數(shù)是三維軸角(長(zhǎng)度代表旋轉(zhuǎn)大小,方向代表旋轉(zhuǎn)軸方向),從李群到李代數(shù)是分別求軸角的角θ(通過(guò)矩陣的跡求反余弦)和向量a(旋轉(zhuǎn)矩陣特征值1對(duì)應(yīng)的特征向量),從李代數(shù)到李群就是羅德羅杰斯公式。

三維變換:李群是四元變換矩陣,李代數(shù)是六維向量,從李群到李代數(shù)同樣先求角和向量,然后需要求t,從李代數(shù)到李群的話通過(guò)上面的公式計(jì)算。


32. 求導(dǎo)


?33. Mat是如何訪問(wèn)元素的?先訪問(wèn)行還是先訪問(wèn)列?

Mat訪問(wèn)像素一共有三種方法:使用at()方法、使用ptr()方法、使用迭代器、使用data指針

(1)使用at()方法:at()方法又是一個(gè)模板方法,所以在使用的時(shí)候需要傳入圖像像素的類型,例如:

?(2)使用ptr()方法: ptr()方法能夠返回指定行的地址(因此正常是先訪問(wèn)行的),然后就可以移動(dòng)指針訪其他的像素。例如

?這里需要注意的是,有時(shí)候在內(nèi)存中會(huì)為了對(duì)齊而對(duì)末尾的像素有填充,而有時(shí)候沒有填充。可以使用isContinue()來(lái)訪問(wèn)圖像是否有填充,對(duì)于沒有填充的圖像,即連續(xù)的圖像來(lái)說(shuō),遍歷的時(shí)候就可以只要一層循環(huán)就可以了,他會(huì)自己換行將圖像變成一維的來(lái)處理。

(3)使用迭代器:對(duì)Mat類型來(lái)說(shuō),他的迭代器類型可以使用MatIterator_或者M(jìn)at_::Iterator類型,具體使用如下

?用這兩個(gè)迭代器便可以指定Mat對(duì)象的迭代器,注意需要傳入模板參數(shù)。對(duì)迭代器的初始化與C++中的STL一致。

?遍歷也和前面指針一樣,從圖像左上角第一個(gè)像素開始遍歷三個(gè)字節(jié),然后第二個(gè)字節(jié),依次遍歷,到第一行遍歷完后,就會(huì)到第二行來(lái)遍歷。

(4)使用data指針:用Mat存儲(chǔ)一幅圖像時(shí),若圖像在內(nèi)存中是連續(xù)存儲(chǔ)的(Mat對(duì)象的isContinuous == true),則可以將圖像的數(shù)據(jù)看成是一個(gè)一維數(shù)組,而data(uchar*)成員就是指向圖像數(shù)據(jù)的第一個(gè)字節(jié)的,因此可以用data指針訪問(wèn)圖像的數(shù)據(jù),從而加速M(fèi)at圖像的訪問(wèn)速度。

一般經(jīng)過(guò)裁剪的Mat圖像,都不再連續(xù)了,如cv::Mat crop_img = src(rect);crop_img 是不連續(xù)的Mat圖像,如果想轉(zhuǎn)為連續(xù)的,最簡(jiǎn)單的方法,就是將不連續(xù)的crop_img 重新clone()一份給新的Mat就是連續(xù)的了,例如

34. 寫出單目相機(jī)的投影模型,畸變模型。

投影模型一般應(yīng)該都知道寫,但是畸變模型就不一定了…參考《視覺SLAM十四講》

投影模型如下:

?注意啊,這里空間點(diǎn)是非齊次坐標(biāo),而像素變成了齊次坐標(biāo),如果空間點(diǎn)也是齊次坐標(biāo)的話,需要講變換矩陣寫成3×4

的矩陣,最后一列全為0;。

畸變模型如下:

畸變模型分為徑向畸變切向畸變,徑向畸變?nèi)缦拢? ?

切向畸變?nèi)缦拢? ?

組合上面兩式,通過(guò)五個(gè)畸變系數(shù)找到空間點(diǎn)在像素平面上的正確位置:

1.將三維空間點(diǎn)P(X,Y,Z)投影到歸一化圖像平面。設(shè)它的歸一化坐標(biāo)為

2.對(duì)歸一化平面上的點(diǎn)進(jìn)行徑向畸變和切向畸變糾正

3.將糾正后的點(diǎn)通過(guò)內(nèi)參數(shù)矩陣投影到像素平面,得到該點(diǎn)在圖像上的正確位置?

?值得一提的是,存在兩種去畸變處理(Undistort,或稱畸變校正)做法。我們可以選擇先對(duì)整張圖像進(jìn)行去畸變,得到去畸變后的圖像,然后討論此圖像上的點(diǎn)的空間位置?;蛘?,我們也可以先考慮圖像中的某個(gè)點(diǎn),然后按照去畸變方程,討論它去畸變后的空間位置。二者都是可行的,不過(guò)前者在視覺 SLAM 中似乎更加常見一些。

35. 安裝2D lidar的平臺(tái)勻速旋轉(zhuǎn)的時(shí)候,去激光數(shù)據(jù)畸變,寫代碼

激光雷達(dá)里面提到的畸變一般指運(yùn)動(dòng)畸變,如果激光數(shù)據(jù)幀率較同時(shí)機(jī)器人在運(yùn)動(dòng)時(shí)就會(huì)出現(xiàn)如下圖所示情況:

?參考激光slam理論與實(shí)踐(三):傳感器數(shù)據(jù)處理之激光雷達(dá)運(yùn)動(dòng)畸變?nèi)コ?/p>

有兩種方法:純估計(jì)方法里程計(jì)輔助方法,其中:

純估計(jì)方法:未知對(duì)應(yīng)點(diǎn)的求解方法,采用極大似然估計(jì)方法,而已知對(duì)應(yīng)點(diǎn)的話采用ICP,流程如下:

(1)尋找對(duì)應(yīng)點(diǎn);

(2)根據(jù)對(duì)應(yīng)點(diǎn),計(jì)算R與T;

(3)對(duì)點(diǎn)云進(jìn)行轉(zhuǎn)換,計(jì)算誤差;

(4)不斷迭代,直到誤差小于某一值。

里程計(jì)輔助方法:用CPU讀取激光雷達(dá)數(shù)據(jù),同時(shí)單片機(jī)上傳里程計(jì)數(shù)據(jù),兩者進(jìn)行時(shí)間同步,在CPU上統(tǒng)一進(jìn)行運(yùn)動(dòng)畸變?nèi)コ鞒倘缦拢?/p>

(1)已知當(dāng)前激光幀的起始時(shí)間

(2)兩個(gè)激光束間的時(shí)間間隔?t

(3)里程計(jì)數(shù)據(jù)按照時(shí)間順序存儲(chǔ)在一個(gè)隊(duì)列里。

(4)求解當(dāng)前幀激光數(shù)據(jù)中的每一個(gè)激光點(diǎn)對(duì)應(yīng)的里程計(jì)數(shù)據(jù)(即機(jī)器人位姿)

(5)根據(jù)求解的位姿把所有的激光點(diǎn)轉(zhuǎn)換到同一坐標(biāo)系下

(6)重新封裝成一幀激光數(shù)據(jù)發(fā)布出去

36. 給兩組已經(jīng)匹配好的3D點(diǎn),計(jì)算相對(duì)位姿變換,寫代碼

匹配兩組已知坐標(biāo)的3D點(diǎn)當(dāng)然是采用ICP,參考《視覺SLAM十四講》,ICP的解法一共有兩種:SVD方法非線性優(yōu)化方法,下面過(guò)一遍SVD方法的推導(dǎo)過(guò)程:? ? ? ? ? ? ? ? ? ? ?

構(gòu)建最小二乘的代價(jià)函數(shù),求得使誤差平方和達(dá)到最小的R,t? ? ? ????

定義兩組點(diǎn)的質(zhì)心? ? ? ??

對(duì)代價(jià)函數(shù)做如下處理:

?上面三項(xiàng)中最后一項(xiàng)求和為零,因此代價(jià)函數(shù)變?yōu)?/p>

?第一項(xiàng)只和R有關(guān),因此我們可以先求得一個(gè)R使得第一項(xiàng)最小然后再求t,我們記去質(zhì)心的點(diǎn)分別為

,我們對(duì)第一項(xiàng)展開得:

?第一項(xiàng)和第二項(xiàng)都與R無(wú)關(guān),因此最后優(yōu)化目標(biāo)函數(shù)變?yōu)椋?/p>

最后通過(guò)SVD方法求得使得上述代價(jià)函數(shù)最小的R,先定義矩陣:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

對(duì)其進(jìn)行SVDF分解? ? ? ? ? ??

?當(dāng)W滿秩時(shí),R為:? ? ? ? ? ? ? ? ? ? ? ? ?

? ?解得R后就可以進(jìn)一步求得t。代碼如下:

37. ORB-SLAM初始化的時(shí)候?yàn)槭裁匆瑫r(shí)計(jì)算H矩陣和F矩陣?

簡(jiǎn)單地說(shuō),因?yàn)槌跏蓟臅r(shí)候如果出現(xiàn)純旋轉(zhuǎn)或者所有特征點(diǎn)在同一個(gè)平面上的情況,F(xiàn)矩陣會(huì)發(fā)生自由度退化,而這個(gè)時(shí)候H矩陣會(huì)有較小誤差,因此要同時(shí)計(jì)算H矩陣和F矩陣,那么這里補(bǔ)充兩個(gè)問(wèn)題:

(1)ORB SLAM是怎樣選用哪個(gè)矩陣去恢復(fù)旋轉(zhuǎn)和平移的呢?

這部分代碼是這個(gè)樣子的:

?計(jì)算SF和SH的公式如下:

?其中:? ? ? ? ? ? ? ? ?

然后SH和SF的比值公式如果結(jié)果大于0.4的話就選擇H矩陣,如果小于0.4的話就選擇F矩陣來(lái)進(jìn)行初始化。

(2)F矩陣退化會(huì)發(fā)生在哪些情況下?

F矩陣會(huì)在兩種條件下發(fā)生退化,準(zhǔn)確地說(shuō)是三種,第一種是發(fā)生在僅旋轉(zhuǎn)的情況下,第二種是發(fā)生在所有空間點(diǎn)共面的情況下,第三種是所有空間點(diǎn)和兩個(gè)攝像機(jī)中心在一個(gè)二次曲面上,有可能發(fā)生退化(第三種情況暫時(shí)不予討論,可參看《多視圖幾何》一書),下面我們來(lái)看下他們?yōu)槭裁磿?huì)退化:

第一種情況:僅發(fā)生旋轉(zhuǎn),這個(gè)比較好理解,基礎(chǔ)矩陣滿足? ? ? ??

在這種情況下,t是零向量,此時(shí)求得的基礎(chǔ)矩陣是零矩陣,因此無(wú)法通過(guò)下面的公式求得基礎(chǔ)矩陣? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

第二種情況:所有空間點(diǎn)在一個(gè)平面上,這種情況下,匹配點(diǎn)的點(diǎn)集

滿足射影棉變換,即

,這時(shí)基礎(chǔ)矩陣的方程變?yōu)? ? ? ?

注意這時(shí)只要

是一個(gè)任意的反對(duì)稱矩陣都滿足這個(gè)方程,因此F矩陣可以寫成? ? ? ? ? ?

S為任意的反對(duì)稱矩陣,因此這種情況下只能求出來(lái)的F矩陣是一個(gè)三參數(shù)簇,而不是一個(gè)具體的解。

這里再補(bǔ)充一點(diǎn),我們還要區(qū)分好退化和簡(jiǎn)化的區(qū)別,什么情況下會(huì)發(fā)生F矩陣的簡(jiǎn)化呢?

第一種情況:純平移運(yùn)動(dòng)(就是沿著相機(jī)坐標(biāo)系的z軸運(yùn)動(dòng)),這種情況下F矩陣簡(jiǎn)化成了一個(gè)反對(duì)稱矩陣,并且只有兩個(gè)自由度(反對(duì)稱矩陣并且尺度不變性),因此兩組匹配點(diǎn)就可以求解這種情況,因此這種情況下,上面退化的第二種情況就不會(huì)發(fā)生了,因?yàn)閮山M匹配點(diǎn)構(gòu)成的兩個(gè)空間點(diǎn)肯定都是公面的。

第二種情況:純平面運(yùn)動(dòng)(就是沿著相機(jī)坐標(biāo)系的x軸運(yùn)動(dòng)),這種情況下F矩陣的對(duì)稱部分秩為2(具體為什么可能需要查資料推導(dǎo)了),所以會(huì)在原本的F矩陣上再添加一個(gè)約束,使得自由度變成六個(gè)自由度。

第三種情況:標(biāo)定之后的情形,其實(shí)就是F矩陣在把內(nèi)參獲得之后就變成了E矩陣,自由度變成五個(gè)自由度,這個(gè)沒什么好說(shuō)的。

38. 說(shuō)一下Dog-Leg算法

參考非線性最小二乘法之Gauss Newton、L-M、Dog-Leg

Dog-Leg算法是一種高斯牛頓法和最速下降法混合使用的方法,LM法也是這樣一種方法,這兩者不同的是,LM法采用的是使用一個(gè)阻尼項(xiàng)λ來(lái)控制下降的速度在一個(gè)合理的半徑內(nèi),如果λ較小的話說(shuō)明二階近似較好,方法更加接近于高斯牛頓法,如果λ較大的話說(shuō)明二階近似較差,方法更加接近毓最速下降法

Dog-Leg算法是怎么做的呢?在這之前我們要先回顧下最速下降法和高斯牛頓法中:

最速下降法:在《視覺SLAM十四講》中也提到,最速下降法的增量方向是

,沿著反向梯度方向前進(jìn)一個(gè)補(bǔ)償λ即可進(jìn)行梯度下降,那么λ取多少合適呢?十四講中并沒有說(shuō),Dog-Leg算法中給出了評(píng)判標(biāo)準(zhǔn):

假設(shè)

?其中

是最速下降法下降方向,使得上式最小,對(duì)α 求導(dǎo)得

因此對(duì)于最速下降法有

高斯牛頓法:這種方法當(dāng)中是可以同時(shí)求得下降方向和下降大小的

然后接著介紹信賴域,所謂信賴域就是將下降范圍控制在這個(gè)區(qū)域內(nèi),在這個(gè)范圍內(nèi)二階泰勒展開能有較好的近似,也即是說(shuō)不管我們是選擇高斯牛頓法還是最速下降法都需要滿足

,二階近似才能較好成立,因此Dog-Leg法給出了如下準(zhǔn)則:

?其中

為,上式中第一種情況迭代后下降的點(diǎn)為B點(diǎn)(因?yàn)槭菑牧硪粋€(gè)博客扒的圖,所以里面符號(hào)不一樣,其中pB指的是高斯牛頓的下降方向,pU指的是最速下降法下降方向)

?第二種情況為迭代后下降的點(diǎn)為黃色星星點(diǎn)

?第二種情況為迭代后下降的點(diǎn)為黃色星星點(diǎn)

?由此可見通過(guò)上式成功地將下降區(qū)域控制在了信賴區(qū)域內(nèi),那么信賴區(qū)域的半徑Δ是怎么更新的呢?如下:? ? ?

其中? ? ? ? ? ? ? ? ? ?

綜上所述,Dog-Leg的步驟如下:

step1:初始化

step2:求解梯度

,如果

,則退出,否則繼續(xù)。如果

,則退出,否則繼續(xù)。


step3:如果半徑

,則退出迭代;否則繼續(xù);

step4:分別根據(jù)GaussNewton法和最快下降法計(jì)算

,然后計(jì)算最快下降法的迭代步長(zhǎng)

step5:根據(jù)

,

和信賴區(qū)域半徑

,來(lái)計(jì)算Dog-Leg步進(jìn)值

。若

,則退出迭代;否則繼續(xù)。

step6:

,計(jì)算增益比

重復(fù)step2。

對(duì)于?1,?2,?3可以選取任意小的值如

?,只是作為迭代的終止條件,其值得選取對(duì)最終的收斂結(jié)果影響不大。

對(duì)比可以進(jìn)一步發(fā)現(xiàn)LM法是通過(guò)阻尼器λ控制下降范圍的,λ的不同會(huì)導(dǎo)致LM法跟接近于高斯牛頓法還是更接近于最速下降法,而Dog-Leg是先計(jì)算高斯牛頓法和最速下降法的結(jié)果,然后根據(jù)兩者結(jié)果以及信賴區(qū)域半徑來(lái)確定最后迭代采用那個(gè)結(jié)果。

39. Vins-Mono里面什么是邊緣化?First Estimate Jacobian?一致性?可觀性?

邊緣化其實(shí)簡(jiǎn)單說(shuō)就是將滑窗中丟棄的圖像幀的信息保留下來(lái)傳遞給剩余變量的方式

First Estimate Jacobian是為了解決新測(cè)量信息和舊的先驗(yàn)信息構(gòu)建新的系統(tǒng)時(shí),對(duì)某一優(yōu)化變量求雅克比的線性化點(diǎn)不同導(dǎo)致信息矩陣的零空間發(fā)生變化,不可觀的變量變成可觀變量的問(wèn)題,做法就是保證變臉的線性化點(diǎn)不變。

一致性應(yīng)該指的就是線性化點(diǎn)的一致不變,而可觀性的定義和現(xiàn)代控制理論中能觀性定義是一致的,即通過(guò)測(cè)量獲得狀態(tài)變量的信息,即該變量是能觀的這里給出在深藍(lán)學(xué)院的課程中給定一種定義:

對(duì)于測(cè)量系統(tǒng) z=h(θ)+ε, 其中

為測(cè)量值, θ∈Rd為系統(tǒng)狀態(tài)量,ε為測(cè)量噪聲向量。h(·)是個(gè)非線性函數(shù),將狀態(tài)量映射成測(cè)量。對(duì)于理想數(shù)據(jù),如果以下條件成立,則系統(tǒng)狀態(tài)量θ可觀:

40. 說(shuō)一下VINS-Mono的優(yōu)缺點(diǎn)

VINS-Mono缺點(diǎn)網(wǎng)上總結(jié)得好像不是很多,我根據(jù)我的經(jīng)驗(yàn)總結(jié)下面幾個(gè)缺點(diǎn):

(1)VINS-Mono的前段是采用的提取關(guān)鍵點(diǎn)然后采用光流法追蹤,因此對(duì)于弱紋理,關(guān)鍵點(diǎn)少的環(huán)境魯棒性和精度差;

(2)同樣還是因?yàn)榍岸蔚膯?wèn)題,因?yàn)闆]有提取特征描述子,而是使用光流法進(jìn)行的追蹤匹配,一旦畫面模糊或者圖像丟失,相機(jī)就會(huì)丟,而且沒有重定位模塊;

(3)在恒速運(yùn)動(dòng)下,會(huì)使得IMU有一個(gè)自由度不客觀,因此會(huì)發(fā)生漂移。

41. 推導(dǎo)一下VINS-Mono里面的預(yù)積分公式

參考博客VINS-Mono關(guān)鍵知識(shí)點(diǎn)總結(jié)——預(yù)積分和后端優(yōu)化IMU部分

42. 在給定一些有噪聲的GPS信號(hào)的時(shí)候如何去精準(zhǔn)的定位?

43. 如何標(biāo)定IMU與相機(jī)之間的外參數(shù)?

目前我還沒有實(shí)際標(biāo)定過(guò),標(biāo)定方法可以參考賀博的博客Kalibr 標(biāo)定雙目?jī)?nèi)外參數(shù)以及 IMU 外參數(shù),像Intel出的D435i是已經(jīng)標(biāo)定號(hào)外參數(shù)的,另外在VINS-mono中可以對(duì)相機(jī)的外參數(shù)進(jìn)行估計(jì)。

44. 給你xx誤差的GPS,給你xx誤差的慣導(dǎo)你怎么得到一個(gè)cm級(jí)別的地圖?

45. 計(jì)算H矩陣和F矩陣的時(shí)候有什么技巧呢?

其中我能想到的技巧有兩點(diǎn),第一個(gè)是RANSAC操作,第二個(gè)是歸一化操作,RANSAC操作前面已經(jīng)解釋過(guò)了,這里主要來(lái)分析下歸一化操作,在《多視圖幾何》中提到了一種歸一化八點(diǎn)法,方法是先用歸一化矩陣對(duì)圖像坐標(biāo)進(jìn)行平移和尺度縮放,然后利用八點(diǎn)法求解單應(yīng)或者基礎(chǔ)矩陣,最后再利用歸一化矩陣恢復(fù)真實(shí)的單應(yīng)或者基礎(chǔ)矩陣,歸一化具體操作和優(yōu)勢(shì)如下:

具體操作:又稱各項(xiàng)同性縮放(非同性縮放有額外開銷,但是效果并未提升),步驟如下

(1)對(duì)每幅圖像中的坐標(biāo)進(jìn)行平移(每幅圖像的平移不同)使點(diǎn)集的形心移至原點(diǎn)

(2)對(duì)坐標(biāo)系進(jìn)行縮放使得點(diǎn)x=(x,y,w)中的x,y,w總體上有一樣的平均值,注意,對(duì)坐標(biāo)方向,選擇的是各向同性,也就是說(shuō)一個(gè)點(diǎn)的x和y坐標(biāo)等量縮放

(3)選擇縮放因子使得點(diǎn)x到原點(diǎn)的平均距離等于

優(yōu)勢(shì):

(1)提高了結(jié)果的精度;

(2)歸一化步驟通過(guò)為測(cè)量數(shù)據(jù)選擇有效的標(biāo)準(zhǔn)坐標(biāo)系,預(yù)先消除了坐標(biāo)變換的影響,使得八點(diǎn)法對(duì)于相似變換不變。

46. 給一組點(diǎn)云,從中提取平面。

應(yīng)該有很多方法的,慢慢補(bǔ)充:

(1)區(qū)域生長(zhǎng)法:首先依據(jù)點(diǎn)的曲率值對(duì)點(diǎn)進(jìn)行排序,之所以排序是因?yàn)椋瑓^(qū)域生長(zhǎng)算法是從曲率最小的點(diǎn)開始生長(zhǎng)的,這個(gè)點(diǎn)就是初始種子點(diǎn),初始種子點(diǎn)所在的區(qū)域即為最平滑的區(qū)域,從最平滑的區(qū)域開始生長(zhǎng)可減少分割片段的總數(shù),提高效率,設(shè)置一空的種子點(diǎn)序列和空的聚類區(qū)域,選好初始種子后,將其加入到種子點(diǎn)序列中,并搜索鄰域點(diǎn),對(duì)每一個(gè)鄰域點(diǎn),比較鄰域點(diǎn)的法線與當(dāng)前種子點(diǎn)的法線之間的夾角,小于平滑閥值的將當(dāng)前點(diǎn)加入到當(dāng)前區(qū)域,然后檢測(cè)每一個(gè)鄰域點(diǎn)的曲率值,小于曲率閥值的加入到種子點(diǎn)序列中,刪除當(dāng)前的種子點(diǎn),循環(huán)執(zhí)行以上步驟,直到種子序列為空

(2)隨機(jī)抽樣一致算法

(3)基于凸包的凹點(diǎn)挖掘算法:

1.提取點(diǎn)云的凸包

2.計(jì)算凸包每條邊的頂點(diǎn)的點(diǎn)密度(即該點(diǎn) K 個(gè)臨近點(diǎn)到該點(diǎn)的距離平均值)

3.如果頂點(diǎn)點(diǎn)密度大于所在邊的長(zhǎng)度的 X 倍,則刪除該邊,并從內(nèi)部點(diǎn)中選擇出一個(gè)滿足夾角最大的點(diǎn),插入邊界邊,形成兩條新的邊界邊

4.迭代 2 和 3,一直到全部邊界邊的 X 倍小于其端點(diǎn)的點(diǎn)密度,算法結(jié)束

(4)基于 Delaunay 三角網(wǎng)的輪廓提取算法:

A. 不使用輔助點(diǎn):

1.首先對(duì)點(diǎn)云進(jìn)行 Delaunay 三角構(gòu)網(wǎng)

2.同上,判斷每條網(wǎng)格邊長(zhǎng)度的X倍和其端點(diǎn)的點(diǎn)密度之間的大小關(guān)系,并刪除長(zhǎng)的網(wǎng)格邊

3.提取只屬于一個(gè)三角形的邊界,作為邊界邊

4.分類排序,得到有順序關(guān)系的內(nèi)外輪廓

B. 使用輔助點(diǎn):

1.手動(dòng)在點(diǎn)云的邊界附近選點(diǎn)

2.Delaunay構(gòu)網(wǎng)

3.判斷每個(gè)三角形,如果其中一個(gè)點(diǎn)是輔助點(diǎn),而另外兩個(gè)點(diǎn)是點(diǎn)云中的點(diǎn),則連接這兩個(gè)點(diǎn)做為邊界邊

4.分類排序,得到有順序關(guān)系的內(nèi)外輪廓

參考提取平面點(diǎn)云的輪廓

47. 給一張圖片,知道相機(jī)與地面之間的相對(duì)關(guān)系,計(jì)算出圖的俯視圖。

參考如何計(jì)算一張圖片的俯視圖?

簡(jiǎn)單地說(shuō)利用射影變換,將原本不垂直的線垂直化(用多視圖幾何上的話說(shuō)就是消除透視失真),如下圖所示

?理論推導(dǎo)如下:

從世界坐標(biāo)系到圖像坐標(biāo)系的變換如下:

?上面的透視變換(射影變換)是將一個(gè)平面上的點(diǎn)投影到另外一個(gè)平面上去,因此上面的空間點(diǎn)[x0,y0,z0,1] 也在同一平面上,我們不妨設(shè)第三維坐標(biāo)為0,有:

?上式可以簡(jiǎn)化為

?這就變化了求解一個(gè)單應(yīng)矩陣,采用四對(duì)點(diǎn)就可以進(jìn)行求解。

因此針對(duì)上面那個(gè)例子我們的實(shí)際操作步驟如下:

(1)灰度化處理

(2)濾波處理

(3)邊緣檢測(cè)

(4)尋找四個(gè)點(diǎn)——霍夫變換直線識(shí)別

(5)計(jì)算 H 矩陣

(6)消除透視失真

48. 雙線性插值如何去做,寫公式。

有同學(xué)肯定會(huì)好奇為嘛會(huì)有這個(gè)題,這個(gè)問(wèn)題是承接上一個(gè)問(wèn)題來(lái)的,在進(jìn)行透視變換時(shí)會(huì)遇到的一個(gè)實(shí)際問(wèn)題如下圖所示


右圖(原始圖像)中的p點(diǎn)像素(x0,y0)為整數(shù),而到左圖中)(變換后的圖像)中的p′點(diǎn)像素(x′0,y′0)就不一定是整數(shù),這如何操作呢?一般就是用雙線性插值去做。

我們可以發(fā)線,p′會(huì)落在(x1,y1),(x1+1,y1),(x1+1,y1+1),(x1,y1+1)這四個(gè)相鄰點(diǎn)的中間,因此我們就要利用(x1,y1),(x1+1,y1),(x1+1,y1+1),(x1,y1+1),(x1,y1+1),的像素值來(lái)計(jì)算(x′0,y′0)這點(diǎn)的像素值


其實(shí)很好記憶的,看下面這張圖


寫公式的話記住(x1+1,y1+1)前面的系數(shù)是ab abab

49. RGB-D的SLAM和RGB的SLAM有什么區(qū)別?

網(wǎng)上討論這個(gè)的實(shí)在太多,我個(gè)人覺得單目比較困難點(diǎn)的就是初始化(純旋轉(zhuǎn)不行,對(duì)著平面不行)和尺度問(wèn)題(需要用Sim解決回環(huán)),RGBD-SLAM的話因?yàn)橛猩疃纫虼顺叨葐?wèn)題解決了,再環(huán)境重建方面會(huì)有天然的優(yōu)勢(shì)…答得不全,可以再作補(bǔ)充

50. 什么是ORB特征? ORB特征的旋轉(zhuǎn)不變性是如何做的? BRIEF算子是怎么提取的?

ORB特征指的是Oriented FAST and rotated BREIF,包括改進(jìn)后的FAST角點(diǎn)和BREIF特征子,ORB特征的旋轉(zhuǎn)不變形主要是通過(guò)計(jì)算半徑r范圍內(nèi)像素點(diǎn)的一階矩,連接質(zhì)心到特征點(diǎn)的向量作為主方向來(lái)對(duì)周圍像素進(jìn)行旋轉(zhuǎn),然后提取BRIEF特征子,BRIEF特征描述子通過(guò)計(jì)算出來(lái)的一個(gè)二進(jìn)制串特征描述符來(lái)進(jìn)行提取的。

51. ORB-SLAM中的特征是如何提取的?如何均勻化的?

ORB描述子的提取流程:

1.輸入圖像,并對(duì)輸入圖像進(jìn)行預(yù)處理,將其轉(zhuǎn)換成灰度圖像;

2.初始化參數(shù),包括特征點(diǎn)數(shù)量nfeatures,尺度scaleFactor,金字塔層數(shù)nlevel,初始閾值iniThFAST,最小閾值minThFAST等參數(shù);

3.計(jì)算金字塔圖像,使用8層金字塔,尺度因子為1.2,則通過(guò)對(duì)原圖像進(jìn)行不同層次的resize,可以獲得8層金字塔的圖像;

4.計(jì)算特征點(diǎn):

(1)將圖像分割成網(wǎng)格,每個(gè)網(wǎng)格大小為WW=3030像素;

(2)遍歷每個(gè)網(wǎng)格;

(3)對(duì)每個(gè)網(wǎng)格提取FAST關(guān)鍵點(diǎn),先用初始閾值iniThFAST提取,若提取不到關(guān)鍵點(diǎn),則改用最小閾值minThFAST提取。(注意,初始閾值一般比最小閾值大)

5.對(duì)所有提取到的關(guān)鍵點(diǎn)利用八叉樹的形式進(jìn)行劃分:

(1)按照像素寬和像素高的比值作為初始的節(jié)點(diǎn)數(shù)量,并將關(guān)鍵點(diǎn)坐標(biāo)落在對(duì)應(yīng)節(jié)點(diǎn)內(nèi)的關(guān)鍵點(diǎn)分配入節(jié)點(diǎn)中;

(2)根據(jù)每個(gè)節(jié)點(diǎn)中存在的特征點(diǎn)數(shù)量作為判斷依據(jù),如果當(dāng)前節(jié)點(diǎn)只有1個(gè)關(guān)鍵點(diǎn),則停止分割。否則繼續(xù)等分成4份;

(3)按照上述方法不斷劃分下去,如圖所示,可見出現(xiàn)一個(gè)八叉樹的結(jié)構(gòu),終止條件是節(jié)點(diǎn)的數(shù)目Lnode大于等于要求的特征點(diǎn)數(shù)量nfeatures;

(4)對(duì)滿足條件的節(jié)點(diǎn)進(jìn)行遍歷,在每個(gè)節(jié)點(diǎn)中保存響應(yīng)值最大的關(guān)鍵點(diǎn),保證特征點(diǎn)的高性能;

?6.對(duì)上述所保存的所有節(jié)點(diǎn)中的特征點(diǎn)計(jì)算主方向,利用灰度質(zhì)心的方法計(jì)算主方向,上一講中我們已經(jīng)講解過(guò)方法,這講就不再贅述了;

7.對(duì)圖像中每個(gè)關(guān)鍵點(diǎn)計(jì)算其描述子,值得注意的是,為了將主方向融入BRIEF中,在計(jì)算描述子時(shí),ORB將pattern進(jìn)行旋轉(zhuǎn),使得其具備旋轉(zhuǎn)不變性;參考ORBSLAM2中ORB特征提取的特點(diǎn)


(文章轉(zhuǎn)載至深藍(lán)學(xué)院學(xué)員總結(jié)--彭季超)

近期仍然會(huì)陸續(xù)放送面試題庫(kù)類文章,點(diǎn)贊加關(guān)注,方便及時(shí)收取更多干貨喲^-^

文章中若有需要討論的問(wèn)題,歡迎評(píng)論或私信交流!


萬(wàn)字干貨!視覺SLAM面試題匯總(19年秋招)第二部分的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
东乡县| 扶余县| 宣恩县| 乡宁县| 新竹县| 台东县| 乌恰县| 丹寨县| 青田县| 普安县| 兴业县| 定兴县| 亚东县| 忻城县| 雷山县| 五莲县| 大田县| 花莲县| 乌拉特前旗| 广南县| 日喀则市| 平湖市| 房山区| 凤庆县| 拜城县| 库伦旗| 呈贡县| 沛县| 曲靖市| 彰化县| 孟州市| 石河子市| 株洲市| 收藏| 洪湖市| 通化县| 花垣县| 麦盖提县| 贵南县| 敦化市| 定安县|