張彥雯 胡凱 王鵬盛
三維重建指對(duì)三維物體建立適合計(jì)算機(jī)表示和處理的數(shù)學(xué)模型,經(jīng)過十多年的發(fā)展,已經(jīng)取得了巨大的成就.隨著科學(xué)技術(shù)的發(fā)展,利用計(jì)算機(jī)構(gòu)建出真實(shí)景物的三維模型,已經(jīng)成為很多領(lǐng)域開始深層研究之前必不可少的一部分.如在醫(yī)學(xué)治療中,利用三維CT圖像判斷病情;在文物保護(hù)中,將文物進(jìn)行三維復(fù)原,供游客參觀.除此之外,在游戲開發(fā)、工業(yè)設(shè)計(jì)、航天航海等諸多領(lǐng)域,三維重建發(fā)揮著不可或缺的作用.目前,研究者們主要通過三種方式來獲取三維模型:一是直接根據(jù)傳統(tǒng)的幾何建模技術(shù);二是基于多幅不同角度拍攝的圖像,運(yùn)用計(jì)算機(jī)視覺理論進(jìn)行三維建模,該方式為基于圖像的三維重建;三是利用三維掃描設(shè)備對(duì)目標(biāo)進(jìn)行掃描,然后重建目標(biāo)的三維模型,該方式為基于點(diǎn)云的三維重建.在上述三種方法中,傳統(tǒng)的幾何建模技術(shù)發(fā)展最為成熟,利用該方法可以得到非常精確的三維模型,因此該方法已經(jīng)廣泛應(yīng)用于諸多領(lǐng)域.然而采用這種建模技術(shù)周期長(zhǎng)、操作復(fù)雜,對(duì)于許多不規(guī)則的自然或人為物體,建模效果與真實(shí)場(chǎng)景仍存在差異.因此基于圖像與基于點(diǎn)云的三維重建成為了三維重建領(lǐng)域中的熱點(diǎn).
基于圖像的三維重建主要是將二維圖像恢復(fù)成三維模型,其分為基于單幅圖像的三維重建與基于多幅圖像的三維重建.基于單幅圖像的三維重建不能應(yīng)用于大規(guī)模場(chǎng)景,因此本文主要介紹了基于多幅圖像的三維重建.
基于點(diǎn)云的三維重建主要是將點(diǎn)云數(shù)據(jù)恢復(fù)成圖形、圖像,然后通過計(jì)算機(jī)處理形成三維模型.其主要流程有:數(shù)據(jù)配準(zhǔn)[1]、點(diǎn)云數(shù)據(jù)預(yù)處理[2]、分割[3]、三角網(wǎng)格化[4-5]、網(wǎng)格渲染.由于點(diǎn)云獲取設(shè)備獲取點(diǎn)云角度單一,因此如何對(duì)多個(gè)點(diǎn)云數(shù)據(jù)進(jìn)行配準(zhǔn)拼接一直是研究的重點(diǎn)和難點(diǎn).
20世紀(jì)90年代Debevec等[6]提出了用參數(shù)幾何體來表示初始模型的方法.在21世紀(jì)初,學(xué)者們不斷對(duì)傳統(tǒng)的幾何思想進(jìn)行研究,至此通過參數(shù)幾何法進(jìn)行三維重建的研究已經(jīng)較為成熟,同時(shí)在這10年間不斷有應(yīng)用于三維重建的軟件問世.考慮到3DMAX和Maya等軟件建模周期長(zhǎng)、工作量大且不能對(duì)場(chǎng)景中隱藏細(xì)節(jié)進(jìn)行還原,Chen等[7]基于Windows環(huán)境開發(fā)了一個(gè)多視圖三維重建系統(tǒng),該系統(tǒng)主要將基于多視圖三維重建的算法進(jìn)行集成,只需將各個(gè)視角的圖像作為輸入,便可以得到三維模型.相對(duì)于傳統(tǒng)的軟件,該系統(tǒng)操作簡(jiǎn)單且三維模型的精確度高、細(xì)節(jié)處理效果更好.隨著科技的發(fā)展和社會(huì)的進(jìn)步,各行各業(yè)對(duì)于三維重建的需求日益增多,三維重建的發(fā)展又達(dá)到了新的階段.基于圖像的三維重建主要包括稀疏點(diǎn)云重建和稠密點(diǎn)云重建.稀疏點(diǎn)云重建(Strcture From Motion,SFM)包括特征點(diǎn)檢測(cè)與匹配以及SFM重構(gòu)兩個(gè)部分.初始的檢測(cè)算子容易受到光照、尺度、旋轉(zhuǎn)等因素的影響,Lowe[8-9]提出了SIFT(Scale Invariant Feature Transform)算法解決了以上因素的影響,至此稀疏點(diǎn)云重建的精度得到了大幅度提高.隨著學(xué)者們不斷創(chuàng)新與發(fā)展,SURF(Speeded Up Robust Features)、FAST(Features from Accelerated Segment Test)、ORB(Oriented FAST and Rotated BRIEF)等優(yōu)秀算法被相繼提出.利用特征點(diǎn)檢測(cè)與匹配,計(jì)算特征點(diǎn)個(gè)數(shù)達(dá)到要求的圖像對(duì),為SFM重構(gòu)中計(jì)算初始圖像對(duì)及R、T求解做鋪墊.SFM重構(gòu)大致分為三類:增量式重構(gòu)、全局式重構(gòu)、混合式重構(gòu).其中增量式重構(gòu)、全局式重構(gòu)為傳統(tǒng)方法.2017年,Cui等[10]提出了混合式SFM;2018年,Cui等[11]提出了一種外環(huán)圖像匹配、內(nèi)環(huán)增量式校準(zhǔn)的方法;2018年,Zhu等[12]提出了一種嵌套分解的分布式框架用于全局式重構(gòu).在稠密點(diǎn)云重建(Multi-View System,MVS)中,深度圖的計(jì)算尤為重要,其發(fā)展之初計(jì)算方法主要是計(jì)算幾何參數(shù)以求得圖像深度信息,例如Gallup等[13]提出的Plane-Sweeping、Bleyer等[14]提出的PatchMatch等.2010年前后,隨著深度網(wǎng)絡(luò)的發(fā)展,國(guó)內(nèi)外一批精英學(xué)者將深度網(wǎng)絡(luò)模型與幾何參數(shù)法相結(jié)合以計(jì)算出圖像深度,如Huang等[15]提出的Deep MVS.2018年,香港科技大學(xué)訓(xùn)練了一個(gè)深度網(wǎng)絡(luò)模型MVSNet[16],該網(wǎng)絡(luò)模型能夠脫離傳統(tǒng)的幾何計(jì)算,通過輸入多視角圖像得到深度圖.2019年,Chen等[17]等提出了Point MVSNet神經(jīng)網(wǎng)絡(luò)框架.基于深度網(wǎng)絡(luò)的三維重建仍在不斷發(fā)展創(chuàng)新.
本文主要介紹基于圖像的三維重建的算法,并簡(jiǎn)要地介紹三維重建效果的評(píng)價(jià)指標(biāo).基于圖像的三維重建的流程主要包括:稀疏點(diǎn)云重建、稠密點(diǎn)云重建、點(diǎn)云網(wǎng)格建模、三維語義建模、三維矢量建模.其中稀疏點(diǎn)云重建是三維重建中搭建場(chǎng)景框架的過程,稠密點(diǎn)云重建是三維重建中增強(qiáng)場(chǎng)景稠密性的過程,三維重建效果的完整性與精確性與這兩個(gè)步驟有直接關(guān)系.本文針對(duì)稀疏點(diǎn)云重建與稠密點(diǎn)云重建的發(fā)展進(jìn)行系統(tǒng)綜述.
本文第一節(jié)介紹稀疏點(diǎn)云重建,主要包括特征點(diǎn)檢測(cè)與匹配、SFM重構(gòu);第二節(jié)主要介紹稠密點(diǎn)云重建,尤其對(duì)深度圖的計(jì)算進(jìn)行詳細(xì)介紹;第三節(jié)主要介紹三維重建效果的評(píng)價(jià)指標(biāo);第四節(jié)對(duì)三維重建進(jìn)行總結(jié),并列舉出在未來可能面對(duì)的問題及發(fā)展趨勢(shì).
稀疏點(diǎn)云重建是通過相機(jī)的移動(dòng)來確定目標(biāo)的空間和幾何關(guān)系的.首先輸入一個(gè)場(chǎng)景的多視角圖像,檢測(cè)每張圖像中的特征點(diǎn),并對(duì)特征點(diǎn)進(jìn)行匹配,然后運(yùn)用SFM重構(gòu)算法,恢復(fù)出相機(jī)的參數(shù)、相機(jī)之間的相對(duì)位置關(guān)系及場(chǎng)景的稀疏點(diǎn)云.最后捆綁調(diào)整優(yōu)化相機(jī)位姿、相機(jī)參數(shù)、場(chǎng)景結(jié)構(gòu).
稀疏點(diǎn)云重建的流程為:特征點(diǎn)檢測(cè),特征點(diǎn)匹配,相機(jī)位姿(旋轉(zhuǎn)矩陣R、平移矩陣T)初始值的求解,捆綁調(diào)整優(yōu)化相機(jī)位姿、相機(jī)參數(shù)、場(chǎng)景結(jié)構(gòu).
特征點(diǎn)檢測(cè)與匹配的作用是計(jì)算特征點(diǎn)個(gè)數(shù)達(dá)到要求的圖像對(duì),使得圖像與圖像間一直進(jìn)行傳遞,從而形成一條軌跡,為SFM重構(gòu)中的初始圖像對(duì)及R、T求解做鋪墊.如圖1給出了利用ORB算法進(jìn)行特征點(diǎn)檢測(cè)與匹配的效果.
1.1.1 特征點(diǎn)檢測(cè)
局部特征點(diǎn),主要分為斑點(diǎn)和角點(diǎn)兩類特征點(diǎn),斑點(diǎn)是指圖像中像素或灰度值大的區(qū)域,角點(diǎn)是指圖像中物體的拐角或線條交叉的部分.斑點(diǎn)檢測(cè)主要包括二階的拉普拉斯高斯邊緣提取算法(Laplacian Of Gaussian,LOG)、尺度不變特征變換算法(Scale Invariant Feature Transform,SIFT)[8-9]、加速穩(wěn)健特征算法(Speeded Up Robust Features,SURF)[18]等.角點(diǎn)檢測(cè)主要有Harris角點(diǎn)特征提取算子、加速分割測(cè)試特征提取(Features from Accelerated Segment Test,FAST)[19]、特征點(diǎn)檢測(cè)算子(Oriented FAST and Rotated BRIEF,ORB)[20]等.
1999年SIFT算子被Lowe[8]提出,并于2004年得到完善[9],該算法主要是尋找多尺度空間下的關(guān)鍵點(diǎn),計(jì)算關(guān)鍵點(diǎn)的位置、方向、尺度信息,以生成特征點(diǎn)描述子.SIFT算子提取的關(guān)鍵點(diǎn)精度高、不易受光照噪聲的影響,但是該算子也存在計(jì)算量大、實(shí)時(shí)性能不高的缺點(diǎn).Bay[18]提出了SURF算子,與SIFT算法不同的是,SURF特征點(diǎn)主方向的分配不是通過梯度計(jì)算,而是利用了Haar小波,SURF的計(jì)算速度是SIFT的3至7倍.在Susan角點(diǎn)[21]檢測(cè)的基礎(chǔ)上,Rosten等提出了FAST[19]算子,隨后很多學(xué)者在該算子的基礎(chǔ)上進(jìn)行改進(jìn).隨著對(duì)特征點(diǎn)描述子的深入研究,近幾年提出了很多新的算子,例如Susan[21]、ORB[20]等.表1對(duì)經(jīng)典特征點(diǎn)檢測(cè)算法進(jìn)行了對(duì)比,并且提供了代碼資源.
表1 特征點(diǎn)檢測(cè)算法優(yōu)缺點(diǎn)Table 1 Advantages and disadvantages of feature point detection algorithms
1.1.2 特征點(diǎn)匹配
特征點(diǎn)匹配即通過尋找兩幅圖像中相似的特征點(diǎn),來確定兩幅圖像的位置關(guān)系.SIFT和SURF算子在對(duì)特征點(diǎn)匹配時(shí)都是通過兩特征點(diǎn)間的歐式距離計(jì)算出匹配度的.SURF算子中加入了Hessian矩陣,能夠判斷出兩個(gè)特征點(diǎn)的方向,相比于SIFT算子,SURF算子匹配的精確度更高.SURF算子與SIFT算子需要對(duì)A視角圖像的某個(gè)特征點(diǎn)與B視角圖像上的每個(gè)特征點(diǎn)進(jìn)行匹配,因此耗時(shí)較長(zhǎng).為解決這個(gè)問題,崔振興等[22]將特征點(diǎn)鄰域內(nèi)像素之間的差值形成的特征向量與SURF特征描述子相結(jié)合形成68維特征向量;李紅波等[23]提出了一種基于距離約束的改進(jìn)SURF算法,該算法針對(duì)不同尺寸的圖像,構(gòu)建高斯金字塔圖像層提取合適數(shù)目的特征點(diǎn),采取特征點(diǎn)優(yōu)化處理的方法使得提取的特征點(diǎn)分布均勻,并引入KD-tree樹索引使得特征點(diǎn)匹配更加準(zhǔn)確快速;Xu等[24]提出了一個(gè)加速算法,該算法采用了一種新的索引模式來尋找最相似的圖像,然后通過一種新的接近最近鄰搜索算法來匹配特征向量,大大加快了匹配速度;Sergeeva等[25]提出了一種異構(gòu)背景的前景檢測(cè)技術(shù),在特征點(diǎn)匹配后運(yùn)用該技術(shù)去除圖像背景,該算法對(duì)復(fù)雜背景的目標(biāo)重建效果很好.
SFM重構(gòu)的思想是利用相機(jī)運(yùn)動(dòng)軌跡來估算相機(jī)參數(shù).相機(jī)在不同視點(diǎn)攝取多幅圖像,利用這些圖像計(jì)算出相機(jī)的位置信息以及運(yùn)動(dòng)軌跡,從而在空間坐標(biāo)系下生成三維點(diǎn)云,恢復(fù)出物體的空間結(jié)構(gòu).由于初步匹配過程形成的特征點(diǎn)較為粗糙,因此在估算相機(jī)參數(shù)之前,常用幾何約束刪除匹配錯(cuò)誤的特征點(diǎn)對(duì).SFM重構(gòu)的方法主要有增量式和全局式兩種.
1.2.1 增量式重構(gòu)
增量式重構(gòu)是從兩張圖像中重建出部分場(chǎng)景以及兩相機(jī)的R(旋轉(zhuǎn)矩陣)、T(平移矩陣),然后添加圖像,利用PnP計(jì)算出第三幅圖像的R、T,通過三角化重建出更多的場(chǎng)景.由于在求位姿與三維點(diǎn)時(shí)會(huì)有大量噪聲干擾,后續(xù)計(jì)算結(jié)果會(huì)發(fā)生漂移,因此引入BA(Bundle Adjustment)算法進(jìn)行優(yōu)化.在每次添加圖像完成三角化后都需要進(jìn)行優(yōu)化.增量式重構(gòu)的步驟為:初始化、PnP解算、三角化、BA算法優(yōu)化.其中較為重要的步驟是利用PnP算法求解相機(jī)位姿.PnP有很多種類,如P3P[26]、EPnP[27-28]、DLT[29]、UPnP[30]和MRE[31-32].
增量式重構(gòu)的具體流程是:首先輸入第1、第2張圖像計(jì)算出相機(jī)位姿并重建出部分場(chǎng)景,然后輸入第3張圖像進(jìn)一步調(diào)整相機(jī)位姿并重建場(chǎng)景,直到輸入所有不同視角的圖像,得到所有相機(jī)的初始位姿和初始三維點(diǎn).如圖2所示,通過輸入第1、第2張圖像,重建出第1個(gè)場(chǎng)景,由于2張圖重建出的場(chǎng)景效果不是很好,圖2中沒有將場(chǎng)景1展示出來;再添加第n張圖像與之前重建的場(chǎng)景N-1融合獲得下一步的新場(chǎng)景,直到所有圖像添加結(jié)束,重建出全部場(chǎng)景.
增量式SFM在對(duì)大規(guī)模場(chǎng)景進(jìn)行三維重建時(shí),由于誤差累積會(huì)造成場(chǎng)景漂移以及反復(fù)地捆綁調(diào)整會(huì)耗費(fèi)大量的時(shí)間,為了解決這些問題,段建偉[33]將圖優(yōu)化理論與增量式SFM相結(jié)合,在構(gòu)造圖優(yōu)化模型時(shí),將重投影誤差平方和設(shè)置為代價(jià)函數(shù)從而進(jìn)行優(yōu)化,以達(dá)到減少誤差的效果.而劉彬等[34]提出了線性的增量式SFM,與傳統(tǒng)增量式SFM相比改進(jìn)了三維重建初始像對(duì)的篩選策略,通過將局部的光束法優(yōu)化、局部外點(diǎn)過濾以及局部三角化三者組合的方式減少誤差.
不同于上述方法,2018年Cui等[11]提出了一種外環(huán)圖像匹配、內(nèi)環(huán)增量式校準(zhǔn)的方法.如圖3所示下方箭頭為外環(huán),上方箭頭為內(nèi)環(huán).外環(huán)是一個(gè)正交匹配環(huán),通過迭代選擇圖像相似圖的正交MSTs(Maximum Spanning Trees)進(jìn)行圖像匹配,內(nèi)環(huán)是一個(gè)增量式相機(jī)校準(zhǔn)循環(huán).在MSTs進(jìn)行圖像匹配時(shí),對(duì)于每個(gè)匹配的圖像對(duì),首先估計(jì)對(duì)應(yīng)的極線幾何,包括第j張圖像相對(duì)第i張圖像的相對(duì)旋轉(zhuǎn)矩陣Rij、相對(duì)平移矩陣tij,其中相機(jī)絕對(duì)位姿{(lán)Ri,Ci}與相對(duì)位姿{(lán)Rij,tij}的關(guān)系如式(1)所示,其中λij為尺度因子,Ri為相機(jī)絕對(duì)旋轉(zhuǎn)矩陣,Ci為相機(jī)中心矩陣.
(1)
相對(duì)平移誤差定義為
設(shè)定一個(gè)閾值β2,如果ε1,ε2大于β2,那么該匹配對(duì)被認(rèn)為是錯(cuò)誤的,在當(dāng)前迭代中被忽略.實(shí)驗(yàn)表明即使存在多個(gè)錯(cuò)誤匹配,但是通過上述篩選,在前三個(gè)正交MTSs中,大多數(shù)匹配對(duì)都具有精確的相對(duì)位姿估計(jì),更適合攝像機(jī)標(biāo)定[11].通過不斷地圖像匹配和相機(jī)標(biāo)定,兩個(gè)循環(huán)的收斂速度都很快并且排除了大量的冗余對(duì),該方法在處理各種圖像數(shù)據(jù)集時(shí)效率高、魯棒性強(qiáng).
1.2.2 全局式重構(gòu)
全局式SFM如圖4所示,它將所有圖像添加到場(chǎng)景中,計(jì)算所有攝像機(jī)的旋轉(zhuǎn)矩陣、平移矩陣和所有攝像機(jī)的位置,然后進(jìn)行三角化.全局式SFM采用的是將相機(jī)相對(duì)位姿均勻分布的方法,該方法在處理大規(guī)模重建時(shí),相機(jī)之間的相關(guān)性不同,會(huì)導(dǎo)致重建效果差.于是,2018年Zhu等[12]基于全局式SFM提出了一種嵌套分解的分布式框架.首先將原始的攝像機(jī)分布圖分割成多個(gè)子圖,對(duì)每個(gè)子圖迭代至收斂;然后連接多個(gè)子圖之間的變量,對(duì)連接多個(gè)子圖的變量進(jìn)行迭代優(yōu)化.第一步優(yōu)化為局部運(yùn)動(dòng)平均,第二步優(yōu)化為全局運(yùn)動(dòng)平均.該方法中局部相機(jī)姿態(tài)在全局運(yùn)動(dòng)平均中是固定的,降低了內(nèi)存占用.實(shí)驗(yàn)結(jié)果表明在全局式重構(gòu)中加入該分布式框架具有較高的魯棒性.
1.2.3 混合式重構(gòu)
2017年,Cui等[10]提出了混合式SFM,主要思想是將前兩者進(jìn)行融合,利用全局式估計(jì)攝像機(jī)旋轉(zhuǎn)矩陣,增量式估計(jì)攝像機(jī)位置,然后進(jìn)行局部捆綁調(diào)整.
由于SFM用來做重建的點(diǎn)是由特征匹配提供的,導(dǎo)致匹配點(diǎn)稀疏,重建效果并不是很好,所以需要MVS進(jìn)行完善.稠密點(diǎn)云重建(MVS)的目的是通過最佳方法對(duì)不同圖像上的同一個(gè)點(diǎn)進(jìn)行匹配,增強(qiáng)重建場(chǎng)景的稠密性.
如圖5所示,假設(shè)圖b中存在一點(diǎn)P′與圖a中點(diǎn)P在不同視角的同一點(diǎn),由于幾何約束,點(diǎn)P與相機(jī)a的返回射線和點(diǎn)P′與相機(jī)b的返回射線一定相交于一點(diǎn),點(diǎn)P所對(duì)應(yīng)的點(diǎn)P′一定位于極線上.MVS主要任務(wù)是通過一種最佳搜索的方法,匹配不同圖像的同一個(gè)點(diǎn).接下來工作就是在圖片上的一條線上進(jìn)行探測(cè),尋找兩張圖片上的同一點(diǎn),主要方法為逐像素判斷,由此提出了一致性度量函數(shù).
兩視圖圖像一致性的度量方法有:平均絕對(duì)差算法(Mean Absolute Differences,MAD)、差值平方和(Sum of Squared Differences,SSD)、絕對(duì)差值和(Sum of Absolute Differences,SAD)、歸一化互相關(guān)性(Normalized Cross-Correlation,NCC)等.這三個(gè)算法大同小異,采用的方法都是遍歷整個(gè)搜索圖,尋找到與模塊圖最為相似的部分,不同的只是計(jì)算方法不一樣.
為了減少搜索范圍以及增加匹配率,劉小群[35]提出了基于視差梯度的區(qū)域匹配算法,該算法引入NSAD函數(shù),同時(shí)對(duì)不同區(qū)域采用不同大小的窗口進(jìn)行匹配.張一飛等[36]提出了融合邊緣特征的Edge-Gray算法,該算法在SAD算法匹配之前先計(jì)算出邊緣特征圖,在匹配過程中融合了邊緣特征圖和灰度圖.
深度圖是指將相機(jī)到場(chǎng)景中各點(diǎn)距離作為像素值的圖像.在MVS中對(duì)于深度圖的計(jì)算是一大重點(diǎn).
2.2.1 幾何法
深度圖的計(jì)算方法有很多,如Yang等[37]提出了Plane-Sweeping算法,而Gallup等[13]將該算法用在三維重建中.文獻(xiàn)[13]主要思想是將深度范圍內(nèi)分割一個(gè)一個(gè)平面,通過觀察投影到攝像機(jī)上的點(diǎn)的顏色是否一致來判斷這些點(diǎn)是否位于可見物體的表面上.但是該算法難以應(yīng)對(duì)遮擋問題,另外,當(dāng)紋理弱、光照變化大時(shí)還會(huì)重建出很多雜點(diǎn).為了解決這些問題,Shu等[38]采用平面掃描立體的方法提出了一種深度區(qū)間估計(jì)方法:首先確定重建目標(biāo)投影出的二維范圍,然后將二維范圍反投影到三維空間,得到多個(gè)三維平面;接著將來自其他視圖的平面投影到視圖j的坐標(biāo)系中,視圖j的深度區(qū)間等于所有平面相交的z軸的范圍;最后計(jì)算每個(gè)視圖的深度圖.王躍嵩[39]對(duì)Plane-Sweeping算法進(jìn)行了改進(jìn),使用稀疏點(diǎn)云來確定需要進(jìn)行局部平面掃描的平面,同時(shí)提出了一種迭代的方法,該方法能夠消除雜點(diǎn),避免將被遮擋點(diǎn)的分?jǐn)?shù)拉低.
Bleyer等[14]將Barnes等[40]提出的PatchMatch算法應(yīng)用到了深度圖計(jì)算中.PatchMatch算法通過隨機(jī)初始化,按照從左到右、從上到下的方法進(jìn)行傳播及隨機(jī)搜索,不斷地進(jìn)行迭代,尋找出最合適的patch,達(dá)到圖像修復(fù)的目的.而Bleyer等[14]正是運(yùn)用PatchMatch算法根據(jù)一個(gè)平面找到一個(gè)近似的最近鄰.首先在每個(gè)像素點(diǎn)中存儲(chǔ)深度值和深度值的法向量,并將深度值和深度值的法向量隨機(jī)初始化,然后把相鄰像素的深度值和深度值法向量轉(zhuǎn)換到當(dāng)前像素上得到一個(gè)空間平面,將空間平面投影到圖像上,比較兩者的一致性差別,若后者的一致性更優(yōu),則用相鄰像素的存儲(chǔ)值替換當(dāng)前像素的存儲(chǔ)值,如此進(jìn)行傳播及隨機(jī)搜索.該方法得到了較好的亞像素,但是在面對(duì)缺失紋理的區(qū)域時(shí),效果不佳.為了解決這些問題,學(xué)者們對(duì)PatchMatch算法進(jìn)行了改進(jìn).Besse等[41]提出了一種方法能夠解決連續(xù)性標(biāo)簽處理問題,同時(shí)該算法比PatchMatch更精確.該方法主要是將PatchMatch與粒子置信度傳播算法整合到BP框架下.Li等[42]利用自底向上的方法設(shè)計(jì)了兩層匹配,用預(yù)先訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)得到像素塊的相似度,將該相似度作為底層代價(jià),將底層代價(jià)與利用超像素塊單元構(gòu)建的頂層匹配代價(jià)相組合從而構(gòu)建匹配能量.在視差優(yōu)化過程中,與超像素間不同的是,該算法提出了利用GC(Graph Cut) 優(yōu)化超像素內(nèi)的每一像素點(diǎn)的標(biāo)簽,可以降低在紋理性弱的區(qū)域誤匹配的概率.
2.2.2 幾何與深度學(xué)習(xí)相結(jié)合的方法
Wang等[43]提出了一種雙通道法生成深度圖像:首先利用暗通道生成初始深度圖,然后用一個(gè)互補(bǔ)的亮通道來識(shí)別初始深度圖中可能的錯(cuò)誤估計(jì),最后利用語義信息訓(xùn)練一個(gè)深度模型對(duì)初始圖像中錯(cuò)誤的深度估計(jì)進(jìn)行修正.該方法能夠解釋場(chǎng)景元素之間的高階語義關(guān)系,具有定量與定性的優(yōu)勢(shì).Huang等[15]提出了DeepMVS的方法用來計(jì)算視差圖,前期需要通過SFM對(duì)相機(jī)進(jìn)行校準(zhǔn)以及得到每張圖像的姿態(tài),通過圖像預(yù)處理,將參考圖像和各級(jí)視差圖輸入到網(wǎng)絡(luò)中,整個(gè)網(wǎng)絡(luò)模型包括三部分:PatchMatch匹配網(wǎng)絡(luò)、卷內(nèi)特征聚合網(wǎng)絡(luò)、卷間特征聚合網(wǎng)絡(luò),最后輸出視差圖,后續(xù)可以通過視差圖求得深度圖.該方法在面對(duì)紋理信息較少的區(qū)域和薄結(jié)構(gòu)時(shí)相對(duì)于其他算法的效果更好,但是不能預(yù)判包含樹木或草地的植被區(qū)域的差異且處理速度慢.
2.2.3 基于深度學(xué)習(xí)的方法
考慮到傳統(tǒng)的MVS難以處理弱紋理區(qū)域、瘦小的結(jié)構(gòu)以及反射和投射的表面,基于深度學(xué)習(xí)的MVS算法應(yīng)運(yùn)而生.前者主要通過提取深度信息計(jì)算深度圖,后者主要通過機(jī)器學(xué)習(xí)算法訓(xùn)練模型計(jì)算深度圖.2018年Yao等[16]提出了非結(jié)構(gòu)化多視點(diǎn)三維重建網(wǎng)絡(luò)(MVSNet).MVSnet是一個(gè)端到端的神經(jīng)網(wǎng)絡(luò),如圖6所示.第一部分將不同視角的圖像輸入到網(wǎng)絡(luò)中獲取輸入圖像的特征圖.第二部分為文獻(xiàn)[16]創(chuàng)新部分:通過一個(gè)基于單應(yīng)變換的2D轉(zhuǎn)3D的變換方法,將特征圖變換到一個(gè)256個(gè)深度平面上,將轉(zhuǎn)換后的3D特征圖稱為Feature Volume.式(2)表示將N張多視角圖像變換成N個(gè)特征量,其中Deep Features為將圖像卷積后提取到的深度特征.式(3)表示將第i張?zhí)卣鲌D變換到深度為d的特征平面上的單應(yīng)矩陣Hi(d),將特征圖變換到特征量不同的深度平面上,至少有一個(gè)深度是正確的.其中I為單位矩陣、K為相機(jī)內(nèi)部參數(shù)、R為相機(jī)旋轉(zhuǎn)矩陣、t為相機(jī)位移向量、d為深度變量,n為參考圖像相機(jī)的主軸.
(2)
(3)
第三部分將N個(gè)特征量通過逐個(gè)像素的方差計(jì)算合并成一個(gè)花費(fèi)量.第四部分花費(fèi)量經(jīng)過一個(gè)四級(jí)的U-Net結(jié)構(gòu)來生成一個(gè)可能量,從而得到每個(gè)深度下每個(gè)像素的可能性大小.第五部分結(jié)合上述每個(gè)像素在不同深度上的概率分布通過計(jì)算深度的數(shù)學(xué)期望得到初始深度圖.第六部分將初始深度圖與原圖像串成一個(gè)四通道輸入得到深度殘差,進(jìn)而與初始深度圖相結(jié)合得到最終深度圖.該網(wǎng)絡(luò)框架可以適用于任意張視圖輸入,截止到2018年4月18日之前在公開Tanks and Temples數(shù)據(jù)集上的測(cè)試排名位居第一,其運(yùn)行速度更快,不需要任何的微調(diào),具有良好的泛化性.
在上述MVSNet中對(duì)花費(fèi)量正則化占用了大量?jī)?nèi)存,使網(wǎng)絡(luò)難以對(duì)高分辨率場(chǎng)景進(jìn)行重建.為改進(jìn)這個(gè)缺點(diǎn),Yao等[44]于2019年對(duì)原來的MVSNet進(jìn)行優(yōu)化提出了R-MVSNet,其主要是針對(duì)MVSNet的第四部分進(jìn)行了改進(jìn),如圖7所示.R-MVSNet用GRU單元代替原來的3D CNN,GRU單元可以沿深度方向收集上下文信息,同時(shí)可以控制上一個(gè)深度平面的更新及重置信息的程度,這樣占用的內(nèi)存會(huì)大幅度減少同時(shí)效果也沒有下降.
2019年Chen等[17]提出了PointMVSNet神經(jīng)網(wǎng)絡(luò)框架,主要分為兩大部分.第一部分首先將不同視角的圖像輸入到網(wǎng)絡(luò)中,生成粗糙深度預(yù)測(cè)圖,然后轉(zhuǎn)換成粗糙點(diǎn)云.第二部分利用圖像金字塔網(wǎng)絡(luò)提取三維點(diǎn)云中每個(gè)點(diǎn)在各視角圖像中的紋理特征,構(gòu)建特征增強(qiáng)點(diǎn)云,然后利用點(diǎn)流模型迭代出精確而稠密的點(diǎn)云.該方法直接將場(chǎng)景作為點(diǎn)云處理,計(jì)算量大幅度減少,保留空間連續(xù)性,精度、速度、靈活性提高顯著,重建結(jié)果更為高效、精確(表2).
表2 深度圖計(jì)算方法比較Table 2 Comparison of depth map calculation methods
利用基于圖像的方法進(jìn)行三維重建,圖8為拍攝的RGB圖像(通過攝像機(jī)攝取多幅不同視點(diǎn)的RGB圖像),圖9為稀疏點(diǎn)云重建效果,圖10為稠密點(diǎn)云重建正面效果,圖11為稠密點(diǎn)云重建側(cè)面效果.
在完成三維點(diǎn)云重建后,需要評(píng)價(jià)三維重建結(jié)果的優(yōu)劣性.三維重建的評(píng)價(jià)方法大致分為有真實(shí)模型和無真實(shí)模型兩類.無真實(shí)模型的評(píng)價(jià)是通過對(duì)比輸入數(shù)據(jù)與重建之后的數(shù)據(jù)一致性程度來實(shí)施的,其方法有重建誤差法、積分誤差法等.重建誤差法通過計(jì)算輸入點(diǎn)到重建表面點(diǎn)的平均歐式距離來評(píng)價(jià),通常距離越小,誤差越小,重建效果越好.重建誤差法受噪聲的干擾較大,當(dāng)出現(xiàn)幾個(gè)偏移較大的重建點(diǎn)時(shí)會(huì)影響到最后的整體結(jié)果,所以最后得到的結(jié)果較為片面.積分誤差法是由Zhou等[45]提出來的,通過計(jì)算輸入點(diǎn)到重建表面距離最近點(diǎn)距離的平均值進(jìn)行評(píng)價(jià),通常誤差越小,重建效果越好.積分誤差法雖然采用取平均的方法來避免噪聲點(diǎn)的干擾,但是卻沒有考慮到其他因素.總體來說無真實(shí)模型的評(píng)價(jià)手段單一,沒有考慮局部特征.Song等[46]提出了3DGiC算法,該算法無需提供真實(shí)模型,并且該算法包括了全局一致性和局部準(zhǔn)確性,該算法的主要思想是計(jì)算局部表面描述符聯(lián)合概率的累積分布,其中累積分布表示全局統(tǒng)計(jì)量,而局部表面描述符用于評(píng)估局部精度,將全局和局部的關(guān)聯(lián)進(jìn)行合并,從而得到一個(gè)更緊湊的評(píng)估.
有真實(shí)模型的評(píng)價(jià)是通過重建之后的模型與真實(shí)模型進(jìn)行對(duì)比來實(shí)施的,主要方法有形狀誤差法、分解法、相位矩不變量法、多指標(biāo)評(píng)價(jià)法等.Seitz等[47]提出了一種以準(zhǔn)確性和完整性為指標(biāo)的三維重建結(jié)果的量化評(píng)價(jià)方法,該方法需要借助設(shè)備獲得物體的高精度三維數(shù)據(jù),不利于大規(guī)模場(chǎng)景重建的評(píng)估,成本高、效率低.為了解決上述問題,公明等[48]提出了一種基于圖像相位信息不變性的評(píng)價(jià)方法,該方法首先要獲得物體在某一視點(diǎn)下的二維投影圖及該物體在相近視點(diǎn)下的圖像,然后對(duì)兩張圖像進(jìn)行邊緣提取,計(jì)算兩張邊緣圖像的相位矩不變量,從而構(gòu)造特征向量,最后通過比較特征向量的距離進(jìn)行三維重建的評(píng)估.但是該方法計(jì)算量大,不穩(wěn)定.張?chǎng)┑萚49]提出了一種評(píng)價(jià)三維模型幾何質(zhì)量的方法,將三維模型分解到基元點(diǎn)、基元線和基元面,以局部精度作為評(píng)價(jià)指標(biāo),通過計(jì)算點(diǎn)的距離偏移,線的長(zhǎng)度插值、距離偏移、角度偏移,面的邊數(shù)差、面積差值及距離偏移、角度偏移等綜合數(shù)據(jù),來評(píng)價(jià)三維重建的指標(biāo),但是該方法容易出現(xiàn)點(diǎn)的數(shù)據(jù)缺失情況.
上述的三維重建評(píng)價(jià)方法中主要有三個(gè)缺陷:
1)部分算法只能分析真實(shí)模型的場(chǎng)景;
2)部分算法只能測(cè)量重建的精度,但是不能測(cè)量完整性,導(dǎo)致評(píng)價(jià)結(jié)果存在偏差;
3)大多算法只考慮到幾何精度,并沒有將紋理模型的視覺精度添加到評(píng)價(jià)指標(biāo)中,在某些需要視覺精度的場(chǎng)景中應(yīng)用意義不大.
Waechter等[50]提出了一種以視覺質(zhì)量為評(píng)定指標(biāo)的方法,該方法將獲取的圖像分為訓(xùn)練集和評(píng)價(jià)集,使用基于圖像建模的流程重構(gòu)訓(xùn)練集,利用評(píng)價(jià)集的攝像機(jī)參數(shù)渲染視圖,最后通過圖像的差異性度量將這些效果圖與評(píng)價(jià)集進(jìn)行比較.該方法是一種靈活的評(píng)價(jià)方式,不需要重建物體的真實(shí)數(shù)據(jù),能夠評(píng)價(jià)重建物體表面的紋理質(zhì)量,并且能夠顯示和定位重建不精確的地方.
對(duì)于三維重建結(jié)果評(píng)價(jià)的研究仍在發(fā)展的過程中,還沒有十分完善.由上述文獻(xiàn)可以看出,對(duì)三維重建效果的研究不能只針對(duì)一個(gè)因素進(jìn)行評(píng)價(jià),應(yīng)該綜合多個(gè)因素從局部到全局進(jìn)行評(píng)價(jià).
在游戲開發(fā)、工業(yè)設(shè)計(jì)、航天航海等諸多領(lǐng)域,三維重建發(fā)揮著不可或缺的作用.本文基于圖像的三維重建方法展開了綜述,重點(diǎn)介紹了特征點(diǎn)檢測(cè)與匹配、SFM重構(gòu)、MVS的研究現(xiàn)狀,還介紹了三維重建的評(píng)價(jià)指標(biāo).
基于圖像的三維重建不需要精密的測(cè)量?jī)x器,成本低,同時(shí)該方法計(jì)算出了相機(jī)的內(nèi)外參數(shù),使得重建效果更為精確,具有快速、簡(jiǎn)便、逼真的優(yōu)點(diǎn),能較好地實(shí)現(xiàn)現(xiàn)實(shí)事物的虛擬化,但是其仍存在一些缺點(diǎn):
1)在對(duì)物體的細(xì)節(jié)特征重建上不是很理想;
2)不能重構(gòu)出實(shí)時(shí)變化的場(chǎng)景,實(shí)時(shí)性不強(qiáng),不能應(yīng)用于實(shí)時(shí)地圖重建的操作中;
3)基于圖像的三維重建將場(chǎng)景中的物體都變成了二維對(duì)象,用戶很難獲取到需要的信息;
4)基于圖像的三維重建對(duì)照相機(jī)與攝影設(shè)備也有一定要求,大量的圖像文件需要足夠的存儲(chǔ)空間.
基于點(diǎn)云的三維重建也是一大研究熱點(diǎn).基于點(diǎn)云的三維重建需要精密的儀器,成本高,卻很難達(dá)到對(duì)大規(guī)模場(chǎng)景進(jìn)行重建的要求,但是其計(jì)算量小、精度高.基于圖像與基于點(diǎn)云的三維重建都有各自的優(yōu)點(diǎn)以及局限性,在今后的三維重建過程中,需要根據(jù)重建場(chǎng)景的規(guī)模以及自身擁有的設(shè)備等,選擇合適的手段進(jìn)行重建,重建得到的圖像會(huì)具備更好的性能.
1)基于圖像的三維重建在特征檢測(cè)與匹配過程中,耗時(shí)長(zhǎng)、精度低、無法識(shí)別物體表面的紋理信息,因此需要對(duì)特征點(diǎn)檢測(cè)與匹配該部分的內(nèi)容進(jìn)行更深層次的研究,從而促使基于圖像的三維重建發(fā)展更加成熟.
2)對(duì)重建工作進(jìn)行評(píng)價(jià)的算法并不是很多,發(fā)展較為緩慢,整體研究不夠成熟,未來對(duì)于評(píng)價(jià)算法的研究應(yīng)該更加注重整體與局部的結(jié)合,以及視覺精度與幾何精度的結(jié)合,以更全面地評(píng)價(jià)三維重建的效果.
3)在工業(yè)應(yīng)用中,由于各種外界因素的干擾,導(dǎo)致原始的三維重建方法并不適用于所有的環(huán)境中,因此研究出能夠面對(duì)各種不可控因素的三維重建方法成為一件迫在眉睫的事情.
4)由于基于圖像的三維重建計(jì)算量大,很難完成實(shí)時(shí)三維重建,希望在日后的研究中能夠縮減計(jì)算量,將基于圖像的三維重建運(yùn)用到實(shí)時(shí)重建上.