佟家興 王雪冰 趙文博 于 航 張 昕
(1.天津市測繪院有限公司,天津 300381;2.百度在線網絡技術(北京)有限公司,北京 100193;3.黑龍江省測繪科學研究所,黑龍江 哈爾濱 150081)
近年來,隨著國家全面推進實景三維中國的建設,虛擬地理環境(Virtual Geographic Environment,VGE)也進入到高速發展期。目前,虛擬地理環境所使用的實景模型與數字孿生應用之間仍存在著阻礙,虛擬地理環境還有很多潛在的應用價值[1]。在虛擬地理環境中,生成數字表面模型的技術是指通過對虛擬地理環境的現實模擬,借助分析建筑容積率、執行建筑分割等對數字表面模型的數據進行探索[2-4]。該技術打破了實景模型“具形不具用”的瓶頸,為虛擬地理環境和實景三維中國的建設發展提供技術參考。
本研究采用深度圖來反演數字高程,并構建數字表面模型,該方法能有效解決利用射線法在虛擬地理環境中生成數字表面模型存在的速度慢、精度差、易受模型異構影響等問題,從而獲取三維場景中的數字高程和紋理信息。該方法已成功應用于天津市的實景三維建設中,具有較高的實用價值。
虛擬地理環境是一種通過虛擬環境和地理學來研究地理環境現象與規律的數字技術[5]。該技術通過對地理信息科學和計算機虛擬環境進行融合,從數字層面上還原了真實世界的物理實體和空間的關系,成為數字地球、數字孿生城市等概念中的重要支撐。現實世界中的物理實體是虛擬地理環境中研究的一個重要內容,而將物理實體投射到虛擬環境中的可靠載體就是數字三維模型[6-7]。數字三維模型是一種通過借助相關存儲介質來存儲自身信息,并在計算機系統中能穩定還原的數字載體,數字表面模型就是其中一種。
數字虛擬技術是實現虛擬地理環境構建的重要支撐,其借助計算機圖形學理論,將抽象數字三維模型還原為具有真實空間觀感的圖形,并將其繪制于屏幕上的過程。在眾多的數字虛擬技術平臺中,以OpenGL框架為代表的三維圖形開源代碼的應用范圍最廣,也是本研究所采用的虛擬地理環境框架。
OpenGL框架的數字虛擬化過程是通過渲染管線來實現的。傳入渲染管線的數字三維模型經圖元裝配、光柵化以及測試混合等處理后,結果會在計算機屏幕上呈現。其在執行管線流水作業的同時,也會對數字三維模型的各個頂點進行相應的空間變換,從而將原始的空間地理坐標變換為指定長寬的屏幕像素坐標。
在虛擬地理環境中展示的數字三維模型是一種多源異構的數據集合,在物理實體數據的外業采集和內業處理過程中,為了確保數據在存儲介質中的高可傳遞性,往往會采取離散式的數據存儲方式,但該方式破壞了模型的整體性。為了解決這一問題,本研究提出一種在虛擬地理環境中構建數字表面模型的方法,該方法能有效消弭三維模型多源異構數據間的差異,并為后續研究提供便利。
本研究提出的數字表面模型構建方法的處理步驟如下。①設定觀察相機拍攝虛擬地理環境的俯視圖。記錄并生成虛擬地理環境中三維模型的俯視紋理圖片和深度圖片。②由空間變換關系可反算出頂點的高程信息。將生成的二維地理平面信息和一維高程信息合成為每個頂點的空間三維地理坐標。③重新定義頂點的索引關系。由二維紋理信息和各個頂點的空間三維地理坐標來構建指定區域的數字表面模型,并輸出處理結果。其中,在虛擬地理環境中,由屏上的二維圖形可反算出每個頂點的真實地理坐標,即數字虛擬技術的逆變換。只要建立起數字三維模型在渲染管線中所經歷的各種空間變換的數學關系,即可得到該數學關系的反算公式。
在虛擬地理環境中,數字三維模型從圖元裝配到被直觀地展現給觀察者的過程中主要進行了4種空間變換,如圖1所示。

