博客專欄

EEPW首頁 > 博客 > 高翔博士:單目SLAM在移動端應(yīng)用的實(shí)現(xiàn)難點(diǎn)有哪些?(1)

高翔博士:單目SLAM在移動端應(yīng)用的實(shí)現(xiàn)難點(diǎn)有哪些?(1)

發(fā)布人:計算機(jī)視覺工坊 時間:2023-06-12 來源:工程師 發(fā)布文章
作者丨半閑居士

來源丨h(huán)ttps://www.zhihu.com/question/50385799/answer/120902345編輯丨計算機(jī)視覺life

提綱如下:

  1. 單目SLAM難點(diǎn)

  2. 視覺SLAM難點(diǎn)

  3. 可能的解決思路

圖片中非原創(chuàng)部分均已加引用,請勿盜圖,轉(zhuǎn)載請私信告知。

單目slam的障礙來自于理論和實(shí)踐兩個方面。理論障礙可以看做是固有的,無法通過硬件選型或軟件算法來解決的,例如單目初始化和尺度問題。實(shí)踐問題包括計算量,視野等,可以依靠選型、算法、軟件設(shè)計等方法來優(yōu)化。不過在同等硬件水平下,優(yōu)化也存在極限的。比如對O(1)的算法不滿意從而設(shè)計O(1/n)的算法似乎是不可能的……

---------------我是分割線-----------------

  1. 單目SLAM難點(diǎn)

單目的優(yōu)點(diǎn)是成本低,最大的局限性是測不到空間物體的距離,只有一個圖像。所以早期視覺SLAM也被稱為“只有角度的SLAM”(Bearing Only)。距離在定位中至關(guān)重要,雙目和RGBD相機(jī)的使用就是為了能夠計算(或測量)這個距離。上一個圖你們直觀體會一下距離的重要性:

圖片

很顯然,沒有距離信息,我們不知道一個東西的遠(yuǎn)近——所以也不知道它的大小。它可能是一個近處但很小的東西,也可能是一個遠(yuǎn)處但很大的東西。只有一張圖像時,你沒法知道物體的實(shí)際大小——我們稱之為尺度(Scale)。

可以說,單目的局限性主要在于我們沒法確定尺度,而在雙目視覺、RGBD相機(jī)中,距離是可以被測量到的(當(dāng)然測量也有一定的量程和精度限制)。雙目視覺和人眼類似,通過左右眼圖像的差異來計算距離——也就是所謂的立體視覺(Stereo)。RGBD則是把(通常是紅外)光投射到物體表面,再測量反射的信息來計算距離的。具體原理分結(jié)構(gòu)光和ToF兩種,在此不多做解釋,還是上圖直觀感受一下。

圖片

圖片距離未知導(dǎo)致單目SLAM存在以下問題:

  • 需要初始化
  • 尺度不確定
  • 尺度漂移

而一旦我們擁有了距離信息,上述幾條就都不是問題,這也是雙目和RGBD存在的意義。下面分別講一下以上幾條。

---------------我是分割線-----------------

1.1 初始化

單目SLAM剛開始時,只有圖像間的信息,沒有三維空間的信息。于是一個基本問題就是:怎么通過兩張圖像確定相機(jī)自身運(yùn)動,并且確定像素點(diǎn)的距離。這個問題稱為單目SLAM初始化問題。一般是通過匹配圖像特征來完成的。

圖片

匹配好的特征點(diǎn)給出了一組2D-2D像素點(diǎn)的對應(yīng)關(guān)系,但由于是單目,沒有距離信息。初始化的意義是求取兩個圖像間的運(yùn)動和特征點(diǎn)距離,所以初始化完畢后你就知道這些特征點(diǎn)的3D位置了。后續(xù)的相機(jī)運(yùn)動就可以通過3D點(diǎn)-2D點(diǎn)的匹配信息來估計。后續(xù)的問題叫PnP(Perspective n Point)。

對,你想的沒錯,單目的流程就是:初始化——PnP——PnP——……

