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