劉暢
摘要:在通過(guò)PSGN網(wǎng)絡(luò)得到單張圖像生成的三維點(diǎn)云后,由于點(diǎn)云精度較為稀疏,因此在表面重建后含有孔洞。提出使用隱式擬合方式進(jìn)行表面重建后,針對(duì)模型有孔洞的情況,找出孔洞進(jìn)行網(wǎng)格三角化、網(wǎng)格細(xì)分、網(wǎng)格平滑,最終得出完整封閉的幾何體模型。
關(guān)鍵詞:點(diǎn)云;泊松方程;孔洞修補(bǔ);深度學(xué)習(xí);三角剖分
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)06-0185-02
1概述
隨著深度學(xué)習(xí)研究越來(lái)越受到學(xué)者歡迎,無(wú)論是人臉識(shí)別還是無(wú)人駕駛的新聞都更多出現(xiàn)在大眾的視野,所以研究者們也將目光投入了三維重建技術(shù)與深度學(xué)習(xí)的結(jié)合。早年三維重建多是以序列圖像或是雙目、單目采集到的視覺(jué)圖像作為數(shù)據(jù)進(jìn)行研究,但如今使用單張圖像也可以進(jìn)行三維重建。很多人或許提出這樣的疑問(wèn),一張圖像所得到的數(shù)據(jù)如此少,怎樣才能進(jìn)行三維重建?這個(gè)問(wèn)題在深度學(xué)習(xí)快速發(fā)展以后得到了很好的回答。
常見(jiàn)的三維重建表現(xiàn)模式分為四種:深度圖、體素、點(diǎn)云、網(wǎng)格。針對(duì)單張圖像三維重建并且結(jié)合深度學(xué)習(xí)進(jìn)行研究的進(jìn)程中,基于體素重建的典型網(wǎng)絡(luò)結(jié)構(gòu)為3D-R2N2,該網(wǎng)絡(luò)結(jié)合GRU和LSTM的思想構(gòu)建了單視圖與多視圖相結(jié)合的體系,缺點(diǎn)在于會(huì)隨著模型精度增高計(jì)算量會(huì)得到指數(shù)級(jí)的增長(zhǎng);基于點(diǎn)云重建的典型網(wǎng)絡(luò)為PSGN,該網(wǎng)絡(luò)結(jié)合卷積與反卷積層進(jìn)行特征提取,聯(lián)合兩個(gè)分支得到最后的點(diǎn)云數(shù)目,一個(gè)分支預(yù)測(cè)全局點(diǎn)云,一個(gè)分支預(yù)測(cè)局部點(diǎn)云;基于網(wǎng)格重建的典型網(wǎng)絡(luò)Pixel2Mesh,該網(wǎng)絡(luò)一部分提取圖像特征,一部分利用變形思想,以三維橢圓網(wǎng)格作為三維重構(gòu)目標(biāo)的初始化結(jié)構(gòu),將圖像的淺層到深層的特征,反映到三維橢圓網(wǎng)格形狀的改變上。這些網(wǎng)絡(luò)的出現(xiàn)使得單張圖片重建在各種表現(xiàn)形式上都顯示出非常不錯(cuò)的結(jié)果,后續(xù)也有很多學(xué)者在這幾種網(wǎng)絡(luò)上進(jìn)行改進(jìn),并且也進(jìn)一步得到良好效果。
2總體流程
本文總體流程為首先拍攝現(xiàn)實(shí)巖石圖像作為PSGN數(shù)據(jù),得出數(shù)量為1024的點(diǎn)云三維模型,第二步經(jīng)過(guò)泊松表面重建得到初步的表面模型圖,第三步針對(duì)模型具有孔洞的地方進(jìn)行修補(bǔ)。該算法在windows系統(tǒng)上完成,運(yùn)行平臺(tái)為VS2013,所使用到的開(kāi)源庫(kù)有PCLl.8、BOOSTl.61.0、CGAIA.9、Open-Mesh5.1。
2.1單張圖片三維點(diǎn)云模型重建
2016年Fan提出的PSGN網(wǎng)絡(luò)含有兩個(gè)分支,其一卷積層和反卷積層形成最終點(diǎn)云的整體結(jié)構(gòu),其二全連接層加強(qiáng)局部點(diǎn)云的生成。本次實(shí)驗(yàn)使用的版本為hourglass version,類(lèi)似于漏斗類(lèi)型,改版本中加入遞歸循環(huán)能夠更好地進(jìn)行編碼解碼,綜合全局以及局部的信息,特別是在需要在局部進(jìn)行表現(xiàn)的區(qū)域,該網(wǎng)絡(luò)可以得到效果不錯(cuò)的表現(xiàn)。
2.2表面重建
生成點(diǎn)云的三維模型以后,本文選擇使用網(wǎng)格形式進(jìn)行表現(xiàn)。選擇使用三角網(wǎng)格形式原因是易于生成,并且在進(jìn)行進(jìn)一步操作時(shí),三角網(wǎng)格相比于多邊形網(wǎng)格具有更多成熟的算法可以供使用。
本文選擇泊松重建,泊松重建的步驟:
①求解泊松方程取得點(diǎn)云模型表面的信息。
②利用獲取到的隱形方程進(jìn)行等值面的提取。設(shè)置變量值為j,當(dāng)j>0時(shí)則設(shè)定在模型內(nèi)部;當(dāng)j<0,則設(shè)定在模型外部,只提取j=0的等值面。
③根據(jù)等值面提取得到具有真實(shí)幾何實(shí)體表面信息并得到模型。
2.3孔洞修補(bǔ)
孔洞修補(bǔ)[6]首先需要找到屬于孔洞的邊界,再針對(duì)孔洞進(jìn)行三角剖分。如果該條邊屬于孔洞的邊,那么該條邊一定只有一個(gè)三角片與之相連,我們可以利用這一特性進(jìn)行尋找孔洞的邊界。
在尋找開(kāi)始之前,應(yīng)設(shè)置結(jié)構(gòu)存儲(chǔ)頂點(diǎn)v、邊h以及面f,根據(jù)孔洞特性進(jìn)行尋找模型中缺失的位置具體分布在哪里,找出具體位置進(jìn)行存儲(chǔ)并進(jìn)行填充。填充孔后,根據(jù)CGAL庫(kù)的使用說(shuō)明,可以使用節(jié)網(wǎng)格劃分中描述的網(wǎng)格劃分函數(shù)cgal::polygon_mesh_processing::refineO和cgal::polygon_mesh_pro-cessing::fair()對(duì)生成的面片進(jìn)行細(xì)化和光順。
3實(shí)驗(yàn)結(jié)果
3.1點(diǎn)云模型的生成
輸入單張真實(shí)巖石圖片(如圖3所示),巖石種類(lèi)選擇沒(méi)有限制,可以是砂巖、石英巖,也可以是玄武巖。巖石不同于ShapeNet數(shù)據(jù)集中常見(jiàn)的飛機(jī)、椅子等模型,得到點(diǎn)云模型(如圖4所示)的結(jié)果同樣也顯示出該網(wǎng)絡(luò)也較好的可擴(kuò)展性。由圖3和圖4可見(jiàn),圖3左起第一張?jiān)紙D對(duì)應(yīng)圖4左起第一張點(diǎn)云模型圖,其他圖片同理。
3.2泊松表面重建
在點(diǎn)云文件生成后,下一步進(jìn)行表面重建。在表面重建中使用濾波進(jìn)行圖像處理,使用低通濾波,即阻高頻通低頻使得圖像進(jìn)行平滑。隨后進(jìn)行法向量的計(jì)算,設(shè)置搜索樹(shù)搜索半徑為5,將點(diǎn)云數(shù)據(jù)的坐標(biāo)和法向信息拼接,隨后開(kāi)始泊松重建,并保存為ply格式。如圖5所示,依次為原始圖像,經(jīng)過(guò)PSGN網(wǎng)絡(luò)形成的點(diǎn)云模型,再經(jīng)過(guò)泊松重建后的表面非封閉幾何模型。由于PSGN網(wǎng)絡(luò)輸出點(diǎn)云個(gè)數(shù)僅僅只為1024個(gè),因此在表面重建后會(huì)形成非封閉的表面模型,所以為形成封閉幾何體,就要進(jìn)行缺失的孔洞修補(bǔ)。
3.3孔洞修補(bǔ)
將獲取到的模型進(jìn)行觀(guān)察,發(fā)現(xiàn)模型兩側(cè)具有較大的孔洞,但巖石表面應(yīng)是封閉幾何體,因此必須進(jìn)行空洞修補(bǔ),才能得到較符合實(shí)際情況的模型。如圖6所示,左起為含有孔洞的巖石表面模型,右邊為經(jīng)過(guò)修補(bǔ)后構(gòu)成的網(wǎng)格模型,可以看到結(jié)果是完整的。
4結(jié)論
由實(shí)驗(yàn)結(jié)果可以表明,在針對(duì)具有孑L洞的表面模型中,利用網(wǎng)格的半邊數(shù)據(jù)結(jié)構(gòu),結(jié)合孔洞結(jié)構(gòu)特性進(jìn)行修補(bǔ),得到了不錯(cuò)的效果。在以后的研究中,還可以繼續(xù)增加由深度學(xué)習(xí)網(wǎng)絡(luò)得到的點(diǎn)云模型精度來(lái)進(jìn)行表面重建,也可以得到較為完整的表面模型,在這一點(diǎn)上也是值得研究的領(lǐng)域。