初始化的運(yùn)動是通過對極幾何來求解的,結(jié)構(gòu)是由三角測量得到的。初始化問題是一個2D-2D求運(yùn)動結(jié)構(gòu)的問題,比3D-2D的PnP要難(信息更少,更不確定)。我不展開對極幾何求運(yùn)動的原理,但是理解它,對理解單目局限性是很有幫助的。如題主感興趣,請看Multiple View Geometry第8章。如果在知乎上寫,會占掉很大的篇幅。

對極幾何最終會分解一個本質(zhì)矩陣(Essential Matrix)(或基本矩陣(Fundametal Matrix))來得到相機(jī)運(yùn)動。但分解的結(jié)果中,你會發(fā)現(xiàn)對平移量乘以任意非零常數(shù),仍滿足對極約束。直觀地說,把運(yùn)動和場景同時放大任意倍數(shù),單目相機(jī)仍會觀察到同樣的圖像!這種做法在電影里很常見。例用用相機(jī)近距離拍攝建筑模型,影片看起來就像在真實(shí)的高樓大廈一樣(比如奧特曼打怪獸實(shí)際是兩個穿著特攝服裝的演員,多么無情的現(xiàn)實(shí))。

這個事實(shí)稱為單目的尺度不確定性(Scale Ambiguity)。所以,我們會把初始化的平移當(dāng)作單位1,而之后的運(yùn)動和場景,都將以初始化時的平移為單位。然而這個單位具體是多少,我們不知道(攤手)。并且,在初始化分解本質(zhì)矩陣時,平移和旋轉(zhuǎn)是乘在一起的。如果初始化時只有旋轉(zhuǎn)而沒有平移,初始化就失敗了——所以業(yè)界有種說法,叫做“看著一個人端相機(jī)的方式,就知道這個人有沒有研究過SLAM”。有經(jīng)驗(yàn)的人會盡量帶平移,沒經(jīng)驗(yàn)的都是原地打轉(zhuǎn)……

所以,從應(yīng)用上來說,單目需要一個帶平移的初始化過程,且存在尺度不確定問題,這是它理論上的障礙。

員工:老板你這樣移動相機(jī)不行啊,要有平移的……

老板:我花20k請你來做slam,一個初始化都搞不定?

1.2 結(jié)構(gòu)問題

由于單目沒有距離信息,所有特征點(diǎn)在第一次出現(xiàn)時都只有一個2d投影,實(shí)際的位置可能出現(xiàn)在光心與投影連線的任意一處。只有在相機(jī)運(yùn)動起來以后,才可能通過三角測量,估計特征點(diǎn)的距離。

三角測量的應(yīng)用范圍很廣,傳說高斯在十幾歲的時候就已經(jīng)用最小二乘法測量山的距離,來吊打這些二十大幾還在水paper的博士們?,F(xiàn)代天文學(xué)測星星的距離也使用三角測量。

圖片

然而三角測量的前提是——你得有三角啊。

高斯用三角測量是站在兩座山上去量另一座,這就構(gòu)成了三角。雙目視覺左右兩個相機(jī),存在一定的平移,和目標(biāo)點(diǎn)也構(gòu)成了三角。但在單目情形下,你必須移動相機(jī)之后,才可能去估計空間點(diǎn)的3D位置。換句話說,如果相機(jī)擺在那兒不動——就沒有三角了。這導(dǎo)致單目在機(jī)器人避障中應(yīng)用存在困難,不過既然在談AR我們就先不說機(jī)器人吧。

1.3 尺度漂移

用單目估計出來的位移,與真實(shí)世界相差一個比例,叫做尺度。這個比例在初始化時確定,但單純靠視覺無法確定這個比例到底有多大。進(jìn)而,由于SLAM過程中噪聲的影響,這個比♂例還不是固定不變的。當(dāng)你用單目SLAM,會發(fā)現(xiàn),咦怎么跑著跑著地圖越來越小了……

圖片

這種現(xiàn)象在當(dāng)前state-of-the-art的單目開源方案出亦會出現(xiàn),修正方法是通過回環(huán)檢測。但是有沒有出現(xiàn)回環(huán),則要看實(shí)際的運(yùn)動方式。所以……

員工:老板你這樣移動相機(jī)不行啊,要經(jīng)常把它移回去……

老板:我花20k請你來做slam,怎么搞的地圖一會兒大一會兒小,這怎么用?


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