李 虹,宋亞婷,曹 琳,紀任鑫,陳軍鵬,吳 琨
(1.中國消防救援學院,北京 100000;2.北京航空航天大學自動化科學與電氣工程學院,北京 100000)
隨著無人機的廣泛應用,利用無人機拍攝的數據進行快速三維模型重建成為測繪、應急、VR 等領域的重要研究課題。傳統的三維重建通常使用運動恢復結構(Structure From Motion,SFM)技術[1],但SFM 整體優化非常耗時,很難達到實時處理的要求。而視覺SLAM 技術[2]基本處理框架與SFM 相似,但通過圖優化技術和并行處理達到實時效果。Artal 等[3]提出了ORB-SLAM 方法,視覺SLAM 精度和實時性都得到了提高,但沒有較好的地圖模塊。研究團隊經過改進,在ORB-SLAM 的基礎上推出了ORB-SLAM2[4],增加了雙目和RGB-D 深度相機模式,使其有了更強的應用性。Engel 等[5]提出了LSD-SLAM 算法,它是一種大規模單目SLAM 方法,通過使用關鍵幀與另一個傳入幀進行比較,可以創建更有意義的環境表示,無需存儲處理過的特征,從而實時創建半稠密的三維地圖。但上述算法依舊存在的主要問題是,位置和姿態的精度較低,并只能得到稀疏點云或者半稠密點云。
本文方法主要包括關鍵幀抽取模塊、關鍵幀匹配與整體優化模塊、密集匹配模塊。分別用3 個進程運行,并行密集匹配技術基于GPU 來實現。針對目前三維重建難以實現實時三維密集點云模型重建的缺點,提出一種實時無人機三維重建系統,在視覺SLAM 基礎上融合了無人機POS 信息、并行密集匹配和點云匹配技術。整體框架如圖1 所示。

圖1 本文算法框架流程圖
實時三維重建的各個模塊均依賴于特征提取的準確度以及速度,在本文算法中,特征的提取均采用ORB 算法[6],ORB 特征是采用FAST 關鍵點作為特征點,在圖片中隨機選取某一個像素點p,以r為半徑選取候選區域。若區域中存在一組連續且亮度均高于或低于待檢測像素亮度值與設定閾值之和的N個像素,則定義該像素點為特征點。為了使特征具有旋轉不變性,通過灰度不變性計算每一個FAST 角點的方向。其次,利用BRIEF[7]描述子作為特征點描述的特征檢測方法,具有精度高、旋轉不變性等特點。最后利用特征描述子進行特征匹配,使用KD-Tree 進行最近鄰查找,在通過兩張圖像的雙向匹配排除誤匹配點(圖2)。

圖2 FAST 角點提取結果示意圖
本文提出利用相機標定參數和POS 數據來獲取關鍵幀。如圖3 所示,視頻流數據首先需要確定第一個關鍵幀,如果特征點的數量大于100,將其設置為第一個關鍵幀,并將第一個關鍵幀設置為當前關鍵幀。根據POS 數據提供的高度信息和相機標定數據提供的焦距,以及視頻幀的尺寸值可以計算出視頻幀和當前關鍵幀所覆蓋的地面區域的重疊率。

圖3 抽取關鍵幀方法流程圖
本文通過結合POS 信息來進行模型初始化,如圖4 所示,利用POS 數據提供的位置和姿態來計算出匹配點對應的三維坐標。但是由于POS 數據的位置和姿態存在誤差,特別是姿態的誤差對三維模型的精度影響較大,引入5 點法相對定向計算立體模型的相對位姿,并將其作為約束,與投影約束一起進行圖優化整體求解,得到精度較高的三維模型。

圖4 立體三維模型的初始化流程圖
基于特征匹配結果,并結合隨機一致性采樣方法[8]可以得到誤差最小的基本矩陣。然后對基本矩陣進行奇異值分解來得到相對定向的結果,即位姿R與平移t的值。假設基本矩陣為E,對E進行SVD 分解,得
式中:U、V分別為正交矩陣,Σ 為奇異陣。則位姿R與平移t為
最后,利用重建的三維點坐標根據實際成像時目標相對位置排除錯誤的相對定向結果(圖5)。

