陳新華,戴文伯
(中交疏浚技術裝備國家工程研究中心有限公司,上海 201208)
隨著測量技術的飛速發(fā)展,點云數(shù)據(jù)獲取的方式越來越多,越來越先進[1]。如今在陸地上獲取點云數(shù)據(jù)主要是通過激光掃描儀器[2],而水下航道點云數(shù)據(jù)主要依靠單波束和多波束聲吶設備來獲得[3-4]。聲吶設備一般安裝在船舶或潛艇上,采集點云數(shù)據(jù)的精度、密度除跟設備的精度有關外還跟設備的采樣周期、船舶航行速度有關。隨著多波束技術的快速發(fā)展,航道點云數(shù)據(jù)在密度和體量上都有很大提升。聲吶掃描獲取的點云數(shù)據(jù)雖數(shù)據(jù)量大,但冗余和噪聲少,且排列規(guī)則。根據(jù)聲吶采集點云數(shù)據(jù)的特點,本文創(chuàng)新地采用基于Unity3D的地形處理技術,將離散的航道點云數(shù)據(jù)可視化地構建成逼真的水下航道。并將該技術成功應用于“耙吸挖泥船模擬仿真平臺”項目中。
Unity3D是一個全面整合的專業(yè)3D引擎,在虛擬現(xiàn)實、仿真計算、3D重現(xiàn)上有著廣泛的應用。該3D引擎具有豐富的組件模塊,如地形、物理、渲染組件等。Unity3D的可視化編程界面能完成各種復雜的開發(fā)工作,高效的腳本編輯、模型的自動瞬時導入、一鍵發(fā)布、多平臺開發(fā)和部署,開發(fā)者不需要了解圖形底層細節(jié)相關知識就能開發(fā)出三維程序。Unity3D地形處理模塊底層實現(xiàn)原理主要是基于高度圖。高度圖是由二維數(shù)組組成的一組高度數(shù)據(jù)[5]。地形的高度就是由一系列高度不同的網(wǎng)格組成,數(shù)組中每個元素的索引值用來定位網(wǎng)格,而所存儲的值就是網(wǎng)格的高度。Unity3D可手動設置地形的長度和寬度,也可以通過腳本來創(chuàng)建地形,設置長度、寬度和高度。
Unity3D雖然功能強大,但在點云數(shù)據(jù)處理方面一直是空白,沒有組件可方便地構建場景。對航道數(shù)據(jù)可視化、地質地形建模、仿真模擬系統(tǒng)開發(fā)形成了一定的瓶頸。本文將航道點云數(shù)據(jù)與Unity3D地形處理模塊相結合,開發(fā)一套可以高效處理航道點云數(shù)據(jù)的基礎組件,可快速實現(xiàn)點云數(shù)據(jù)的可視化。
采樣設備采集物體表面的空間位置坐標信息,得到1個點的集合,稱之為“點云”[6]。該集合能離散地表示1個物體的外表面形狀。除(x,y,z)代表的幾何位置信息外,還可以表示1個點的RGB顏色、灰度值、深度以及分割結果等。點云數(shù)據(jù)的格式如下:
PointCloud={x,y,z,r,g,b,灰度值,深度,…}
點云數(shù)據(jù)重建是逆向工程的一個分支,被廣泛地應用于計算機輔助設計與制造、可視化仿真系統(tǒng)場景建模、地理信息系統(tǒng)中地形地質建模[7-9]。航道點云數(shù)據(jù)空間位置坐標信息是基于大地坐標系進行測量得到,可以根據(jù)大地坐標系、地圖投影、投影坐標系推算出各點處的經(jīng)緯度信息。
航道點云數(shù)據(jù)的處理流程分為數(shù)據(jù)讀取、數(shù)據(jù)預處理、三角網(wǎng)格構建、高度插值、渲染等。本文處理的航道點云數(shù)據(jù)集合只包含幾何位置數(shù)據(jù),數(shù)據(jù)存儲于文本文件中,每行3個數(shù)據(jù),分別表示1個點的x,y,z的值。以流的方式讀取點云數(shù)據(jù),將數(shù)據(jù)放入內(nèi)存。為了快速構建三角網(wǎng)格,點云數(shù)據(jù)分別按照X軸、Z軸排序,確定地形在X、Z軸上的最小、最大值,分別為Min X,Max X,Min Z,Max Z從而得到整個地形區(qū)域的整體范圍。同時,能得到地形的中心坐標為:
為了提升地形加載速度,將整塊地形加載分割成Column×Row區(qū)域塊,程序將根據(jù)視野范圍變化動態(tài)地決定那些區(qū)域塊進行加載與顯示。每個區(qū)域塊的分辨率為Resolution,各個分辨率對應的實際物理長度值為CeilSize,則可得每一區(qū)域塊的長度為:
設置該地形塊數(shù)據(jù)初始化為無效數(shù)據(jù)Valid-DataMask。取一區(qū)域包含所有頂點,該區(qū)域的大小可以通過現(xiàn)有區(qū)域的最小值確定:
最小值減去1個正數(shù),使得其值更??;整個區(qū)域塊的長寬都進行適當放大,這樣使得整個區(qū)域面積比實際區(qū)域面積稍大,可以包含所有區(qū)域范圍內(nèi)的點云數(shù)據(jù)。
將該區(qū)域劃分成AreaRow×AreaColumn塊。將該區(qū)域平分成N塊,則對應的AreaRow和
N的取值決定了矩形塊的大小,同時也決定了區(qū)域塊中所要處理的三角形的數(shù)量。對XZ平面上排序好的點云數(shù)據(jù)進行二維Delauney三角網(wǎng)剖分。將剖分好的三角網(wǎng)格數(shù)據(jù)寫入對應的區(qū)域塊中。對該區(qū)域塊的三角網(wǎng)格數(shù)據(jù)進行插值,對需要進行插值的點進行判斷,看該點是否在區(qū)域的三角網(wǎng)格中,如果在三角網(wǎng)格中,則該點的高度值依據(jù)對應三角形的3個高度值插值獲得,該值記為Height。其插值依據(jù)線性插值,插值公式如下所示:
插值完成,將無效數(shù)據(jù)設置成對應的高度值,最后將地形的區(qū)域Row、Column、CeilSize、resolution、Height、ValidDataMask序列化寫入文件。
航道點云數(shù)據(jù)經(jīng)算法處理后,數(shù)據(jù)序列化存入文件中,在Unity3D程序中反序列化讀取對應數(shù)據(jù),并將數(shù)據(jù)傳遞給地形對象對應的地形數(shù)據(jù)中,同時,對該區(qū)域塊數(shù)據(jù)進行紋理貼圖,使得構建的地形更真實。將該構建的地形生成預設體,該預設體可放入不同的Unity3D工程中。
在項目中添加預設體文件,并添加環(huán)境光,根據(jù)地形場景CenterX,CenterZ中心位置,設置虛擬相機位置于中心位置,添加角色組件,就可以在三維航道地形數(shù)據(jù)上進行漫游操作。操作者可以全景觀看整個航道的概況,也可細致地觀看每一處細節(jié)。點云數(shù)據(jù)從數(shù)據(jù)讀取到實現(xiàn)三維可視化的主要流程見圖1。
圖1 航道點云數(shù)據(jù)可視化處理流程Fig.1 Visual handling flow of waterway point cloud data
航道點云數(shù)據(jù)可視化處理的過程中主要關心如何設置每個地形塊的分辨率、各個分辨率代表的實際物理長度、容納三角格網(wǎng)區(qū)域塊大小的劃分等。
本文實驗的點云數(shù)據(jù)是長江口航道點云數(shù)據(jù),以浮點數(shù)存儲形式儲存,每行3個數(shù)據(jù),分別對應頂點的X、Y、Z。實驗操作電腦系統(tǒng)為Win7 64位,硬件配置為gtx960顯卡、16 G內(nèi)存、i7-4790CPU處理器。實驗分2組進行。第1組為同等劃分精度,研究數(shù)據(jù)量與顯示幀率的關系;第2組為同等數(shù)據(jù)量的情況下,研究不同劃分精度與顯示幀率的關系。
實驗在同等精度、不同數(shù)據(jù)量的情況下,點云數(shù)據(jù)從讀取到最后顯示所花費的時間、顯示幀率情況,見表1。
表1 相同劃分精度、不同數(shù)據(jù)量花費時間與幀率情況Table1 The costing time and frame rate of the same division precision and different data
實驗在79 224 kb的數(shù)據(jù)量的基礎上,按照不同劃分精度,研究程序從加載到顯示所花費的時間以及顯示幀率的情況,見表2。
表2 相同數(shù)據(jù)、不同劃分精度所花費時間與幀率情況Table1 2 The costing timeand frame rate of the samedata and different division precision
基于Unity3D實現(xiàn)的相同數(shù)據(jù)、不同劃分精度情況下實現(xiàn)效果見圖2。從圖2可以看出,(c)圖航道細節(jié)的數(shù)據(jù)明顯多于(a)圖和(b)圖。
圖2 不同插值精度實現(xiàn)效果Fig.2 Different precision and interpolation effect
本文還使用了其他點云三維生成算法進行對比實驗,主要用到OpenSceneGraph的基于三維的Delauney網(wǎng)格生成和顯示的算法,CGAL庫里的Delauney生成三角網(wǎng)格的算法。OpenSceneGraph是跨平臺的圖形開發(fā)包,里面集成了很多圖形開發(fā)相關的算法。OpenSceneGraph圖形庫里的OsgUtil鏈接庫下封裝好了DelaunayTriangulator,實現(xiàn)了Delaunay三角網(wǎng)格運算,根據(jù)一組頂點的集合生成一系列的三角形,同時,還能對生成的三角網(wǎng)格進行約束限制。CGAL是計算幾何算法庫,被廣泛應用于幾何算法相關的領域。諸如三角剖分、Voronoi圖、多邊形和多面體的布爾運算、網(wǎng)格簡化等。CGAL中的Delaunay算法采用的是增量型算法。3種算法在同等數(shù)據(jù)量、相同劃分精度的情況下,實驗對比結果見表3。
表3 相同數(shù)據(jù)相同劃分精度不同算法所花費時間與幀率情況Table 3 Thecosting time and frame rateof the same data and division precision,and different algorithm
跟其他三維網(wǎng)格剖分算法進行對比,本文基于Unity3D高度圖規(guī)則格網(wǎng)生成算法在運行時間上明顯快于它們,原因在于本文用到的是基于二維三角網(wǎng)格剖分,并對網(wǎng)格做規(guī)則格網(wǎng)連接。而其他算法是直接對所有點建立三維網(wǎng)格,運算更為復雜,耗時更長。
由對比實驗可得,在gtx960顯卡的處理能力下,同等劃分網(wǎng)格精度,處理數(shù)據(jù)量越大花費時間越長,幀率越低,但顯示場景越大;同等數(shù)據(jù)量,劃分網(wǎng)格越精細,耗費時間越長,幀率越低,但顯示更逼真。仿真程序需要在滿足流暢顯示的情況下,最大限度地還原實物原貌和顯示效果。由于人眼存在視覺殘留,1 s內(nèi)只要有24幀及以上的數(shù)據(jù)就會感覺是流暢的,本文在對79 224 kb數(shù)據(jù)做實驗的情況下,將其劃分精度控制在>0.5 m的情況下能流暢瀏覽構建好的地形。將精度控制在0.5~1 m的范圍內(nèi),地形在顯示效果上不存在明顯的數(shù)據(jù)丟失、效果失真等情況。
該算法成功應用于發(fā)改委資助的創(chuàng)新能力建設項目“耙吸船模擬仿真平臺”。根據(jù)真實長江口航道點云數(shù)據(jù)構建航道地形,實現(xiàn)航道三維建模顯示,在數(shù)據(jù)劃分精度上采用了0.5 m的系數(shù),幀率顯示25幀以上。流暢地在仿真環(huán)境中模擬疏浚作業(yè),實時漫游瀏覽航道地形,5種常見地質紋理數(shù)據(jù)任意切換,對航道地形進行挖泥模擬操作,挖深挖寬可調節(jié)。該算法設計已模塊化,可快速地將該算法移植到不同的仿真程序中。
因Unity3D開發(fā)速度快,實現(xiàn)效果逼真,基于Unity3D做可視化仿真的企事業(yè)單位越來越多,基于Unity3D實現(xiàn)的航道點云數(shù)據(jù)處理模塊將會用于更多的可視化仿真行業(yè),特別是航道、地質地形、巖土可視化等方向。將對這些行業(yè)起到巨大的推動作用。
1)本文對點云數(shù)據(jù)進行排序優(yōu)化,加快處理速度,創(chuàng)新地采用基于高度圖的方法將點云數(shù)據(jù)處理成Unity3D能識別的數(shù)據(jù);
2)實驗對比分析找出影響顯示質量和幀率的關鍵因素,合理決定網(wǎng)格劃分精度,讓程序兼顧顯示效果和運行速度;
3)將算法應用于“耙吸船模擬仿真平臺”項目,進一步驗證算法設計的正確性、參數(shù)選擇的合理性,為后續(xù)其它仿真項目奠定堅實的基礎。
[1] 王麗輝.三維點云數(shù)據(jù)處理的技術研究[D].北京:北京交通大學,2011.WANG Li-hui.Study on data processing technology of 3D cloud points[D].Beijing:Beijing Jiaotong University,2011.
[2]趙煦.基于地面激光掃描點云數(shù)據(jù)的三維重建方法研究[D].武漢:武漢大學,2010.ZHAO Xu.Reasearch on 3D reconstruction of point cloud from terrestrial laser scanning[D].Wuhan:Wuhan University,2010.
[3]房旭東,鐘貴才.多波束聲吶和側掃聲吶數(shù)據(jù)融合方法研究綜述[J].海岸工程,2016,35(4):63-68.FANG Xu-dong,ZHONG Gui-cai.Research overview of multibeamsonar and sidescanningsonar data fusion method[J].Coastal Engineering,2016,35(4):63-68.
[4] 李岳明,李曄,盛明偉,等.AUV搭載多波束聲納進行地形測量的現(xiàn)狀及展望[J].海洋測繪,2016,36(4):7-11.LI Yue-ming,LI Ye,SHENG Ming-wei,et al.Application and development of topographic survey using multibeam echosounder equipped on AUV[J].Hydrographic Surveying and Charting,2016,36(4):7-11.
[5] 李天培,孫少斌.基于高度圖的地形紋理生產(chǎn)方法[J].火力與指揮控制,2012,37(1):172-175.LI Tian-pei,SUN Shao-bin.Research on method of producing terraintexturebased onelevationmap[J].Fire Control and Command Control,2012,37(1):172-175.
[6] 陳金銳.點云數(shù)據(jù)三維重建研究[D].武漢:武漢理工大學,2011.CHEN Jin-rui.Reasearch on 3-D reconstruction from point colud[D].Wuhan:Wuhan University of Technology,2011.
[7] 趙顯富,張育鋒,曹爽,等.工業(yè)構件密集點云數(shù)據(jù)與CAD模型的配準[J].測繪科學,2015,40(4):112-114.ZHAOXian-fu,ZHANGYu-feng,CAOShuang,et al.Registration of dense point cloud data of industrial component and CADModel[J].Scienceof Surveying and Mapping,2015,40(4):112-114.
[8] 鄧林建,程效軍,程小龍,等.一種基于點云數(shù)據(jù)的建筑物BIM模型重建方法[J].地礦測繪,2016,32(4):14-16.DENG Lin-jian,CHENG Xiao-jun,CHENG Xiao-long,et al.A method of buildinginformation model reconstruction based on point cloud data[J].Surveying and Mapping of Geology and Mineral Resources,2016,32(4):14-16.
[9] 葉珉?yún)?,花向紅.面向地形數(shù)據(jù)的點云簡化算法[J].大地測量與地球動力學,2015,35(3):424-427.YEMin-lü,HUAXiang-hong.Point cloud simplification algorithm for terrain data[J].Journal of Geodesy and Geodynamics,2015,35(3):424-427.