李 虹,宋亞婷,曹 琳,紀(jì)任鑫,陳軍鵬,吳 琨
(1.中國消防救援學(xué)院,北京 100000;2.北京航空航天大學(xué)自動化科學(xué)與電氣工程學(xué)院,北京 100000)
隨著無人機(jī)的廣泛應(yīng)用,利用無人機(jī)拍攝的數(shù)據(jù)進(jìn)行快速三維模型重建成為測繪、應(yīng)急、VR 等領(lǐng)域的重要研究課題。傳統(tǒng)的三維重建通常使用運(yùn)動恢復(fù)結(jié)構(gòu)(Structure From Motion,SFM)技術(shù)[1],但SFM 整體優(yōu)化非常耗時,很難達(dá)到實(shí)時處理的要求。而視覺SLAM 技術(shù)[2]基本處理框架與SFM 相似,但通過圖優(yōu)化技術(shù)和并行處理達(dá)到實(shí)時效果。Artal 等[3]提出了ORB-SLAM 方法,視覺SLAM 精度和實(shí)時性都得到了提高,但沒有較好的地圖模塊。研究團(tuán)隊(duì)經(jīng)過改進(jìn),在ORB-SLAM 的基礎(chǔ)上推出了ORB-SLAM2[4],增加了雙目和RGB-D 深度相機(jī)模式,使其有了更強(qiáng)的應(yīng)用性。Engel 等[5]提出了LSD-SLAM 算法,它是一種大規(guī)模單目SLAM 方法,通過使用關(guān)鍵幀與另一個傳入幀進(jìn)行比較,可以創(chuàng)建更有意義的環(huán)境表示,無需存儲處理過的特征,從而實(shí)時創(chuàng)建半稠密的三維地圖。但上述算法依舊存在的主要問題是,位置和姿態(tài)的精度較低,并只能得到稀疏點(diǎn)云或者半稠密點(diǎn)云。
本文方法主要包括關(guān)鍵幀抽取模塊、關(guān)鍵幀匹配與整體優(yōu)化模塊、密集匹配模塊。分別用3 個進(jìn)程運(yùn)行,并行密集匹配技術(shù)基于GPU 來實(shí)現(xiàn)。針對目前三維重建難以實(shí)現(xiàn)實(shí)時三維密集點(diǎn)云模型重建的缺點(diǎn),提出一種實(shí)時無人機(jī)三維重建系統(tǒng),在視覺SLAM 基礎(chǔ)上融合了無人機(jī)POS 信息、并行密集匹配和點(diǎn)云匹配技術(shù)。整體框架如圖1 所示。
圖1 本文算法框架流程圖
實(shí)時三維重建的各個模塊均依賴于特征提取的準(zhǔn)確度以及速度,在本文算法中,特征的提取均采用ORB 算法[6],ORB 特征是采用FAST 關(guān)鍵點(diǎn)作為特征點(diǎn),在圖片中隨機(jī)選取某一個像素點(diǎn)p,以r為半徑選取候選區(qū)域。若區(qū)域中存在一組連續(xù)且亮度均高于或低于待檢測像素亮度值與設(shè)定閾值之和的N個像素,則定義該像素點(diǎn)為特征點(diǎn)。為了使特征具有旋轉(zhuǎn)不變性,通過灰度不變性計算每一個FAST 角點(diǎn)的方向。其次,利用BRIEF[7]描述子作為特征點(diǎn)描述的特征檢測方法,具有精度高、旋轉(zhuǎn)不變性等特點(diǎn)。最后利用特征描述子進(jìn)行特征匹配,使用KD-Tree 進(jìn)行最近鄰查找,在通過兩張圖像的雙向匹配排除誤匹配點(diǎn)(圖2)。
圖2 FAST 角點(diǎn)提取結(jié)果示意圖
本文提出利用相機(jī)標(biāo)定參數(shù)和POS 數(shù)據(jù)來獲取關(guān)鍵幀。如圖3 所示,視頻流數(shù)據(jù)首先需要確定第一個關(guān)鍵幀,如果特征點(diǎn)的數(shù)量大于100,將其設(shè)置為第一個關(guān)鍵幀,并將第一個關(guān)鍵幀設(shè)置為當(dāng)前關(guān)鍵幀。根據(jù)POS 數(shù)據(jù)提供的高度信息和相機(jī)標(biāo)定數(shù)據(jù)提供的焦距,以及視頻幀的尺寸值可以計算出視頻幀和當(dāng)前關(guān)鍵幀所覆蓋的地面區(qū)域的重疊率。
圖3 抽取關(guān)鍵幀方法流程圖
本文通過結(jié)合POS 信息來進(jìn)行模型初始化,如圖4 所示,利用POS 數(shù)據(jù)提供的位置和姿態(tài)來計算出匹配點(diǎn)對應(yīng)的三維坐標(biāo)。但是由于POS 數(shù)據(jù)的位置和姿態(tài)存在誤差,特別是姿態(tài)的誤差對三維模型的精度影響較大,引入5 點(diǎn)法相對定向計算立體模型的相對位姿,并將其作為約束,與投影約束一起進(jìn)行圖優(yōu)化整體求解,得到精度較高的三維模型。
圖4 立體三維模型的初始化流程圖
基于特征匹配結(jié)果,并結(jié)合隨機(jī)一致性采樣方法[8]可以得到誤差最小的基本矩陣。然后對基本矩陣進(jìn)行奇異值分解來得到相對定向的結(jié)果,即位姿R與平移t的值。假設(shè)基本矩陣為E,對E進(jìn)行SVD 分解,得
式中:U、V分別為正交矩陣,Σ 為奇異陣。則位姿R與平移t為
最后,利用重建的三維點(diǎn)坐標(biāo)根據(jù)實(shí)際成像時目標(biāo)相對位置排除錯誤的相對定向結(jié)果(圖5)。
圖5 5 點(diǎn)法相對定向的流程圖
當(dāng)新的關(guān)鍵幀被提取后進(jìn)行關(guān)鍵幀匹配,若匹配成功將根據(jù)匹配結(jié)果來提取對應(yīng)的三維點(diǎn),并對三維模型點(diǎn)云進(jìn)行不斷擴(kuò)充。利用連接點(diǎn)和特征點(diǎn)之間的對應(yīng)關(guān)系,可以恢復(fù)出關(guān)鍵幀的位置和姿態(tài)。當(dāng)關(guān)鍵幀匹配失敗后暫時保留匹配失敗的關(guān)鍵幀,并利用POS數(shù)據(jù)作為關(guān)鍵幀的位置和姿態(tài)。當(dāng)后續(xù)更新關(guān)鍵幀,利用其他的關(guān)鍵幀更新匹配失敗的關(guān)鍵幀的位置和姿態(tài),從而實(shí)現(xiàn)更為完整的三維重建效果。當(dāng)新的關(guān)鍵幀位置和姿態(tài)的初始值計算出來后,將目前所有的關(guān)鍵幀和點(diǎn)云數(shù)據(jù)進(jìn)行光束法的整體平差,提高位置姿態(tài)參數(shù),以及三維點(diǎn)云的精度。
光束法平差數(shù)學(xué)模型:
光束平差法通常需要對旋轉(zhuǎn)矩陣進(jìn)行求導(dǎo),而旋轉(zhuǎn)矩陣通常因正交性質(zhì)會使得優(yōu)化困難。因此,本文使用李群李代數(shù),將位姿估計轉(zhuǎn)變?yōu)闊o約束優(yōu)化求解。假設(shè)點(diǎn)P在2 個關(guān)鍵幀中的投影分別為P1、P2。關(guān)鍵幀2相對關(guān)鍵幀1 的旋轉(zhuǎn)矩陣與平移分別為R和t,并采用李代數(shù)ξ 表示。假設(shè)空間中存在一點(diǎn)Pi,根據(jù)小孔成像模型可得
將Pi投影至圖像上存在一定的殘差,對所有點(diǎn)的反投影誤差進(jìn)行累加求和,并需使累積誤差和最小,則可表示為
式中:通過對其線性化并對點(diǎn)Pi進(jìn)行求導(dǎo),以及對空間點(diǎn)P進(jìn)行求導(dǎo)即可得到點(diǎn)P的最優(yōu)解。因此,需要采用最小二乘法對平差求解。
在光束法整體優(yōu)化的基礎(chǔ)上,繼續(xù)用密集匹配計算圖像中每個像素點(diǎn)的三維坐標(biāo)。首先用并行的密集匹配技術(shù)來對圖像中的每個像素點(diǎn)進(jìn)行匹配,通過半全局匹配實(shí)現(xiàn)立體相對的密集匹配與三維重建,因此每增加一個關(guān)鍵幀,就在關(guān)鍵幀和相鄰的關(guān)鍵幀之間進(jìn)行密集匹配,得到新的點(diǎn)云數(shù)據(jù)。由于關(guān)鍵幀的位置和姿態(tài)存在誤差,所以,新的點(diǎn)云數(shù)據(jù)和已有的點(diǎn)云數(shù)據(jù)之間會出現(xiàn)錯位的問題。本文利用點(diǎn)云匹配技術(shù)來實(shí)現(xiàn)點(diǎn)云的融合,具體是采用廣義迭代最近點(diǎn)(Generalized Iterative Closest Point,GICP)算法[10]進(jìn)行點(diǎn)云匹配。點(diǎn)云融合后可以生成三角網(wǎng)并進(jìn)行紋理映射,最終得到具有真實(shí)紋理的三維模型(圖6)。
圖6 密集匹配流程圖
半全局匹配采用最優(yōu)化能量函數(shù)的思想。主要步驟如下。
1)匹配代價計算。根據(jù)左右圖像中的灰度、梯度信息,按照相似度在視差范圍內(nèi)搜索區(qū)域內(nèi)進(jìn)行度量。
2)匹配代價聚合。對匹配點(diǎn)領(lǐng)域內(nèi)所有匹配代價求和。為了建立鄰接像素之間的聯(lián)系并優(yōu)化代價矩陣,使用相鄰像素的視差值對代價矩陣進(jìn)行全局優(yōu)化,即每個像素在某個視差下的新代價值都會根據(jù)其相鄰像素在相同視差值或附近視差值下的代價值重新計算。這樣就得到了新的代價矩陣,可以用矩陣S 來表示。
3)視差計算。根據(jù)代價聚合結(jié)果,可以選擇出最優(yōu)匹配代價。在視差計算中,使用經(jīng)過代價聚合的代價矩陣S 確定每個像素的最優(yōu)視差值。
4)優(yōu)化視差結(jié)果。對視差圖采用左右一致性檢查算法進(jìn)行優(yōu)化,減少誤匹配結(jié)果產(chǎn)生的視差;采用剔除小連通區(qū)域算法來排除孤立的異常點(diǎn),以提高結(jié)果的準(zhǔn)確性。
實(shí)驗(yàn)軟件環(huán)境為Linux 平臺,操作系統(tǒng)為Ubuntu18.04。模型訓(xùn)練在GPU 型號為NVIDIA GeForce GTX 1660 Ti 上的設(shè)備進(jìn)行,顯存為8 G。測試使用的CPU 型號i7-9750H。
圖7 展示了本文算法在無人機(jī)實(shí)時航拍數(shù)據(jù)上的三維重建結(jié)果。
圖7 三維重建效果圖
利用無人機(jī)對某區(qū)域進(jìn)行航拍作為實(shí)驗(yàn)分析實(shí)例,相機(jī)分辨率為4 096×2 160@30 fps 的可見光相機(jī),拍攝路線間距為38.2 m,長度為478.1 m,曝光間距為16.1 m。航拍影像航向重疊度為70%,旁向重疊度為60%,影像的地面分辨率約為0.05 m。由圖7 可知,本文提出的方法對該區(qū)域?qū)崿F(xiàn)了較好的實(shí)時三維重建,局部紋理特征明顯,重建密集點(diǎn)云精度高,在保證實(shí)時性的情況下保證了數(shù)據(jù)的質(zhì)量。在三維重建完成后可以精確定位點(diǎn)云坐標(biāo),并且點(diǎn)云之間的長度及面積也有較高的計算精度。
本文深入研究了無人機(jī)航拍實(shí)時三維重建的方法,針對當(dāng)前無人機(jī)三維重建過程無法保證實(shí)時性以及點(diǎn)云稀疏的問題,提出了一種融合POS 信息、并行密集匹配和點(diǎn)云匹配技術(shù)的實(shí)時三維模型重建方法。實(shí)驗(yàn)結(jié)果表明,本文方法可實(shí)時重建稠密點(diǎn)云的三維模型,生成后的模型局部特征明顯,為測繪等領(lǐng)域提供了一種實(shí)時的無人機(jī)三維重建方法。