圖1 頂點的空間變換過程
數字三維模型的創建一般是在模型空間中進行的。創建完成的數字三維模型要執行空間變換,并將自身坐標進行換算,從而添加到虛擬地理環境中。觀察者借助相機在相機空間中所觀察到的世界空間中的數字三維模型也經歷了一次空間變換。至此,已執行的兩次變換都是空間剛體變換,之后執行的投影變換和屏幕變換是為了將三維模型轉換為二維圖形,從而在計算機屏幕上顯示出來,所執行的是一種非剛體空間變換。
為了能真實地描述理環境中的頂點在數字虛擬化過程中發生的變換,本研究引入模型坐標系、世界坐標系、相機坐標系以及屏幕空間坐標系等5個坐標系,分別對模型空間、世界空間、相機空間、投影空間以及屏幕空間進行表示[8]。
模型空間可用模型坐標系來表示,用于描述模型各個部件相對創建原點的位置關系,是一個局部相對坐標系。世界空間可用世界坐標系來表示,模型坐標系向世界坐標系的變換僅包含旋轉和平移,故可用模型矩陣M來表示這種線性變換,見式(1)。

式中:R為模型坐標系各個坐標軸相對于世界坐標系坐標軸的旋轉因子構成的矩陣;t為模型坐標系相對于世界坐標系的位置所構成的向量。
同理,世界坐標系轉換為相機坐標系的線性變換可用相機矩陣V來表示,該矩陣所包含的變換僅有旋轉和平移。
投影空間是相機空間向屏幕空間進行變換時的中間空間,相機空間向投影空間的變換可用投影矩陣P來表示,本研究使用正交投影生成數字表面模型,正交投影的投影矩陣見式(2)。

式中:r為投影視錐體中心與右側面之間的距離;t為投影視錐體中心與上頂面之間的距離;n為投影中心與視錐體近平面之間的距離;f為投影中心與視錐體遠平面之間的距離。
屏幕空間以計算機屏幕的左上角為原點,水平向右為x軸,垂直向下為y軸。投影空間中的坐標映射到屏幕空間的變換用視圖矩陣W來表示。
令模型頂點在世界坐標系中的坐標為X,其投影到屏幕空間上的坐標為x,計算公式見式(3)。

式中:坐標向量X、x均為齊次形式。
由屏幕空間中的像素點可推導出其世界坐標,見式(4)。

在公式(4)的基礎上,將深度信息與像素坐標進行結合,即可還原帶有深度信息的屏幕空間坐標,進而實現在虛擬地理環境中對模型世界坐標的反算。
深度圖是在虛擬地理環境中,通過設定相機的相關參數來記錄相機到模型每個頂點的距離,并最終生成的一種特定影像。可將深度圖的生成過程理解為現實世界中通過激光掃描獲得的特殊圖像數據。這種數據與觀察者的觀察視角保持高度一致,所以能在技術層面上消弭不同模型之間的數據差異,這也為生成整體化的數字表面模型提供了理論支持。
本研究選用的數字高程模型(Digital Elevation Model,DEM)是一種對虛擬地理環境三維模型表面進行離散數學表達的方式,是某一區域中模型表面相對虛擬地理環境高程基準的三維向量,其數據結構見式(5)。

式中:Ei為模型表面某一離散點i的三維向量;(Xi,Yi)為該點的平面坐標;Zi為模型表面相對虛擬地理環境高程基準的高程;n為離散點的個數。
深度圖的生成過程是歸一化坐標轉換為像素灰度的過程[9]。假設三維模型表面的某一個頂點為P,則在模型坐標投影到投影空間后,會對投影空間內該點的深度值進行歸一化處理,從而得到歸一化的深度值d。而深度圖一般以灰度值的形式進行存儲,將深度值d映射到[0,255]的值域中,即可得到該點在深度圖中的灰度值p。
將歸一化的深度值d到深度圖灰度值p的映射過程定義為f(d),則深度圖灰度值反演歸一化深度值的映射公式見式(6)。

