SLAM和三維重建有什么區(qū)別?
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
本文轉自:新機器視覺Qiang
回答中很多人提SLAM比三維重建多了一個L(location),我想也許可以稍微深入一點。
我們看一下定義:
(1)SLAM:同步定位與地圖構建;定誰的位?相機的位,相機在機器人身上,就是定機器人的位。建誰的地圖?相機經過地方的地圖。二者結合,才能確定機器人在某個地圖中的具體位置,和這個場景(地圖)下的連續(xù)運動軌跡。
(2)三維重建(SFM):從運動恢復結構。我覺得更像是構建目標的三維模型。然后,我們看一下流行算法的效果:
SLAM:藍色表示運動位置。

圖1:LSD-SLAM-運動軌跡和稀疏的場景地圖,黃色表示位置之間的約束,這是優(yōu)化問題,不展開。

圖2:ORBSLAM2-運動軌跡和稠密(Dense)地圖
SFM:

圖3:KinectFusion-構建目標三維地圖

圖4:ElasticFusion-構建場景地圖
我們可以看出,SFM中構建的三維模型是很漂亮的,目標是人,就構建人,目標是是物,就構建人,目標是地圖,就構建地圖的三維模型,所以我更愿意定義SFM:構建目標的三維模型。
SLAM(側重定位)和SFM(側重建圖)聯(lián)系很大的,大佬們?yōu)槭裁匆堰@兩個東西分開?既估計出相機的運動軌跡,又把經過所有的地方(整個場景包括人,桌子,椅子)都構建出來,這不是更perfect的方案嗎?
因為.....做不到,計算量達不到。
在SLAM中,現(xiàn)有方法可以做到小場景下的“相對”稠密化建圖(圖2),而在大場景下(圖1)是難以實現(xiàn)的。當你的目標是導航,就需要實時性的定位,大場景稠密地圖的讀取和儲存,現(xiàn)有硬件條件是不可能達到的,但是,越稠密的地圖才能更好的幫助機器人進行自主定位。所以,現(xiàn)在發(fā)展二十年之久的SLAM的遺留問題就有,稀疏地圖稠密化(我構建了稀疏地圖,但是為了自主導航,這個地圖不夠用),或者稠密地圖的稀疏表達(典型工作octotree)。
SLAM中的M什么時候能變成,真正能用做語義分割和識別的dense mapping,機器人的自主性會得到極大的進步
稍微修改一下這個回答,準確點說slam應該去和sfm比較,不能直接和三維重建比較。
slam最重要的作用是定位,相機要知道自己的姿態(tài),因為需要的姿態(tài)通常都是3d的,所以在恢復3d姿態(tài)的時候,使用pnp方法能得到不少3d點,這些3d點也能成為新的地圖,但是多半是稀疏的,當然這是非直接法,直接法會計算圖像梯度變換比較大的地方的深度,所以最終能得到半稀疏的地圖。slam屬于稀疏重建的范疇,它也沒有刻意要去重建某個目標,并且要求運行速度很快,通常是在線的,否則在某些場景里面就要出事故,slam要求速度大于精度,所以slam只會在關鍵幀間做BA,非關鍵幀都會使用基于filter的方法。
然后是sfm,structure from motion,它和slam的功能其實是最像的,它的目的也是為了求解相機姿態(tài),同樣也能得到3d的稀疏點,它和slam最大的不同在于它要求精度更高,能做BA的地方通常都會做BA。
三維重建是密集重建,它和前面兩個算法最大的區(qū)別在于它需要恢復深度圖出來,至少是關鍵幀的深度圖出來?;謴蜕疃葓D的通常是立體匹配,如果是rgbd的話能直接從sensor得到。
立體匹配也有兩種主流方法。我個人認為可以分為sgm一類,patchmatch一類。個人覺得最主要的區(qū)別在于patchmatch能利用前面slam或者sfm解算出來那些稀疏的3d點,然后在全圖像平面?zhèn)鞑?。sgm只能從頭開始做匹配。
當然恢復出來深度圖以后還有各種深度圖融合算法。因為對三維模型的表示也有好幾種方式,基于三角網(wǎng)的,基于voxel的,基于tsdf的。每一種的融合方法都不一樣。這是一個大的課題。總的來說,到這里,三維重建和slam已經完全不一樣了。
針對這個問題,專門請教了視覺SLAM和三維重建方面的大佬,整理如下:
區(qū)別
(1)SLAM要求實時,數(shù)據(jù)是線性有序的,無法一次獲得所有圖像,部分SLAM算法會丟失過去的部分信息;基于圖像的SfM不要求實時,數(shù)據(jù)是無序的,可以一次輸入所有圖像,利用所有信息。
(2)SLAM是個動態(tài)問題,會涉及到濾波,運動學相關的知識,而SfM主要涉及的還是圖像處理的知識。
聯(lián)系
(1)基本理論是一致的,都是多視角幾何;
(2)傳統(tǒng)方法都需要做特征值提取與匹配;
(3)都需要優(yōu)化投影誤差;
(4)回環(huán)矯正和SfM的全局注冊方法是同一件事情。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~

