国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

未知空間目標紋理缺失表面三維重建算法

2022-02-01 13:42:26黃燁飛張澤旭崔祜濤
宇航學報 2022年12期
關鍵詞:體素像素深度

黃燁飛,張澤旭,崔祜濤

(哈爾濱工業(yè)大學航天學院深空探測基礎研究中心,哈爾濱 150080)

0 引 言

獲取空間目標的高精度形貌與完整三維結構是在軌服務與維護的基礎。相較于利用激光掃描獲取空間目標結構,基于多視圖幾何原理重建目標三維結構的技術,即從運動恢復結構(Structure from motion,SfM)技術,在工作頻率和重建精度上均有較大提升,也是現(xiàn)在計算機視覺在航天領域的重要應用之一。

傳統(tǒng)的多視圖幾何技術需要從像素梯度信息中提取特征點,并在不同圖像間構建特征點的對應關系。對于紋理豐富的區(qū)域,傳統(tǒng)算法能夠提取大量穩(wěn)定的特征位置,進而在恢復目標結構時產(chǎn)生較為稠密的結果。

然而,對于光滑且缺乏紋理的目標區(qū)域,如衛(wèi)星表面因反射導致的高亮度區(qū)域,缺失的特征點導致重建結果的缺失。另一方面,對于空間目標中的相似特征點,如太陽能電池的角點等,傳統(tǒng)的SfM過程并不能獲取特征點在圖像中相對其他特征的全局位置信息,錯誤的匹配關系也可能導致重建結果的不完整。文獻[1]通過對核線圖進行邊緣檢測以解決圖像弱紋理區(qū)域匹配問題,文獻[2]融合傾斜攝影和激光掃描提高重建結果的完整性。然而這些方法其本質(zhì)上依然沿用增強圖像紋理特征、利用相機組限制圖像匹配范圍[3]的思路,并不能解決傳統(tǒng)算法對于特征獨特性的依賴。

近年來隨著深度學習技術的發(fā)展,基于深度學習的三維重建技術在提高重建精度、完整性以及運算速度等方面有著巨大的潛力。利用基于訓練獲得的特征提取和匹配過程代替?zhèn)鹘y(tǒng)人為設計的圖像特征提取和描述,可以將圖像的全局信息引入局部的特征描述中,從而提升特征提取的數(shù)量以及匹配結果,進而緩解紋理缺失區(qū)域的重建結果完整性問題。如文獻[4]利用深度學習模塊替代了傳統(tǒng)特征提取的響應計算、主方向計算和描述過程,文獻[5]在構建特征描述過程中進行了額外的全局信息整合,文獻[6]利用大量仿真角點圖像進行預訓練等。但是這類算法僅提升了特征點提取和匹配的性能,并不能完全解決重建的完整性問題。

除了上述利用深度學習對傳統(tǒng)重建技術進行改進的策略,另一種策略通過輸入圖像序列以及對應的相機外參,將整個重建空間進行立體網(wǎng)格劃分,并直接對重建空間進行估計以獲得目標的三維結構[7-8]。這類端到端的深度學習框架通過對三維空間進行插值構建目標表面,極大提升了三維重建結果的完整性。然而,其重建精度受限于網(wǎng)格大小劃分,同時,其輸出結果極大占用內(nèi)存空間造成模型訓練困難。

近年來,基于逐像素深度估計的三維重建算法有效地緩解了內(nèi)存空間的消耗問題。通過輸入序列圖像以及對應的相機外參,利用深度學習框架獲取序列圖像初始參考幀中任意像素的深度,并最終整合多個圖像序列獲得目標的完整三維結構。文獻[9-10]中,通過多個卷積層提取圖像特征,并提出對不同深度平面通過單應性變化構建三維的視差損失張量(Cost Volume)以表征圖像間相同像素位置的對應情況。然而,此類方法在卷積過程中僅保留原始圖像1/16尺寸,丟失了部分深度信息。研究過程中進一步發(fā)現(xiàn),此類算法對于航天場景中的空間目標仿真圖像并不適用。