圖5 5 點法相對定向的流程圖
當新的關鍵幀被提取后進行關鍵幀匹配,若匹配成功將根據匹配結果來提取對應的三維點,并對三維模型點云進行不斷擴充。利用連接點和特征點之間的對應關系,可以恢復出關鍵幀的位置和姿態。當關鍵幀匹配失敗后暫時保留匹配失敗的關鍵幀,并利用POS數據作為關鍵幀的位置和姿態。當后續更新關鍵幀,利用其他的關鍵幀更新匹配失敗的關鍵幀的位置和姿態,從而實現更為完整的三維重建效果。當新的關鍵幀位置和姿態的初始值計算出來后,將目前所有的關鍵幀和點云數據進行光束法的整體平差,提高位置姿態參數,以及三維點云的精度。
光束法平差數學模型:
光束平差法通常需要對旋轉矩陣進行求導,而旋轉矩陣通常因正交性質會使得優化困難。因此,本文使用李群李代數,將位姿估計轉變為無約束優化求解。假設點P在2 個關鍵幀中的投影分別為P1、P2。關鍵幀2相對關鍵幀1 的旋轉矩陣與平移分別為R和t,并采用李代數ξ 表示。假設空間中存在一點Pi,根據小孔成像模型可得
將Pi投影至圖像上存在一定的殘差,對所有點的反投影誤差進行累加求和,并需使累積誤差和最小,則可表示為
式中:通過對其線性化并對點Pi進行求導,以及對空間點P進行求導即可得到點P的最優解。因此,需要采用最小二乘法對平差求解。
在光束法整體優化的基礎上,繼續用密集匹配計算圖像中每個像素點的三維坐標。首先用并行的密集匹配技術來對圖像中的每個像素點進行匹配,通過半全局匹配實現立體相對的密集匹配與三維重建,因此每增加一個關鍵幀,就在關鍵幀和相鄰的關鍵幀之間進行密集匹配,得到新的點云數據。由于關鍵幀的位置和姿態存在誤差,所以,新的點云數據和已有的點云數據之間會出現錯位的問題。本文利用點云匹配技術來實現點云的融合,具體是采用廣義迭代最近點(Generalized Iterative Closest Point,GICP)算法[10]進行點云匹配。點云融合后可以生成三角網并進行紋理映射,最終得到具有真實紋理的三維模型(圖6)。

圖6 密集匹配流程圖
半全局匹配采用最優化能量函數的思想。主要步驟如下。
1)匹配代價計算。根據左右圖像中的灰度、梯度信息,按照相似度在視差范圍內搜索區域內進行度量。
2)匹配代價聚合。對匹配點領域內所有匹配代價求和。為了建立鄰接像素之間的聯系并優化代價矩陣,使用相鄰像素的視差值對代價矩陣進行全局優化,即每個像素在某個視差下的新代價值都會根據其相鄰像素在相同視差值或附近視差值下的代價值重新計算。這樣就得到了新的代價矩陣,可以用矩陣S 來表示。
3)視差計算。根據代價聚合結果,可以選擇出最優匹配代價。在視差計算中,使用經過代價聚合的代價矩陣S 確定每個像素的最優視差值。
4)優化視差結果。對視差圖采用左右一致性檢查算法進行優化,減少誤匹配結果產生的視差;采用剔除小連通區域算法來排除孤立的異常點,以提高結果的準確性。
實驗軟件環境為Linux 平臺,操作系統為Ubuntu18.04。模型訓練在GPU 型號為NVIDIA GeForce GTX 1660 Ti 上的設備進行,顯存為8 G。測試使用的CPU 型號i7-9750H。
圖7 展示了本文算法在無人機實時航拍數據上的三維重建結果。

圖7 三維重建效果圖
利用無人機對某區域進行航拍作為實驗分析實例,相機分辨率為4 096×2 160@30 fps 的可見光相機,拍攝路線間距為38.2 m,長度為478.1 m,曝光間距為16.1 m。航拍影像航向重疊度為70%,旁向重疊度為60%,影像的地面分辨率約為0.05 m。由圖7 可知,本文提出的方法對該區域實現了較好的實時三維重建,局部紋理特征明顯,重建密集點云精度高,在保證實時性的情況下保證了數據的質量。在三維重建完成后可以精確定位點云坐標,并且點云之間的長度及面積也有較高的計算精度。
本文深入研究了無人機航拍實時三維重建的方法,針對當前無人機三維重建過程無法保證實時性以及點云稀疏的問題,提出了一種融合POS 信息、并行密集匹配和點云匹配技術的實時三維模型重建方法。實驗結果表明,本文方法可實時重建稠密點云的三維模型,生成后的模型局部特征明顯,為測繪等領域提供了一種實時的無人機三維重建方法。