?
4. 全局位姿對齊(glob pose alignment)
輸入系統的是使用消費級的傳感器獲取的RGBD數據流,并且保證這些數據中的彩色圖像和深度圖像是時間和空間上都對齊的。圖像分辨率是640x480,頻率是30hz。我們的目的就是要找到frames之間的3D對應,然后根據這些對應信息找到剛體相機變換Ti。Ti(p) = Rip + ti(Ri為旋轉,ti為平移),Ti實現從相機系到世界系的映射。并且將系統的第一幀作為世界系的坐標系。
4.1 搜索特征匹配(Feature Correspondence Search)
在這個系統框架下,首先搜索圖像畫幀之間的saprse correspondences,包括特征提取,特征匹配和外點剔除步驟。這些稀疏的對應將會被用在接下來的dense photometric correspondences的搜索中。針對每一個input frame都要先提取sift特征點,將提取的這些點與之前所有看到的幀進行匹配。之所以使用sift特征,是因為他考慮了相機掃描過程中發生的的圖像的位移旋轉和尺度的變化。搜索correspondence的工作都是在GPU中完成的。在這樣的分辨率下,提取一幀圖像的特征和計算描述子需要4-5ms,匹配兩幅圖像需要大概0.05ms。基于以上的一些指標,該系統可以實時處理大致20k的圖像。
4.1.1 correspondece Filter
使用幾何和光度的連續性的方法來過濾掉檢測的不對的correspondences.
Key Point Correspondence Filter
圖像Fi和圖像Fj上的特征的3D correspondences, key point correspondence filter可以找到一組可以表示一個穩定的分布和連續的剛體變換的feature correspondences.對于新加入的correspondence我們計算一個剛體變換,使用Kabsch算法可以用這個剛體變化最小化當前correspondences的Pcur和Qcur之間的距離。隨后我們將執行一些條件分析,包括點Pcur和Qcur的協方差和Pcur和Qcur之間的cross-convariance、如果任何的condition numbers大于100,那么這個系統被認為是不穩定的。如果Tij下特征點的重投影誤差大于或者在上述condition number中系統被認為是不穩定的情況下,這些correspondences將被刪除。除非刪除情況不出現或者此時沒有足夠的特征點用來計算剛體變換。如果根據找到的correspindences已經計算出了一個剛體變換,那么就講Fi和Fj之間的這些correspondences刪除。
Surface Area Filter
另外,我們還檢查檢測到的特征張成出的面是否足夠大,因為我們認為,如果找到的correspondences張成的平面比較小,那么此時的correspondences趨于ambiguity.對于圖像Fi和圖像Fj,我們估計Fi圖像的3D點P張成的面的區域面積,以及Fj圖像的3D點Q張成的面的區域面積,然后我們將兩個三維的surfaces,根據他們的principal axes向平面投影。如果P和Q張成的面積不足0.032平方米,那么這組matches被認為是ambiguous并且被刪除。
Dense Verification
最后一步是執行稠密校驗,包括稠密光度校驗和稠密幾何校驗,對于圖像Fi和圖像Fj,我們使用上述通過key point correspondence filter計算得到的相對變換Tij,來對齊圖像Fi和圖像Fj之間的坐標系。為了找到有效的像素對應(pixel correspondence),我們測量重頭影兩個方向的,平均深度差別(depth discrepancy), 法向量偏差(normal deviation), 光度一致性(photoconsistancy), 并且計算這些pixel correspondences的重投影誤差。
4.2 等級化的優化(Hirerachinal Optimization)
為了能夠實時的處理成千上萬的RGBD圖像,我們使用了等級化的優化策略。輸入的連續的圖像序列被分割成小的chunk。在最低等級的優化中,我們在chunk內部實時優化。在第二等級優化中,使用所有的chunks中的代表關鍵幀以及該關鍵幀所在chunk內的相關的特征數據進行全局的優化。為了提高處理效率,這一步驟只在經過濾波的并且下采樣之后的圖像上執行。注意,為了提高效率,當有一個新的RGBD數據輸入到系統時,經過濾波和下采樣處理的彩色圖C和深度圖D被緩存下來。相機的空間位置Pi和每一個深度的法向量Ni也被計算兵器被緩存下來。
LocalIntra-Chunk Pose Optimization(chunk內部的位姿優化)
chunk內部的位姿對齊優化時基于該chunk內的11個連續的圖像幀數據的。連接的兩個chunk之間有一個重疊的圖像幀。局部位姿優化的目標是求解該chunk內任意一幀圖像相對于chunk中的第一幀圖像的變換{Ti}.通過搜索correspondences,構建代價方程,然后最小化代價方程的方式求解,代價方程中包含了稀疏特征correspondecs和dense photometric and geometric?correspondences約束。因為每一個chunk內只包含很少的連續圖像幀,并且chunk內的位姿變換也很小,所以可以將每一個Ti初始化為單位陣。為了確保局部位姿優化的精度,我們使用優化的局部軌跡對chunk內的每一對圖像實時dense verification測試,如果重投影誤差太大,大于0.05m,這個chunk就會別刪除,并且也不會被用到全局優化中來。
Per-Chunk Keyframes
一旦一個chunk已經被處理完成,我們將該chunk中的第一幀圖像定義為這個chunk的關鍵幀,同時也會計算這些關鍵幀的特征,得到keyframe feature set.根據chunk的優化的位姿估計,計算chunk內部的特征點在世界空間中的3D位置。我們將在<0.03m空間中的3D點用一個最佳的3D點來表示。一旦這個全局的關鍵幀和關鍵幀特征序列被創建,該chunk data(包括chunk內的特征點,描述子,和correspondences) 將被刪除,因為在第二層的位姿對齊中用不到他們了,但是他們的圖像還有,圖像的位姿態還有,當在全局優化中關鍵幀位姿被優化了,則這個關鍵幀所處的chunk中的其他幀的位姿將被被更新,要知道在intro-chunk優化中,我們已經知道了chunk中的任意一幀相對于第一幀的相對位姿.。
Global Inter-Chunk Pose Optimization
和chunk內的位姿優化類似,chunk間的全局位姿優化也是進行全局特征點之間的稀疏特征匹配搜索和外點剔除。如果一個關鍵幀在過去看到的關鍵幀中找到任意的匹配,那么這個關鍵幀被標記為“獨立” individual, 但是仍然被作為候選,允許被再次校驗,當將來得到關鍵幀與該關鍵幀之間有聯系。全局位姿優化需要計算所有全局關鍵幀的global alignments{Ti},同樣需要構建代價方程,最小化代價方程求解,同樣在代價方程中包括,稀疏和稠密兩種約束。使用對應的intra-chunk中優化的位姿的depta 變換來初始化全局關鍵幀的位姿。我們得到所有輸入幀的全局一致性變換,通過將對應的delta transformations作用到,chunk中的每一幀圖像,這樣就可以得chunk內沒一幀圖像的位姿。
5. Dynamic 3D Reconstruction(動態的3D重建)
需要根據最新優化的相機位姿,不斷更新重建的模型。我們采用integration和de -integration的方式來更新模型的表示。當累計誤差過大,或者特征過少導致的模型重建錯誤,可以被很好的恢復,一旦一個好的位姿估計可以獲取到。
5.1 Scene Representation
通過將RGBD數據融合到TSDF模型中來恢復場景的幾何,使用voxel hashing的方式來存儲TSDF中的數據。根據spatial harshing將TSDF存儲在一個稀疏的volumetric grid中。
5.2 Integration and De-integration
系統中分兩種pose一種是integration pose,一種是optimized pose是經過優化的位姿,首先我們按照integration pose將圖像數據融合到TSDF模型中,當位姿態被優化更新之后,我們就需要同時更新重建的模型,那么就需要按照integration pose將TSDF中的相關數據從TSDF中剔除掉,然后再按照優化后的位姿,重新將剛才被剔除出來的數據,融合到TSDF中,實現地圖更新的目的。