為了實現(xiàn)未知空間目標紋理缺失表面的完整三維重建,本文設計了一種通過神經(jīng)網(wǎng)絡估計像素深度,并利用截斷符號距離函數(shù)(Truncated signed distance function, TSDF)進行表面重建的算法。本文設計的神經(jīng)網(wǎng)絡框架借鑒了MVSNet[9]中利用深度區(qū)間計算Cost Volume的設計策略,通過計算不同深度間隔在圖像間的投影關系計算Cost Volume,保證了網(wǎng)絡對不同長度圖像序列的穩(wěn)定性。但是本文所設計網(wǎng)絡結構舍棄了單獨的特征提取模塊,同時在獲得1/16深度圖后,通過上采樣以及重投影過程,實現(xiàn)在原始圖像尺寸下的像素深度估計。在獲取單幅圖像深度圖后,將深度估計網(wǎng)絡對特征點的估計誤差作為圖像篩選的閾值,并利用TSDF對不同序列的深度估計結果進行融合,恢復目標表面結構。仿真校驗結果表明,本文所設計算法在保證重建精度的同時,極大提高了重建結果的完整性。

1 深度估計網(wǎng)絡結構設計

1.1 圖像Cost Volume計算

參考圖像I中的任意像素P=(u,v, 1)T,將其對應的3×3相機內(nèi)參矩陣記作K,則該像素轉(zhuǎn)換到相機歸一化坐標系下為K-1P。假設其深度為z,則該像素對應在參考坐標系下的空間點為z·K-1P。

若圖像I′與參考圖像相對運動為R,t,可將該空間點投影至該幅圖像對應的相機坐標系下,得到其投影點PI′=R·z·K-1P+t。

將PI′=(x1,y1,z1)T歸一化為:

(1)

將深度區(qū)間(dmin,dmax]等距離散化為n個預估值di:

(2)

式中:i=1,2,…,n表示深度區(qū)間編號。

(3)

對于3×H×W的RGB圖像,其3個通道均對應n個不同深度估計di下的轉(zhuǎn)換圖像I′w,最終構成3n×H×W的三維張量。

假設一個圖像序列中有m幅圖像,將第一幀圖像作為參考幀,后續(xù)m-1幅圖像通過其對應的相對運動信息可得m-1個三維張量Tj(j=1,2,…,m-1)。

根據(jù)式(4)計算此三維張量在該圖像序列中的方差C:

(4)

式中:(·)*2表示張量中逐元素求冪運算。

將方差C作為該圖像序列的Cost Volume用于后續(xù)的深度估計過程。Cost Volume的計算解決了圖像序列長度對于深度學習模型的影響,對于任意長度m的序列圖像,均可將其轉(zhuǎn)化為3n×H×W的張量,從而保證了深度學習模型對不同圖像序列的穩(wěn)定性。

圖1 深度估計網(wǎng)絡結構Fig.1 Model design for depth estimation

1.2 網(wǎng)絡結構設計

通過計算Cost Volume,將任意長度的圖像序列轉(zhuǎn)換為固定3n×H×W的張量,進一步將其拆分為3×n×H×W,設計深度網(wǎng)絡模型如圖1,實現(xiàn)逐像素的深度估計。

圖1中bs表示訓練過程batch大小,表示將該序列圖像中的相鄰幀根據(jù)式(3)進行圖像轉(zhuǎn)換,?表示將多個張量在深度方向上進行疊加。為更加直觀地描述維度變化過程,經(jīng)過每一層處理后的張量維度標注在該層模塊的上/下方,未特別標注的各層維度與其前一層保持一致。

在計算圖像序列Cost Volume后,將其在圖像長和寬方向下采樣至原始尺寸1/16,通過三維卷積和逆卷積模塊實現(xiàn)對1/16圖像中任意位置產(chǎn)生n維向量。在深度方向上通過softmax(·)函數(shù),將n維向量轉(zhuǎn)化為對應預設n個深度區(qū)間的概率,計算該向量的期望作為該像素位置的深度估計結果,以保證深度估計過程的連續(xù)可導[8]。

