3D視覺的核心問題是恢復場景結構、相機位姿、和相機參數,而解決方式有兩種,一種是off-line的sfm(structure from motion),一種on-line的slam(simultaneous localization and mapping)。Slam 與sfm的區別在于,大多數slam系統是需要提前標定相機,而sfm 則不需要提前標定(通常所說的三維重建和slam的區別,嚴格意義上應該是sfm 和slam的區別)。
Sfm 可以分為以下幾類:Global SfM、Incremental SfM、Hybrid SfM、Distributed SfM,這里主要講解Global SfM和ncremental SfM(主要集中在global sfm)。
一、Global SfM workflow:
Global sfm 的內容包括rotation averaging 和anslation averaging。
Rotation averaging
觀測值:一組相機pose的相對rotation
目標:計算相機的絕對旋轉
優化:L2范數,采用L2范數的原因有兩個:1)估計一個好的旋轉初始值 2)收斂快
理論基礎:
translation averaging
觀測值:同rotation averaging 一樣,觀測值是兩一組pose之間的相對translation
目標:計算相機的絕對旋轉
優化:L1范數,原因是L1 范數對噪聲魯邦
理論基礎:
Translation averaging 在global sfm 中計算困難,原因如下:
1、 兩視圖之間的運動不能恢復尺度(tvec 是從本質矩陣中恢復出來的,但是本質矩陣的秩是5,不包含尺度,所以global sfm 是屬于三焦張量問題,即是至少tack 3幀才能進行運算。同時,global sfm 容易出現退化現象,當相機都處于同一條線上時候,對于無人機圖像來說,這個時候軌跡就會出現bending map。
解決bending map 的手段有三點:
(1)提前對相機標定
(2)以無人機為例,飛行航線不要在恒定高度上飛行
(3)融合其他傳感器,如gps 位置約束等 退化的case 如下:
? ? ?
以上分別為側面圖和俯視圖 以上結果是fusion low-cost gps的效果,但是依舊可以看出有彎曲的現象(不融合的效果特別差) 飛行方式改變,fusion low-cost gps,退化現象消失,如下:
從側面圖和俯視圖可以看出,當飛行方式發生改變,global sfm 退化現象消失。
2、 global sfm translation averaging第二個的痛點是對噪聲敏感,其不像Incremental sfm,不斷的ransac 和local ba 來減少bad EGs的影響。 如何去改善global sfm 的魯棒性:
1)如果rotation 是已知的(不夠精確),提供global rotation初始值給global sfm pipeline ,利用這些初始值在BA中增加relative rotation constraint
2)如果位置已知,sfm 增加位置約束,即最小化先驗位置和估計的位置之間的gap,位置約束可以替代slam回環(如果是low cost gps ,位置約束不能保證精度,但可以起到一個control strcture 的作用(AR 常用)—參考vins-fusion思想 ,這個openmvg 中已經實現位置約束。
二、Incremental SfM workflow:
增量sfm這里不準備太多的敘述,需要注意的是初始化選擇像對的基準:
enough matching
big baseline
三、global sfm和incremental sfm 優缺點和應用場景
應用場景:
1.當考慮速度不考慮精度的時候,并且當圖像overlap 比較大的時候,用global sfm 可以達到理想效果,因為有更多的數據去average(Feature track based translation averaging)
2.如果考慮精度,選擇Incremental sfm ,但是在大場景下,incremental sfm會隨著圖像的增多,速度越來越慢,同時由于誤差的累計,會出現drfit ,這種情況下可以采用Distributed SfM。
審核編輯:劉清
-
無人機
+關注
關注
228文章
10356瀏覽量
179693 -
SLAM
+關注
關注
23文章
419瀏覽量
31789 -
3D視覺
+關注
關注
4文章
430瀏覽量
27493
原文標題:三維重建的定位定姿算法
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論