點擊上方「計算機視覺life」,選擇「星標」
快速獲得最新乾貨
本文轉自3D視覺工坊
自古以來,人們惆悵千年要解決的問題: 定位、定向. 當然了還有我是誰?我在哪裡?
在這個時候, SLAM與SFM 橫空出世. 這兩兄弟叱吒乾坤,成為人們解決上述問題的得力幫手.
SFMSFM即Structure From Motion.
它也稱之為傳統三維重建,這是一門計算機視覺學科的分支, 特點是把數據採集回來,然後離線處理.常見應用就是重建某建築物的3D地圖.
下面附上一些三維重建的效果圖:
SLAM也被稱為Simultaneous Localization and Mapping,翻譯過來叫同時定位與建圖.
SALM是一個概念不是算法,SLAM包含多個模塊,每個模塊都有多種算法.每種算法很複雜的,此處還是保護好自己頭髮!
整個SLAM框架可以分為前端和後端.根據不同的前端需求,我們採用不同的後端策略,後端也提出了眾多的算法理論,這些基本都是關於優化方面的東西,還是要好好保護頭髮.
附上一些SLAM效果圖
關於這兩者區別與聯繫,知乎已有前輩給出了很鮮明的解釋.
SFM和SLAM基本討論的是同一問題,不過SFM是vision方向的叫法,而SLAM是robotics方向的叫法.
SLAM所謂的Mapping,SFM叫structure;SLAM所謂的Location,SFM方向叫camera pose.
但是從出發點考慮的話,SFM主要是要完成3D reconstuction,而SLAM主要是要完成localization.這樣設計的優化目標就完全不同了.
從方法論的角度上考慮的話,傳統的SFM是不要求prediction的,real-time是不要求的.但是對於SLAM而言prediction是必須的,因為SLAM的終極目標是要real-time navigation.
而傳統的SLAM也把主要精力放在prediction上面,而且是藉助非camera的外界的手段來predict(運動模型?狀態方程?).例如acceleration sensor.
傳統SFM則把精力放在feature tracking上面了.
直到最近,SFM開始利用圖片間的optical flow做prediction,而SLAM則更加的注重了feature tracking.所以就目前而言兩個領域似有大融和趨勢.
SLAM要求實時,數據是線性有序的,無法一次獲得所有圖像,部分SLAM算法會丟失過去的部分信息;基於圖像的SFM不要求實時,數據是無序的,可以一次輸入所有圖像,利用所有信息.
SLAM是個動態問題,會涉及到濾波,運動學相關的知識,而SFM主要涉及的還是圖像處理的知識.
聯繫基本理論是一致的,都是多視角幾何.
傳統方法都需要做特徵值提取與匹配.
都需要優化投影誤差.
迴環矯正和SfM的全局註冊方法是同一件事情.
更多精彩回答可參考如下連結:
https://www.zhihu.com/question/64011093/answer/971851111?utm_source=wechat_session
目前現狀從最近幾年發展來看
SLAM: 以定位為主,以建圖為輔;且是朝輕量級,小型化方向發展,而且最近跟深度學習結合的語義SLAM也在慢慢火熱,這也跟這幾年深度學習火熱有關係,也許深度學習能解決一些SLAM的技術門檻吧.
三維重建: 以建圖為主,以定位為輔;朝大規模,大型動態場景的重建方向發展.