在獲取1/16圖像深度后,首先通過上采樣過程將其恢復至原始圖像尺寸大小。為了解決上采樣過程造成的誤差,將深度圖與圖像序列初始參考幀以及相鄰幀進行疊加,利用4個二維卷積層實現(xiàn)對深度圖的優(yōu)化。整體網(wǎng)絡結構中,各層kernel size均為3,padding均為1,第8~10層額外設定參數(shù)output padding分別為(1,1,1)、(1,0,0)和(1,1,1),其余對應參數(shù)設置如表1。

表1 網(wǎng)絡參數(shù)設置Table 1 Settings of the CNN model

2 基于深度圖的表面重建

2.1 基于TSDF的表面表征

利用截斷符號距離函數(shù)(Truncated signed distance function, TSDF)進行表面重建原理如文獻[11]所述。將三維空間均分為若干體素的集合X,記當前體素x(x∈X),di(x)表示第i次觀測下,沿相機光心通過體素x射向物體表面的深度,cz(x)表示體素x在相機坐標系z方向的深度,t表示參與表面重建融合迭代過程的體素深度范圍,則通過式(5)可將三維空間中任意體素x賦值為ti(x),且滿足ti(x)∈[-1, 1]。

(5)

ti(x)<0表示該體素位于物體內(nèi)部,ti(x)>0表示體素位于外部開放空間,ti(x)=0時表明體素x在當前相機觀測結果中位于物體表面。

初始化對體素x的觀測結果T0(x)=0,以及對應的置信度W0(x)=0,記融合了i(i≥1)次觀測后的觀測結果為Ti(x),其對應的體素置信度為Wi(x)。則對體素x的觀測融合過程如式(6):

(6)

以wi(x)表示第i次觀測過程對體素x的置信度,相機視野范圍內(nèi)的體素置信度設為1,其余為0。

通過式(6),將不同觀測位置下的觀測結果進行融合,得到基于TSDF表征的三維空間Ti(X),對其進行插值,Ti(X)=0即為在不同位置下觀測獲得的目標表面結果。

2.2 基于CUDA的重建過程

2.2.1三維重建空間構建

對于內(nèi)參為fx,fy,cx,cy的標準相機模型,從像素坐標(u,v, 1)T到相機系坐標(x,y,z)T有如式(7)轉(zhuǎn)換關系:

(7)

進一步可得:

(8)

對于任意一幅圖像,通過深度圖,獲取其觀測到物體最大深度為dmax,構建如圖2所示錐形空間,視錐體頂點為相機光心,四個底角分別為最大深度下圖像四個頂點對應的空間位置。

圖2 相機視錐體Fig.2 Schematic of the view frustum

對于像素坐標系中圖像右下位置(u0,v0, 1)T,根據(jù)式(8)得到對應相機坐標系中視錐體右下位置坐標:

(9)

通過類似過程,可以得到視錐體左上、右上、左下位置坐標。根據(jù)該相機坐標系相對于參考系姿態(tài)信息,可進一步將該視錐體中心以及四個底角位置轉(zhuǎn)換至參考坐標系下,分別計算其在參考系三軸范圍內(nèi)的深度區(qū)間,通過不同視錐體在參考系下的值域范圍,生成用于目標重建的三維空間。

2.2.2CUDA并行計算分配

由于GPU中grid由多個block組成,可得block索引為:

(10)

單個block中最大線程數(shù)為Mthread, block中的線程索引(thread index)為i。則該線程在單個GPU并行計算的所有線程中索引為:

Ithread=Iblock×Mthread+i

(11)

(12)

3 仿真實驗校驗

3.1 仿真圖像生成

仿真圖像生成過程中共計使用14個不同模型,其中11個來自微軟3D庫,用于擴充模型的多樣性,其余3個模型分別為北斗衛(wèi)星、OSIRIS-REx衛(wèi)星和ICESat-2衛(wèi)星。所有模型均縮放至約300 mm,為了防止過擬合,實際模型最大邊長縮放為270~350 mm。