將反算的歸一化深度值d代入到公式(4)中,即可得到深度圖像素點對應的模型頂點在世界坐標系中對應的三維向量。
對城市級的深度圖和紋理圖生成而言,普通的計算機難以對這些生成數據進行連續處理。為解決這一問題,本研究提出將生成的紋理圖映射為數字正射影像,將深度圖及由深度圖反演出的高程信息映射為數字高程影像的中間數據生成策略。
為了使生成的同尺寸、同分辨率的紋理圖和深度圖攜帶虛擬地理環境中的地理信息,要從這兩張圖像中提取出高度信息h和寬度信息w,并從深度圖反演信息中獲取左上角點地理坐標Xit和右下角點地理坐標信息Xrb,通過處理得到6個地理仿射變換參數。本研究所定義的地理仿射變換見式(7)。

式中:x、y為指定圖像點的像素坐標;X、Y為指定圖像點的二維地理坐標;g1、g4為圖像沿x、y方向的地理像素分辨率;g2、g3為旋轉參數,二者在本研究中均置為0;g5、g6為圖像左上角點的像素中心的地理坐標。
生成的數字正射影像和數字高程影像是具有實際應用價值的測繪產品數據,能在一定精度下進行各種地理信息分析,可為后續的數字表面模型重構提供數據支持。
本研究所述的數字高程模型中存儲的是均勻的網格式三維頂點信息,為了能將存儲的三維頂點信息還原為數字表面模型,筆者提出面向均勻網格的頂點索引重構方法。該方法能將正方形網格切分為同向均勻的三角網,從而通過索引重構對原始正方形網格中的各個頂點進行銜接,如圖2所示。

圖2 數字高程模型均勻網格及其構建的三角網
頂點索引重構算法的操作步驟如下。①選定數字高程網格的第一行作為頂點索引重構算法的初始生成行。②掃描數字高程網格某一生成行的各個頂點并進行記錄,按“左上、左下、右上、右下”的順序重新組織頂點三角面片的序列。③判斷接續生成行的三角面片生成序列中是否包含上一生成行的頂點信息,若包含則執行頂點合并,否則繼續執行。④循環執行步驟②和③,直至掃描到最后一個生成行,并結束算法的運行。
頂點索引重構算法中的頂點合并操作規則如下。重復頂點可保留序號較小的頂點、非重復頂點按“左上、左下、右上、右下”的順序重新排列頂點序號。其操作過程如圖3所示。

圖3 頂點合并操作
重構頂點索引后,生成的數字表面模型符合圖形學的拓撲關系和顯示要求,如圖4所示。

圖4 基于頂點索引重構的數字表面模型
頂點索引重構后,數字表面模型已具備基礎的三維幾何關系,為了能進一步豐富數字表面模型的紋理特征信息,要結合頂點索引,并依據數字正射影像的框標來定義每個頂點的紋理數組,從而完成頂點的紋理映射操作。將執行紋理映射后的數字表面模型顯示在虛擬地理環境中,如圖5所示。

圖5 映射紋理后的數字表面模型
采用本研究所述的方法,在天津市中心城區范圍內構建了多張數字高程模型和數字正射影像,并生成市域范圍內的數字表面模型。試驗結果證明,該方法能有效解決虛擬地理環境速度慢、精度差和易受模型異構影響的問題,生成的數字表面模型能應用于實際工程生產中,且生成的數字高程模型等中間數據也可為虛擬地理環境中的水淹、限高等的分析提供有效的數據支撐。最后,利用頂點索引重構及紋理映射方法所生成的數字表面模型,其仍與數字正射影像及深度圖的圖像分辨率有強關聯性,在后續的研究中可采用頂點簡化策略來優化數字表面模型的頂點個數和存儲占用。