佟家興 王雪冰 趙文博 于 航 張 昕
(1.天津市測(cè)繪院有限公司,天津 300381;2.百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司,北京 100193;3.黑龍江省測(cè)繪科學(xué)研究所,黑龍江 哈爾濱 150081)
近年來(lái),隨著國(guó)家全面推進(jìn)實(shí)景三維中國(guó)的建設(shè),虛擬地理環(huán)境(Virtual Geographic Environment,VGE)也進(jìn)入到高速發(fā)展期。目前,虛擬地理環(huán)境所使用的實(shí)景模型與數(shù)字孿生應(yīng)用之間仍存在著阻礙,虛擬地理環(huán)境還有很多潛在的應(yīng)用價(jià)值[1]。在虛擬地理環(huán)境中,生成數(shù)字表面模型的技術(shù)是指通過(guò)對(duì)虛擬地理環(huán)境的現(xiàn)實(shí)模擬,借助分析建筑容積率、執(zhí)行建筑分割等對(duì)數(shù)字表面模型的數(shù)據(jù)進(jìn)行探索[2-4]。該技術(shù)打破了實(shí)景模型“具形不具用”的瓶頸,為虛擬地理環(huán)境和實(shí)景三維中國(guó)的建設(shè)發(fā)展提供技術(shù)參考。
本研究采用深度圖來(lái)反演數(shù)字高程,并構(gòu)建數(shù)字表面模型,該方法能有效解決利用射線法在虛擬地理環(huán)境中生成數(shù)字表面模型存在的速度慢、精度差、易受模型異構(gòu)影響等問(wèn)題,從而獲取三維場(chǎng)景中的數(shù)字高程和紋理信息。該方法已成功應(yīng)用于天津市的實(shí)景三維建設(shè)中,具有較高的實(shí)用價(jià)值。
虛擬地理環(huán)境是一種通過(guò)虛擬環(huán)境和地理學(xué)來(lái)研究地理環(huán)境現(xiàn)象與規(guī)律的數(shù)字技術(shù)[5]。該技術(shù)通過(guò)對(duì)地理信息科學(xué)和計(jì)算機(jī)虛擬環(huán)境進(jìn)行融合,從數(shù)字層面上還原了真實(shí)世界的物理實(shí)體和空間的關(guān)系,成為數(shù)字地球、數(shù)字孿生城市等概念中的重要支撐。現(xiàn)實(shí)世界中的物理實(shí)體是虛擬地理環(huán)境中研究的一個(gè)重要內(nèi)容,而將物理實(shí)體投射到虛擬環(huán)境中的可靠載體就是數(shù)字三維模型[6-7]。數(shù)字三維模型是一種通過(guò)借助相關(guān)存儲(chǔ)介質(zhì)來(lái)存儲(chǔ)自身信息,并在計(jì)算機(jī)系統(tǒng)中能穩(wěn)定還原的數(shù)字載體,數(shù)字表面模型就是其中一種。
數(shù)字虛擬技術(shù)是實(shí)現(xiàn)虛擬地理環(huán)境構(gòu)建的重要支撐,其借助計(jì)算機(jī)圖形學(xué)理論,將抽象數(shù)字三維模型還原為具有真實(shí)空間觀感的圖形,并將其繪制于屏幕上的過(guò)程。在眾多的數(shù)字虛擬技術(shù)平臺(tái)中,以O(shè)penGL框架為代表的三維圖形開(kāi)源代碼的應(yīng)用范圍最廣,也是本研究所采用的虛擬地理環(huán)境框架。
OpenGL框架的數(shù)字虛擬化過(guò)程是通過(guò)渲染管線來(lái)實(shí)現(xiàn)的。傳入渲染管線的數(shù)字三維模型經(jīng)圖元裝配、光柵化以及測(cè)試混合等處理后,結(jié)果會(huì)在計(jì)算機(jī)屏幕上呈現(xiàn)。其在執(zhí)行管線流水作業(yè)的同時(shí),也會(huì)對(duì)數(shù)字三維模型的各個(gè)頂點(diǎn)進(jìn)行相應(yīng)的空間變換,從而將原始的空間地理坐標(biāo)變換為指定長(zhǎng)寬的屏幕像素坐標(biāo)。
在虛擬地理環(huán)境中展示的數(shù)字三維模型是一種多源異構(gòu)的數(shù)據(jù)集合,在物理實(shí)體數(shù)據(jù)的外業(yè)采集和內(nèi)業(yè)處理過(guò)程中,為了確保數(shù)據(jù)在存儲(chǔ)介質(zhì)中的高可傳遞性,往往會(huì)采取離散式的數(shù)據(jù)存儲(chǔ)方式,但該方式破壞了模型的整體性。為了解決這一問(wèn)題,本研究提出一種在虛擬地理環(huán)境中構(gòu)建數(shù)字表面模型的方法,該方法能有效消弭三維模型多源異構(gòu)數(shù)據(jù)間的差異,并為后續(xù)研究提供便利。
本研究提出的數(shù)字表面模型構(gòu)建方法的處理步驟如下。①設(shè)定觀察相機(jī)拍攝虛擬地理環(huán)境的俯視圖。記錄并生成虛擬地理環(huán)境中三維模型的俯視紋理圖片和深度圖片。②由空間變換關(guān)系可反算出頂點(diǎn)的高程信息。將生成的二維地理平面信息和一維高程信息合成為每個(gè)頂點(diǎn)的空間三維地理坐標(biāo)。③重新定義頂點(diǎn)的索引關(guān)系。由二維紋理信息和各個(gè)頂點(diǎn)的空間三維地理坐標(biāo)來(lái)構(gòu)建指定區(qū)域的數(shù)字表面模型,并輸出處理結(jié)果。其中,在虛擬地理環(huán)境中,由屏上的二維圖形可反算出每個(gè)頂點(diǎn)的真實(shí)地理坐標(biāo),即數(shù)字虛擬技術(shù)的逆變換。只要建立起數(shù)字三維模型在渲染管線中所經(jīng)歷的各種空間變換的數(shù)學(xué)關(guān)系,即可得到該數(shù)學(xué)關(guān)系的反算公式。
在虛擬地理環(huán)境中,數(shù)字三維模型從圖元裝配到被直觀地展現(xiàn)給觀察者的過(guò)程中主要進(jìn)行了4種空間變換,如圖1所示。
圖1 頂點(diǎn)的空間變換過(guò)程
數(shù)字三維模型的創(chuàng)建一般是在模型空間中進(jìn)行的。創(chuàng)建完成的數(shù)字三維模型要執(zhí)行空間變換,并將自身坐標(biāo)進(jìn)行換算,從而添加到虛擬地理環(huán)境中。觀察者借助相機(jī)在相機(jī)空間中所觀察到的世界空間中的數(shù)字三維模型也經(jīng)歷了一次空間變換。至此,已執(zhí)行的兩次變換都是空間剛體變換,之后執(zhí)行的投影變換和屏幕變換是為了將三維模型轉(zhuǎn)換為二維圖形,從而在計(jì)算機(jī)屏幕上顯示出來(lái),所執(zhí)行的是一種非剛體空間變換。
為了能真實(shí)地描述理環(huán)境中的頂點(diǎn)在數(shù)字虛擬化過(guò)程中發(fā)生的變換,本研究引入模型坐標(biāo)系、世界坐標(biāo)系、相機(jī)坐標(biāo)系以及屏幕空間坐標(biāo)系等5個(gè)坐標(biāo)系,分別對(duì)模型空間、世界空間、相機(jī)空間、投影空間以及屏幕空間進(jìn)行表示[8]。
模型空間可用模型坐標(biāo)系來(lái)表示,用于描述模型各個(gè)部件相對(duì)創(chuàng)建原點(diǎn)的位置關(guān)系,是一個(gè)局部相對(duì)坐標(biāo)系。世界空間可用世界坐標(biāo)系來(lái)表示,模型坐標(biāo)系向世界坐標(biāo)系的變換僅包含旋轉(zhuǎn)和平移,故可用模型矩陣M來(lái)表示這種線性變換,見(jiàn)式(1)。
式中:R為模型坐標(biāo)系各個(gè)坐標(biāo)軸相對(duì)于世界坐標(biāo)系坐標(biāo)軸的旋轉(zhuǎn)因子構(gòu)成的矩陣;t為模型坐標(biāo)系相對(duì)于世界坐標(biāo)系的位置所構(gòu)成的向量。
同理,世界坐標(biāo)系轉(zhuǎn)換為相機(jī)坐標(biāo)系的線性變換可用相機(jī)矩陣V來(lái)表示,該矩陣所包含的變換僅有旋轉(zhuǎn)和平移。
投影空間是相機(jī)空間向屏幕空間進(jìn)行變換時(shí)的中間空間,相機(jī)空間向投影空間的變換可用投影矩陣P來(lái)表示,本研究使用正交投影生成數(shù)字表面模型,正交投影的投影矩陣見(jiàn)式(2)。
式中:r為投影視錐體中心與右側(cè)面之間的距離;t為投影視錐體中心與上頂面之間的距離;n為投影中心與視錐體近平面之間的距離;f為投影中心與視錐體遠(yuǎn)平面之間的距離。
屏幕空間以計(jì)算機(jī)屏幕的左上角為原點(diǎn),水平向右為x軸,垂直向下為y軸。投影空間中的坐標(biāo)映射到屏幕空間的變換用視圖矩陣W來(lái)表示。
令模型頂點(diǎn)在世界坐標(biāo)系中的坐標(biāo)為X,其投影到屏幕空間上的坐標(biāo)為x,計(jì)算公式見(jiàn)式(3)。
式中:坐標(biāo)向量X、x均為齊次形式。
由屏幕空間中的像素點(diǎn)可推導(dǎo)出其世界坐標(biāo),見(jiàn)式(4)。
在公式(4)的基礎(chǔ)上,將深度信息與像素坐標(biāo)進(jìn)行結(jié)合,即可還原帶有深度信息的屏幕空間坐標(biāo),進(jìn)而實(shí)現(xiàn)在虛擬地理環(huán)境中對(duì)模型世界坐標(biāo)的反算。
深度圖是在虛擬地理環(huán)境中,通過(guò)設(shè)定相機(jī)的相關(guān)參數(shù)來(lái)記錄相機(jī)到模型每個(gè)頂點(diǎn)的距離,并最終生成的一種特定影像。可將深度圖的生成過(guò)程理解為現(xiàn)實(shí)世界中通過(guò)激光掃描獲得的特殊圖像數(shù)據(jù)。這種數(shù)據(jù)與觀察者的觀察視角保持高度一致,所以能在技術(shù)層面上消弭不同模型之間的數(shù)據(jù)差異,這也為生成整體化的數(shù)字表面模型提供了理論支持。
本研究選用的數(shù)字高程模型(Digital Elevation Model,DEM)是一種對(duì)虛擬地理環(huán)境三維模型表面進(jìn)行離散數(shù)學(xué)表達(dá)的方式,是某一區(qū)域中模型表面相對(duì)虛擬地理環(huán)境高程基準(zhǔn)的三維向量,其數(shù)據(jù)結(jié)構(gòu)見(jiàn)式(5)。
式中:Ei為模型表面某一離散點(diǎn)i的三維向量;(Xi,Yi)為該點(diǎn)的平面坐標(biāo);Zi為模型表面相對(duì)虛擬地理環(huán)境高程基準(zhǔn)的高程;n為離散點(diǎn)的個(gè)數(shù)。
深度圖的生成過(guò)程是歸一化坐標(biāo)轉(zhuǎn)換為像素灰度的過(guò)程[9]。假設(shè)三維模型表面的某一個(gè)頂點(diǎn)為P,則在模型坐標(biāo)投影到投影空間后,會(huì)對(duì)投影空間內(nèi)該點(diǎn)的深度值進(jìn)行歸一化處理,從而得到歸一化的深度值d。而深度圖一般以灰度值的形式進(jìn)行存儲(chǔ),將深度值d映射到[0,255]的值域中,即可得到該點(diǎn)在深度圖中的灰度值p。
將歸一化的深度值d到深度圖灰度值p的映射過(guò)程定義為f(d),則深度圖灰度值反演歸一化深度值的映射公式見(jiàn)式(6)。
將反算的歸一化深度值d代入到公式(4)中,即可得到深度圖像素點(diǎn)對(duì)應(yīng)的模型頂點(diǎn)在世界坐標(biāo)系中對(duì)應(yīng)的三維向量。
對(duì)城市級(jí)的深度圖和紋理圖生成而言,普通的計(jì)算機(jī)難以對(duì)這些生成數(shù)據(jù)進(jìn)行連續(xù)處理。為解決這一問(wèn)題,本研究提出將生成的紋理圖映射為數(shù)字正射影像,將深度圖及由深度圖反演出的高程信息映射為數(shù)字高程影像的中間數(shù)據(jù)生成策略。
為了使生成的同尺寸、同分辨率的紋理圖和深度圖攜帶虛擬地理環(huán)境中的地理信息,要從這兩張圖像中提取出高度信息h和寬度信息w,并從深度圖反演信息中獲取左上角點(diǎn)地理坐標(biāo)Xit和右下角點(diǎn)地理坐標(biāo)信息Xrb,通過(guò)處理得到6個(gè)地理仿射變換參數(shù)。本研究所定義的地理仿射變換見(jiàn)式(7)。
式中:x、y為指定圖像點(diǎn)的像素坐標(biāo);X、Y為指定圖像點(diǎn)的二維地理坐標(biāo);g1、g4為圖像沿x、y方向的地理像素分辨率;g2、g3為旋轉(zhuǎn)參數(shù),二者在本研究中均置為0;g5、g6為圖像左上角點(diǎn)的像素中心的地理坐標(biāo)。
生成的數(shù)字正射影像和數(shù)字高程影像是具有實(shí)際應(yīng)用價(jià)值的測(cè)繪產(chǎn)品數(shù)據(jù),能在一定精度下進(jìn)行各種地理信息分析,可為后續(xù)的數(shù)字表面模型重構(gòu)提供數(shù)據(jù)支持。
本研究所述的數(shù)字高程模型中存儲(chǔ)的是均勻的網(wǎng)格式三維頂點(diǎn)信息,為了能將存儲(chǔ)的三維頂點(diǎn)信息還原為數(shù)字表面模型,筆者提出面向均勻網(wǎng)格的頂點(diǎn)索引重構(gòu)方法。該方法能將正方形網(wǎng)格切分為同向均勻的三角網(wǎng),從而通過(guò)索引重構(gòu)對(duì)原始正方形網(wǎng)格中的各個(gè)頂點(diǎn)進(jìn)行銜接,如圖2所示。
圖2 數(shù)字高程模型均勻網(wǎng)格及其構(gòu)建的三角網(wǎng)
頂點(diǎn)索引重構(gòu)算法的操作步驟如下。①選定數(shù)字高程網(wǎng)格的第一行作為頂點(diǎn)索引重構(gòu)算法的初始生成行。②掃描數(shù)字高程網(wǎng)格某一生成行的各個(gè)頂點(diǎn)并進(jìn)行記錄,按“左上、左下、右上、右下”的順序重新組織頂點(diǎn)三角面片的序列。③判斷接續(xù)生成行的三角面片生成序列中是否包含上一生成行的頂點(diǎn)信息,若包含則執(zhí)行頂點(diǎn)合并,否則繼續(xù)執(zhí)行。④循環(huán)執(zhí)行步驟②和③,直至掃描到最后一個(gè)生成行,并結(jié)束算法的運(yùn)行。
頂點(diǎn)索引重構(gòu)算法中的頂點(diǎn)合并操作規(guī)則如下。重復(fù)頂點(diǎn)可保留序號(hào)較小的頂點(diǎn)、非重復(fù)頂點(diǎn)按“左上、左下、右上、右下”的順序重新排列頂點(diǎn)序號(hào)。其操作過(guò)程如圖3所示。
圖3 頂點(diǎn)合并操作
重構(gòu)頂點(diǎn)索引后,生成的數(shù)字表面模型符合圖形學(xué)的拓?fù)潢P(guān)系和顯示要求,如圖4所示。
圖4 基于頂點(diǎn)索引重構(gòu)的數(shù)字表面模型
頂點(diǎn)索引重構(gòu)后,數(shù)字表面模型已具備基礎(chǔ)的三維幾何關(guān)系,為了能進(jìn)一步豐富數(shù)字表面模型的紋理特征信息,要結(jié)合頂點(diǎn)索引,并依據(jù)數(shù)字正射影像的框標(biāo)來(lái)定義每個(gè)頂點(diǎn)的紋理數(shù)組,從而完成頂點(diǎn)的紋理映射操作。將執(zhí)行紋理映射后的數(shù)字表面模型顯示在虛擬地理環(huán)境中,如圖5所示。
圖5 映射紋理后的數(shù)字表面模型
采用本研究所述的方法,在天津市中心城區(qū)范圍內(nèi)構(gòu)建了多張數(shù)字高程模型和數(shù)字正射影像,并生成市域范圍內(nèi)的數(shù)字表面模型。試驗(yàn)結(jié)果證明,該方法能有效解決虛擬地理環(huán)境速度慢、精度差和易受模型異構(gòu)影響的問(wèn)題,生成的數(shù)字表面模型能應(yīng)用于實(shí)際工程生產(chǎn)中,且生成的數(shù)字高程模型等中間數(shù)據(jù)也可為虛擬地理環(huán)境中的水淹、限高等的分析提供有效的數(shù)據(jù)支撐。最后,利用頂點(diǎn)索引重構(gòu)及紋理映射方法所生成的數(shù)字表面模型,其仍與數(shù)字正射影像及深度圖的圖像分辨率有強(qiáng)關(guān)聯(lián)性,在后續(xù)的研究中可采用頂點(diǎn)簡(jiǎn)化策略來(lái)優(yōu)化數(shù)字表面模型的頂點(diǎn)個(gè)數(shù)和存儲(chǔ)占用。