徐建華,顧 浩,曾艷陽,李曉明
(1. 三江學(xué)院,江蘇 南京 210012;2. 西北工業(yè)大學(xué),陜西 西安 710072;3. 河南理工大學(xué),河南 焦作 454000)
海底地形三維可視化建模具有較高的應(yīng)用價(jià)值,可以為無人航行器水下作業(yè)呈現(xiàn)、海底隧道建設(shè)論證、海洋作戰(zhàn)演練等提供基礎(chǔ)平臺。由于水聲測量方法的局限性,海底和陸地地形在數(shù)據(jù)獲取方面相比,具有難度大、成本高、精度低和稀疏性等特點(diǎn)。為此,海底地形在建模時(shí)有必要對現(xiàn)有水深數(shù)據(jù)進(jìn)行插值。Lv C等[1]為使海底地形模型具有更好的精度,提出了一種改進(jìn)的分?jǐn)?shù)布朗運(yùn)動(fBm)和改進(jìn)的迭代函數(shù)系統(tǒng)(IFS)的復(fù)合分形插值算法;Chen P等[2]利用分形布朗運(yùn)動模型提取局部水下地形的分形特征,并用分形理論補(bǔ)償了克里金法的可能誤差,提出了一種基于這種分形補(bǔ)償?shù)母倪M(jìn)的克里格插值方法;Liu L等[3]采用移動面思想,利用海床地形的局部自相似性,利用分形插值法將由中心插值單元周圍的單元組成的矩形子場映射到插值單元;成毅[4]基于逆距離權(quán)重插值方法,獲得網(wǎng)格交點(diǎn)的高程值,在此基礎(chǔ)上,在OpenGL中建立DEM模型;劉鋒等[5]利用ISO8211類庫,提取S-57電子海圖原始文件的矢量水深數(shù)據(jù),依據(jù)這一組水深數(shù)據(jù)進(jìn)行Biharmonic曲面樣條插值,計(jì)算出一組曲面上的網(wǎng)格點(diǎn)處的坐標(biāo)數(shù)據(jù),從而實(shí)現(xiàn)對該海區(qū)內(nèi)海底地形的可視化仿真;潘竹爐[6]基于二維電子海圖中離散水深數(shù)據(jù)通過分形曲面插值算法構(gòu)建數(shù)字高程模型,并通過三維地形建模最終實(shí)現(xiàn)海底地形的三維可視化的解決方案。以上國內(nèi)外海底地形建模研究中,在對水深數(shù)據(jù)插值時(shí),插值點(diǎn)的數(shù)量缺乏定量化計(jì)算方法,網(wǎng)格數(shù)需要人工反復(fù)調(diào)試才能與設(shè)備的顯示能力相匹配,建模效率不高。為了解決該問題,提出一種自適應(yīng)屏幕分辨率的海底地形三維可視化建模方法。
自適應(yīng)屏幕分辨率的海底地形三維可視化建模流程圖如圖1所示。首先從電子海圖中提取水深數(shù)據(jù),利用三角形內(nèi)插法得到網(wǎng)格頂點(diǎn)高度值,然后將海底地形水平面均勻劃為初始二維網(wǎng)格,最后使用函數(shù)獲取顯示設(shè)備的屏幕分辨率,根據(jù)設(shè)計(jì)的定量化計(jì)算公式計(jì)算出插值點(diǎn)數(shù),采用多項(xiàng)式擬合法對初始網(wǎng)格頂點(diǎn)高度值進(jìn)一步內(nèi)插,生成海底地形細(xì)分三維網(wǎng)格。
圖1 自適應(yīng)屏幕分辨率的海底地形建模流程
電子海圖是公開發(fā)行的資料,內(nèi)含海流、水系、港口設(shè)施、水深等多種信息,其中第10層信息為水深數(shù)據(jù)。從電子海圖中獲取水深數(shù)據(jù)的步驟:第一步是讀取電子海圖頭文件。電子海圖頭文件包含了整個電子海圖的基本信息,從電子海圖頭文件中讀取出水深數(shù)據(jù)層信息。第二步是將水深數(shù)據(jù)層中的位置信息從直角坐標(biāo)轉(zhuǎn)換成地理坐標(biāo)。第三步是將轉(zhuǎn)換后的地理坐標(biāo)和水深數(shù)據(jù)存儲在文本文件中,從而得到離散的水深數(shù)據(jù)點(diǎn)。以上方法得到的水深數(shù)據(jù)是離散的采樣點(diǎn),缺乏有規(guī)律的分布。為此采用文獻(xiàn)[1]中的三角形內(nèi)插法對水深數(shù)據(jù)進(jìn)行內(nèi)插,將內(nèi)插后得到的分布規(guī)律的水深數(shù)據(jù)值作為初始二維均勻網(wǎng)格頂點(diǎn)的高度值。
屏幕分辨率是指顯示設(shè)備屏幕水平和垂直方向上的像素點(diǎn)數(shù),單位為px。屏幕分辨率確定顯示設(shè)備屏幕上顯示信息的多少[7]。顯示設(shè)備的展示效果隨著分辨率的提高而變得更加精細(xì)[8]。因此屏幕分辨率成為人們直觀地觀察仿真模型一個重要的約束條件[9-10]。
為構(gòu)建與屏幕分辨率相適應(yīng)的可視化仿真模型,有必要對初始二維均勻網(wǎng)格進(jìn)一步細(xì)分。為此引入單元網(wǎng)格像素值來定量化計(jì)算插值點(diǎn)數(shù),具體求解方法如式(1)所示
(1)
式中:Qint er表示插值點(diǎn)數(shù);PHscrRes表示屏幕水平方向的分辨率;PVscrRes表示屏幕垂直方向的分辨率;Ninitial表示初始二維均勻網(wǎng)格在與Max(PHscrRes,PVscrRes)取值方向一致的方向上的網(wǎng)格數(shù);通過函數(shù)Max(PHscrRes,PVscrRes)取屏幕分辨率中較大像素值代入公式計(jì)算,目的在于能夠獲得更加精準(zhǔn)的海底地形;α表示初始二維均勻網(wǎng)格的單元網(wǎng)格直角邊的像素值。單元網(wǎng)格是構(gòu)建海底地形的基本三角形,如圖2所示,單元網(wǎng)格直角邊像素值α由建模開發(fā)人員根據(jù)經(jīng)驗(yàn)事先確定。
圖2 單元網(wǎng)格
根據(jù)求解得到的插值點(diǎn)數(shù)Qint er,就可以對海底地形初始二維網(wǎng)格進(jìn)行細(xì)分,構(gòu)建出與屏幕分辨率相適應(yīng)的細(xì)分的二維網(wǎng)格。為獲得細(xì)分后的網(wǎng)格頂點(diǎn)的高度值,采用二次三項(xiàng)式擬合法對水深值進(jìn)一步內(nèi)插。二次三項(xiàng)式如式(2)所示
z=ax2+bx+c
(2)
式中:z表示海底地形網(wǎng)格頂點(diǎn)的高度值;x表示初始網(wǎng)格頂點(diǎn)在與Max(PHscrRes,PVscrRes)取值方向一致的方向上的坐標(biāo)值;a、b、c分別為二次三項(xiàng)式系數(shù)。
將原有水深數(shù)據(jù)每三個數(shù)據(jù)劃分為一組,例如選用緊鄰的水深數(shù)據(jù)點(diǎn)n1(x1,z1)、n2(x2,z2)、n3(x3,z3)、代入式(2)得到式(3)
(3)
例如n1(10,66.2)、n2(20,59.5)、n1(30,63.8)代入式(3),可以求得a=0.055,b=-2.32,c=83.9,擬合得到的二次三項(xiàng)式如式(4)所示
z=0.055x2-2.32x+83.9
(4)
根據(jù)式(4)就可以計(jì)算這一組水深點(diǎn)之間的內(nèi)插點(diǎn),如圖3所示,圖中實(shí)心點(diǎn)為插值點(diǎn),空心點(diǎn)為初始點(diǎn)。內(nèi)插點(diǎn)的數(shù)量可以通過式(1)計(jì)算得到。在水深點(diǎn)分組過程中采用遞推法,將網(wǎng)格頂點(diǎn)nk、nk+1、nk+2作為一組,下一組網(wǎng)格頂點(diǎn)選用nk+3,同時(shí)刪除掉nk,即建立新的一組網(wǎng)格頂點(diǎn)數(shù)據(jù)nk+1、nk+2、nk+3,如此循環(huán),建立多組網(wǎng)格頂點(diǎn)數(shù)據(jù);其中,nk表示第k個網(wǎng)格頂點(diǎn),nk+1表示第k+1個網(wǎng)格頂點(diǎn),nk+2表示第k+2個網(wǎng)格頂點(diǎn),nk+3表示第k+3個網(wǎng)格頂點(diǎn)。
圖3 水深數(shù)據(jù)插值點(diǎn)
將插值得到的水深值作為細(xì)分后的海底地形網(wǎng)格點(diǎn)的高度值,即可生成海底地形三維可視化網(wǎng)格。
圖4 海底地形初始二維網(wǎng)格
將海底地形的水平面均勻劃分為如圖4所示的4×4的初始二維網(wǎng)格,該網(wǎng)格模型由32個三角形,25個頂點(diǎn)構(gòu)成。提取電子海圖上黃海局部海域的水深數(shù)據(jù),經(jīng)過三角形內(nèi)插法得到如表1所示的水深值。這些水深數(shù)據(jù)作為初始二維網(wǎng)格頂點(diǎn)的高度值。
表1 黃海局部海域的水深數(shù)據(jù)(單位:m)
使用檢測函數(shù)window.innerWidth()和window.innerHeight()自動獲取當(dāng)前顯示設(shè)備的水平分辨率為800px和垂直分辨率為600px。設(shè)定單元網(wǎng)格直角邊像素值α為40px,根據(jù)式(1)就可以直接計(jì)算得到海底地形初始網(wǎng)格插值點(diǎn)數(shù)為3。在此基礎(chǔ)上采用二次三項(xiàng)式擬合法進(jìn)行內(nèi)插,得到如表2所示的水深值。
表2 插值得到的水深數(shù)據(jù)(單位:m)
根據(jù)插值點(diǎn)水深值生成如圖5所示的海底地形細(xì)分三維網(wǎng)格,該網(wǎng)格模型由450個三角形,256個頂點(diǎn)構(gòu)成。
圖5 分辨率為800×600時(shí)海底地形三維網(wǎng)格
為進(jìn)一步驗(yàn)證本方法的可行性,還分別在在顯示設(shè)備屏幕分辨率為1024×768和1600×900的情況下進(jìn)行是實(shí)驗(yàn),得到如表3所示的屏幕分辨率及海底地形主要參數(shù)。
表3 屏幕分辨率及海底地形主要參數(shù)
仿真結(jié)果表明本文方法能夠根據(jù)顯示設(shè)備的屏幕分辨率定量化求解海底地形水深數(shù)據(jù)插值點(diǎn)的數(shù)量,屏幕分辨率越高海底地形的定點(diǎn)數(shù)和三角形數(shù)越多,使得建模精度隨著屏幕分辨率的提高而增加。
本文提出了一種自適應(yīng)屏幕分辨率的海底地形三維可視化建模方法。將海底地形的水平面均勻劃為初始二維網(wǎng)格,提取電子海圖中的水深數(shù)據(jù),經(jīng)初步內(nèi)插得到的水深值作為網(wǎng)格頂點(diǎn)的高度值,根據(jù)屏幕分辨率求解細(xì)分網(wǎng)格的插值點(diǎn)數(shù),進(jìn)一步內(nèi)插得到插值點(diǎn)的水深值,構(gòu)建出海底地形細(xì)分三維網(wǎng)格。減少了建模人員調(diào)試工作量,使得海底地形建模精度與屏幕分辨率相適應(yīng),提高了海底地形建模效率和準(zhǔn)確度。