王 子,吳振宇
(1.安徽理工大學空間信息與測繪工程學院,安徽 淮南 232001;2.江蘇海洋大學海洋技術(shù)與測繪學院,江蘇 連云港 222000)
伴隨著三維重建研究領(lǐng)域的不斷發(fā)展,傳統(tǒng)的主動式基于激光雷達獲取點云數(shù)據(jù)三維重建已經(jīng)逐漸發(fā)展成為基于計算機視覺的被動視覺三維重建方案。在城市的大規(guī)模場景三維重建方面,基于被動式視覺三維重建具有成本小、還原度高、建模完整、場景真實度高等優(yōu)勢,目前已發(fā)展為大規(guī)模場景三維重建的最優(yōu)方案之一[1]。
獲取空間物體的三維空間結(jié)構(gòu)和圖像的三維信息方式主要包括主動式與被動式兩種。對環(huán)境中真實景物進行還原的主動式三維重建技術(shù)已相當成熟且被廣泛應(yīng)用,但存在需要掃描儀等高成本的重建設(shè)備、受外界環(huán)境影響大、對重建目標物體要求高以及后續(xù)實驗結(jié)果分析不是特別簡便等劣勢。而基于被動式的三維重建技術(shù)是對無人機航拍影像進行重構(gòu),通過間接的方式與其涉及的相關(guān)算法獲取圖像的三維點云信息,最后經(jīng)過表面重建還原其真實場景[2]。
目前,已經(jīng)有Pix4D,Altizure,smart3D等無人機建模商業(yè)軟件推出,上述軟件在無人機影像建模中均取得了不錯的效果。被動式的重建方法具有成本低、對于重建目標的要求不高、靈活性高、操作簡單等特點,由此推動了視覺三維重建方案在無人機航拍影像三維建模的研究與應(yīng)用[3]。
運動恢復(fù)結(jié)構(gòu) (Structure From Motion,SFM)算法是被動式視覺三維重建的核心算法之一,其可從無序圖片中重建場景的三維結(jié)構(gòu)稀疏點云,同時恢復(fù)相機的位姿,是多視圖視覺三維重建的重要一步。曹海春[4]采用Context Capture軟件結(jié)合人工干預(yù)的方法對消費型傾斜無人機拍攝的城鎮(zhèn)局部區(qū)域圖像進行三維重建,最后對生成的三維模型精度評定,結(jié)果表明,此方法能夠滿足精度要求,且建模效率提高。段建偉[5]采用增量式單目SFM算法,構(gòu)造函數(shù)圖像優(yōu)化模型,對相機位姿和圖像三維點云進行重建優(yōu)化,實驗表明,三維重建結(jié)果得到了極大改善,具有良好的視覺結(jié)果。何海清等[6]提出一種基于SFM算法結(jié)合耦合單-多旋轉(zhuǎn)平均迭代對低空影像三維建模結(jié)果進行優(yōu)化的方法。王楠[7]針對建筑物的建模問題,采用SFM算法具體研究了三維重建方法,提出了一種隨機抽樣一致性(RANSAC)改進算法,最終獲得了精度更高的三維重建結(jié)果。張平等[8]基于SFM算法配合CMVS,PMVS算法對建筑物三維點云重構(gòu)進行了研究,實驗結(jié)果表明此方法能夠有效地提取點云信息。陳輝等[9]采用基于機光掃描和SFM算法相結(jié)合的非同步點云三維重構(gòu)方法對建筑物的三維點云信息進行融合,實現(xiàn)了復(fù)雜場景的重建。
本文針對無人機航拍影像三維建模問題,基于無人機正射航拍影像進行完整流程的三維重建實驗,探討SFM算法在三維建模中的應(yīng)用,其基本技術(shù)路線見第105頁圖1。
圖1 基于SFM算法對無人機影像數(shù)據(jù)重建流程
基于SFM算法的三維重建的第一步是影像特征的提取與匹配,其主要目的是提取和匹配不同視角下多視圖像間對應(yīng)的相同特征信息點,主要過程包括提取圖像特征子、生成描述子、匹配特征點、去除外點、消除誤匹配等。目前,在圖像特征點的匹配上已經(jīng)有很多成熟算法,如SIFT,SUFR,F(xiàn)REAK,F(xiàn)AST和ORB等。但因考慮到三維重建在穩(wěn)健性、模型完整性、高效性、重建模型質(zhì)量及其在精度上存在的問題,重建過程中一般采用尺度不變特征轉(zhuǎn)換 (Scale-Invariant Feature Transform,SIFT)算法來進行特征提取,此算法在1999年由David G Lowe[10]在期刊上發(fā)表。SIFT算法實現(xiàn)特征點匹配的主要流程有以下步驟。
1)DOG尺度空間的極值檢測:首先確定圖像的尺度空間,即采用高斯核原始圖像濾波后生成卷積運算后的尺度空間圖像。用公式表示為
式中:L(x,y,σ)為尺度空間函數(shù);σ為尺度因子;G(x,y,σ)為高斯核函數(shù);*為卷積運算符;I(x,y)為輸入圖像。高斯核函數(shù)的表達式為
在空間尺度建立后,對該空間內(nèi)的極值點進行檢測,將檢測到的極值點作為待確定的關(guān)鍵點。
2)定位關(guān)鍵點并確定特征方向:在候選的極值點中,需放棄掉低對比度不穩(wěn)定點以及邊緣響應(yīng)點來得到位置與空間尺度更精確的關(guān)鍵點。在確定關(guān)鍵點之后,統(tǒng)計其鄰域內(nèi)的關(guān)鍵點梯度信息,最后獲取特征點的主方向。
3)生成特征點描述子并進行特征點匹配:即以特征點為中心,在其鄰域內(nèi)建立一個128維度的特征向量。首先建立一個4×4大小的區(qū)域窗口,每個子區(qū)域都包含4×4個像素點且每個子區(qū)域的像素點都有8個梯度方向,統(tǒng)計這8個方向的梯度信息,最終獲得4×4×8=128維的特征向量。采用歐式距離法對各關(guān)鍵點的特征向量進行匹配,最終建立與目標建筑物間的對應(yīng)關(guān)系[11]。
SFM算法是一種基于各種收集到的無序圖片進行三維重建的離線算法,在完成圖像的特征點提取與匹配工作之后,就可以對目標物體進行稀疏點云重建。SFM算法的原理見圖2。
圖2 SFM原理圖
圖2為同一個世界坐標系下的某一空間點在多個相機不同坐標系下所成的圖像,空間點X與投影點X1,X2,X3滿足的關(guān)系式為式中:F為基礎(chǔ)矩陣,然后利用基礎(chǔ)矩陣F與本征矩陣E分解計算圖像的位姿[R T],從而計算出空間點的三維坐標,獲得建筑物的稀疏點云。但是在進行稀疏三維重建過程中,由于陸續(xù)不斷添加新的圖像,計算所產(chǎn)生的誤差會逐漸積累,此時需要采用光束平差(Bundle Adjustment,BA)算法[12],其目的是最小化重投影誤差。根據(jù)誤差公式
式中:pi為損失函數(shù);fi為代價函數(shù);xin為需要優(yōu)化的參數(shù)。
BA算法是一個不斷迭代的過程,在進行第一次迭代計算過后,自動將所有的三維點反向投影到圖片中,若計算出的坐標值大于閾值,即需把此點去除掉。反復(fù)重復(fù)以上步驟,得到所有像片的三維點云數(shù)據(jù)及其位姿,最后獲得三維重建成果[13]。
基于SFM算法的三維重建點是由特征匹配提供的,這些匹配點天生不密集。重建后所得到的模型存在較多空洞,點云數(shù)量過于稀疏且基于此算法只能粗略地描繪規(guī)則物體的三維結(jié)構(gòu),因此需采用基于多視圖密集重建(Multi View Stereo,MVS)算法[14]來對不規(guī)則物體以及目標對象的細節(jié)特征來進行密集點云重建。MVS算法不同于SFM算法,它對于反應(yīng)目標建筑物的細節(jié)特征和物體的幾何信息更加真實準確,幾乎能夠匹配和重建所拍攝圖片中的每個像素點以及三維坐標信息,且此方法重建出的三維模型點云數(shù)量更多、更密集。其對相機拍攝到的多視圖影像間具有相同的三維幾何信息,而在三維幾何結(jié)構(gòu)部分存在一定的極線幾何約束?;谶@種約束,尋找兩張圖片上的同一點,再判斷此點是否為同一點,最后形成空洞更小的稠密點云。
泊松重建主要過程有定義八叉樹、設(shè)置函數(shù)空間、創(chuàng)建向量場、求解泊松方程、提取等值面。它的核心思想是通過將物體表面的離散樣本點信息轉(zhuǎn)化到連續(xù)表面函數(shù)上,從而構(gòu)造出Watertight的隱式表面。如果在空間中區(qū)分一個表面,可以直觀地理解為表面外和表面內(nèi)。它采用隱性擬合的方式對點云模型的表面信息進行等值面提取,從而得到具有更精確的細節(jié)特性和良好幾何實體信息的表面模型,最后根據(jù)SFM算法生成的點云數(shù)據(jù)和相機位姿及其圖像的RGB數(shù)據(jù)進行紋理映射,得到最終的目標模型[15-16]。
本實驗將學校某建筑物及其周圍環(huán)境作為重建目標,利用小型旋翼無人機獲取實驗?zāi)繕说恼龜z影像圖122張,使用Ubuntu 16.04系統(tǒng),4GB RAM的電腦,采用openMVG和openMVS開源方案進行三維重建,利用SIFT算法對影像進行特征提取和匹配實驗,共提取特征點106 420個;再選取一張不同視角但和該影像有重疊部分的圖片,進行特征點匹配實驗。
使用openMVG對點云進行稀疏重建,共得到點云數(shù)量98 903個,使用Meshlab軟件將點云打開,見圖3??梢钥闯?,該結(jié)果僅僅只能夠反應(yīng)出目標的大致輪廓,目標物體表面不清晰,不能夠具象地體現(xiàn)出建筑物實際情況且模型表面仍存在較多空洞區(qū)域,在細節(jié)方面還有不少缺失。在實際大規(guī)模場景應(yīng)用方面仍存在較大問題,因此實驗下一步需對稀疏點云稠密化。
圖3 重建目標的稀疏點云
使用openMVS進行密集重建,共得到點云數(shù)量6 371 991個,見圖4。由圖4可知,經(jīng)過對點云范圍約束后的密集重建所獲得的模型表面細節(jié)清晰,目標建筑物的真實度還原性更高,重建效果更好。該稠密點云對目標環(huán)境的部分細節(jié)有了很好的呈現(xiàn)。
圖4 稠密點云圖
使用泊松算法對稠密點云進行表面重建,再基于SFM算法對相機位姿進行紋理映射,最終得到的結(jié)果見圖5。
圖5 紋理映射后最終生成的三維模型
通過研究基于SFM算法對無人機航拍影像的目標物體進行三維重建,由以上建模過程可知,本文所采用的重建方法可以對目標建筑物的三維結(jié)構(gòu)快速準確地獲取,且獲得的影像點云信息豐富。通過對影像特征點提取與匹配以及點云的稀疏重建與密集重建,能夠得到目標清晰的外形輪廓,相比傳統(tǒng)三維模型生成方法,基于SFM算法所獲得的三維重建模型在真實場景的還原度、建模完整性、建模成本與效率上有明顯優(yōu)勢。但是,由最終生成的模型可知,在結(jié)構(gòu)上仍有細節(jié)上的缺失,其原因與相機的拍攝角度有關(guān)。實驗數(shù)據(jù)僅僅采用無人機的正射影像,所采集重建目標的圖像數(shù)量不足且獲取影像信息不全,從而導(dǎo)致最終模型結(jié)構(gòu)不完整。因此在此方面仍需進一步深入研究。