跟六哥學習ORB SLAM2作業(三)

2021-10-18 16:24:47 字數 2099 閱讀 1085

利用雙目視差可以實現很多實用的功能,比如在軍事中可以用跳眼法進行測距。很多人應該記得在電視劇集《亮劍》中的名場面,李雲龍在和阪田作戰時,迫擊炮炮手王承柱同志用大拇指利用跳眼法測量了阪田指揮部的距離,然後用僅有的一顆炮彈乾掉了阪田的指揮部。

這其中就用到了雙目視差實現測距的原理。請問電視劇集中的情節是否有科學依據,請結合雙目視差分析它背後的原理及限制條件。

答:該情節有科學依據,這種方法稱為「跳眼法」,原理如下:

人兩眼距離和手臂的長度已知,根據相似三角形等比公式,只需估計出被測物到大拇指所指位置的橫向距離就可以計算出拇指到目標的距離,一般為10倍的橫向距離,精度取決於估計的橫向距離。有較大的誤差。

雙目相機的測距同樣也是利用相似三角形,但是不存在估計值,精度取決於左右眼畫素座標值是否精確,以及基線的寬度。

答:slam問題是乙個優化問題,我們要根據當前的觀測求解乙個最優的相機位姿,然而位姿的描述(r,t)是有約束的,這樣乙個帶有約束的優化問題不便於求解,因此要引入李群李代數把原問題轉化為無約束的優化問題。

優化問題少不了求導,李群不是線性空間,不滿足加法,不能求導,而李代數可以,所以要用李代數來建立關係。

答:單目相機只是三維空間的二維投影,丟失的距離維度憑藉單張影象理論上是無法恢復的,單目 slam 估計的軌跡和地圖,將與真實的軌跡、地圖,相差乙個因子,也就是所謂的尺度(scale)。由於單目 slam 無法僅憑影象確定這個真實尺度,所以又稱為尺度不確定性。

雙目視覺可以得到物體的距離,知道了距離,場景的三維結構就可以通過單個影象恢復出來,也就消除了尺度不確定性。

答:關鍵幀可以減少待優化的幀數,在保證跟蹤質量的前提下,減少冗餘,提高了計算速度。

比如我每隔固定幀數選擇乙個關鍵幀,這樣程式設計簡單,但效果不好。比如運動很慢的時候,就會選擇大量相似的關鍵幀,冗餘,運動快的時候又丟失了很多重

要的幀。

比如相鄰幀根據pose計算運動的相對大小,可以是位移也可以是旋轉或者兩個都考慮,運動足夠大(超過一定閾值)就新建乙個關鍵幀,這種方法比第一種好。但問題是如果對著同乙個物體來回掃就會出現大量相似關鍵幀。

記錄當前視角下跟蹤的特徵點數或者比例,當相機離開當前場景時(雙目或比例明顯降低)才會新建關鍵幀,避免了第2種方法的問題。缺點是資料結構和邏輯比較複雜。

參考:

大部分情況下使用恆速跟蹤模型,對應函式tracking::trackwithmotionmodel(),當使用運動模式匹配到的特徵點數較少時,就會選用參考關鍵幀來跟蹤,對應函式函式 tracking::trackreferencekeyframe()。

當trackwithmotionmodel 和 trackreferencekeyframe 都沒有跟蹤成功,位置丟失後,需要重定位,對應函式tracking::relocalization()

跟刺蝟哥一起學習設計模式 Singleton模式

設計模式的分類 從目的來看 建立型模式 負責物件建立 結構性模式 處理類與物件間的組合 行為型模式 類與物件互動中的職責分配 從範圍來看 類模式處理類與子類的靜態關係 物件模式處理物件間的動態關係 動機在軟體系統中,經常有這樣的一些特殊的類,必須保證它們在系統中只存在乙個例項,才能確保它們的邏輯正確...

跟阿彩一起學習Python(六)

總結分享是我學習的最大動力。python 的元組與列表類似。從語法格式的角度,元組使用小括號 列表使用方括號 而兩者最大的不同之處在於元組的元素不能修改。回顧一下列表的語法,並和元組對比一下。列表 演示 listex daguai xiaoguai aoliao 25 true print list...

跟燕十八學習PHP 第六天 迴圈

迴圈結構 程式語言,一般都有 for,while,do while迴圈 先看while 假設某人 心理強度 是 100 每打他一拳,心理強度減少1,當心理強度 30,就能打服.while 表示式 意思是 判斷表示式是否為真,如果為真,則執行語句.執行完語句之後,再回到while開始處,判斷表示式是否...