劉暢



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