仿真場景如圖3,目標尺寸約為300 mm,且相鄰兩幀圖像間物體保持三軸±(5°+3°×s)旋轉(zhuǎn),s為[-1, 1]隨機數(shù)。相機在距離目標1200±20 mm,半徑10 mm的圓柱區(qū)域內(nèi)隨機移動,相機拍攝方向始終平行于光照方向。相機內(nèi)參fx=fy=1650,cx=cy=300。

圖3 圖像仿真場景Fig.3 Rendering scene of image generation

對于每個模型生成1000張序列圖像,部分仿真圖如圖4所示。

圖4 仿真圖像Fig.4 Examples of synthetic images

在仿真實驗中,本文也進行了其他尺寸模型實驗(模型縮放至400 mm、1000 mm、1200 mm),并對應調(diào)整了相機拍攝距離以及相機參數(shù)、深度區(qū)間范圍等,并未發(fā)現(xiàn)對網(wǎng)絡的訓練過程造成明顯影響。

3.2 訓練設置

圖像的姿態(tài)信息通過COLMAP[12-13]稀疏重建獲得,圖像的深度信息由仿真過程生成。訓練過程中,將微軟3D庫模型以及北斗衛(wèi)星模型仿真圖像作為深度估計網(wǎng)絡的訓練集,OSIRIS-REx和ICESat-2衛(wèi)星模型作為測試集以驗證在未知模型中的泛化能力。將每個模型的1000張圖像,按每5張構成一個圖像序列。初始學習率為0.001,采用Adam優(yōu)化器,betas分別為0.9與0.999,weight decay為0。預設深度區(qū)間為750~1550 mm,分別測試了將該區(qū)間劃分為128/160/192個間隔下的模型訓練情況。

損失函數(shù)設置為如下:

(13)

式中:I為圖像序列參考幀,H,W分別為圖像的長和寬。對于圖像中任意像素p,記其深度真值G(p),通過神經(jīng)網(wǎng)絡獲取其估計深度E(p),以p∈O表示該像素位置屬于觀測目標,e(p)為像素深度的Smooth L1 Loss,即:

(14)

式中:x=E(p)-G(p)。

該深度估計網(wǎng)絡在12 G顯存的NVIDIA 3060上進行訓練和測試,訓練過程中batch固定為1,訓練10個epoch。

需要注意的是,由于在圖3所示的仿真場景中,光學相機觀測方向與光照方向基本平行,且光照強度適當,保證了目標觀測結果的完整,從而可以將目標所占像素均納入損失函數(shù)中進行計算??紤]到空間環(huán)境的復雜性,實際觀測條件下光照強度、入射方向等因素影響,導致部分像素過亮或過暗。這可能需要對部分訓練參數(shù)進行調(diào)整,如:在計算損失函數(shù)時對像素進行篩選,對圖像進行預處理,以及增加訓練epoch數(shù)量等。

3.3 深度估計誤差

為衡量神經(jīng)網(wǎng)絡模型深度估計效果,分別評估了不同間隔劃分數(shù)量下測試集中所有圖像序列的像素平均估計誤差如表2。

表2 像素平均估計誤差Table 2 Average estimating error of pixels

不同誤差區(qū)間所占測試結果百分比如表3所示。

表3 估計誤差區(qū)間Table 3 Error ration of each range

根據(jù)表2和表3可以看出,在深度方向劃分更多的間隔并不能夠保證更高的估計精度,這一現(xiàn)象可能源于更多的參數(shù)量引起的神經(jīng)網(wǎng)絡模型過擬合。

圖5展現(xiàn)了部分圖像序列在n=160下對于序列參考幀的深度估計結果。

圖5 深度估計結果Fig.5 Examples of depth estimation

從圖5可以看出,基于深度學習的深度估計算法能夠?qū)臻g非合作目標中的光滑無紋理區(qū)域進行深度估計,但是對于目標部分零部件等細節(jié)區(qū)域估計結果還有待進一步提高。

3.4 表面重建結果

本文在表面重建過程中并未使用測試集衛(wèi)星模型的所有圖像。由于在稀疏重建過程中,特征點的位置通過大量優(yōu)化過程獲得,通過將特征點投影至對應圖像中,評估該幅圖像中對所有特征點的平均估計誤差,并以此作為對圖像整體估計誤差的近似,通過不同的誤差閾值對圖像進行篩選并重建。重建過程中,設置空間中體素網(wǎng)格大小為3 mm,式(5)中t=6 mm。OSIRIS-REx衛(wèi)星和ICESat-2衛(wèi)星不同觀測角度下的實際結構如圖6所示。

圖6 衛(wèi)星實際結構Fig.6 Structures of satellite models

分別設定特征點估計誤差閾值為5 mm和10 mm,獲得的表面重建結果如圖7所示。

圖7 不同閾值表面重建結果Fig.7 Results with different error threshold

對比圖6中的衛(wèi)星實際結構以及圖7中的重建結果,可以看出,采用較小的誤差閾值進行圖像篩選有利于在整體結果中突出衛(wèi)星表面的細節(jié)信息,然而,更少的圖像數(shù)量也會導致單個像素的估計誤差難以被優(yōu)化,使得重建結果不夠平滑。

3.5 點云結果對比

由于傳統(tǒng)算法難以解決紋理缺失區(qū)域?qū)е碌拇罅靠斩?,進而難以實現(xiàn)區(qū)域的表面重建。將3.4節(jié)中基于TSDF的表面重建結果進行抽樣,生成重建點云與傳統(tǒng)算法進行對比。

傳統(tǒng)重建算法由COLMAP對所有1000張圖像進行重建產(chǎn)生,得到點云結果如圖8(a)??梢钥闯?,相較于傳統(tǒng)算法,本文所提方法有效地解決了紋理缺失區(qū)域的點云/表面重建結果完整性問題。

圖8 基于深度學習算法與傳統(tǒng)算法點云對比Fig.8 Point clouds of learning-based method versus traditional methods

通過測量衛(wèi)星重建點云外形尺寸,得到重建精度如表4。模型1和2分別代表OSIRIS-REx衛(wèi)星和ICESat-2衛(wèi)星模型。

表4 重建精度Table 4 Reconstruction accuracy

根據(jù)表4結果,由于COLMAP對于目標重建的完整性不佳,部分情況下會導致目標外形尺寸誤差較大。而通過本文方法進行重建,在保證了目標重建結果完整性的同時,也保證了較高的重建精度。

4 結 論

對于未知空間目標紋理缺失表面的重建結果缺失問題,本文設計了一種基于深度學習和TSDF的重建算法。首先通過構建神經(jīng)網(wǎng)絡,實現(xiàn)對序列圖像參考幀中任意像素的深度估計,在訓練過程中利用不同模型生成仿真圖像,提高了神經(jīng)網(wǎng)絡泛化能力。其次,通過TSDF算法將圖像深度信息轉(zhuǎn)化為目標表面,實現(xiàn)了不同觀測位置下的重建結果融合,提高了觀測結果的完整性。根據(jù)文中進行的仿真實例,該重建算法實現(xiàn)了對未知空間目標的深度估計與完整表面重建,有效地解決了傳統(tǒng)算法的表面重建結果缺失問題。

猜你喜歡
體素像素深度
趙運哲作品
藝術家(2023年8期)2023-11-02 02:05:28
基于多級細分的彩色模型表面體素化算法
像素前線之“幻影”2000
深度理解一元一次方程
運用邊界狀態(tài)約束的表面體素加密細分算法
“像素”仙人掌
基于體素格尺度不變特征變換的快速點云配準方法
深度觀察
深度觀察
深度觀察
大埔区| 尉犁县| 乌拉特中旗| 红安县| 泰和县| 吴堡县| 江山市| 马山县| 东乌| 闵行区| 于都县| 织金县| 屯门区| 平遥县| 吉林省| 龙岩市| 古丈县| 治县。| 金溪县| 句容市| 肇州县| 绥德县| 泰和县| 尼勒克县| 杭州市| 湟源县| 南平市| 津南区| 靖州| 沂源县| 巴楚县| 新田县| 乌鲁木齐市| 田东县| 内丘县| 长乐市| 保康县| 德昌县| 会理县| 抚州市| 宝应县|