望曉尉,付仲良
(1.武漢大學遙感信息工程學院,湖北 武漢 430079)
實景三維模型的應用經歷了以其為基底構筑數字城市、智慧城市、數字孿生城市以及城市信息模型的發展過程[1]。隨著應用逐步廣泛,針對實景三維模型的技術需求也與日俱增,如傾斜攝影模型單體化技術、點云密度提升技術等。隨著深度學習的研究發展,較多學者將模型單體化的研究聚焦到了傾斜攝影模型密集匹配點云上[2-3]。但由于模型精細度以及模型數據量問題,部分較簡單的實景三維模型不能滿足點云分類分割的要求。在點云密度提升技術方面,Kinder[4]提出了高階插值函數的多項式插值算法,比雙線性插值準確度更高;楊成松[5]提出了一種基于不規則三角網的DEM 表面插值模型,比傳統算法更準確。
本文在傳統研究的基礎上,深入剖析實景三維模型的數據結構,以模型數據產品為基礎,逆向獲取三維模型的點云數據,計算紋理坐標,重新構筑其頂點索引。本文方法能從簡單的實景三維模型析出點云,并利用點云插值增加稠密程度,提升模型精細度,獲取能滿足點云分類與分割要求的三維模型。
目前的實景三維模型大多以OSGB 格式為主流,這種格式的優勢在于應用群體大、數據結構清晰、代碼生態原生。OSGB 格式的三維模型對所有基于OpenGL 以及OSG 所開發的三維地理信息系統都有較為良好的兼容性,有著龐大的用戶群體;其三維數據具有較強的可讀性,結構清晰且易于構建,在數據傳輸、格式轉換、內容壓縮方面都有明顯的優勢;與此同時,該格式的數據結構在邏輯層級滿足C++的反射要求,能夠較為輕松地從對應的數據格式中解析出其代碼結構,從而為后續開發提供便利。本文針對該類型的實景三維模型,從文件結構、網格表示以及數據模型等三方面分別闡述其數據結構。
傾斜攝影測量在使用無人機拍攝的影像進行實景三維建模時,一般會采用區塊處理的方式來提高建模效率,故而其原始文件的組織呈現一種空間橫向瓦片剖分,層次縱向細節剖分的結構特性。
以四川崇州某區域的實景三維模型數據為例,由于該區域的瓦片文件以Tile_x_y的格式命名,故將其按(x,y)坐標進行展繪可得到如圖1所示的橫向瓦片切分結構圖。該圖描述了實景三維模型數據在磁盤空間上的文件組織方式,其中的紅色區域為本文實驗區域。

圖1 實景三維模型橫向瓦片切分結構
在層次縱向細節剖分層級上,對單個瓦片文件的內部數據資源調度進行分析,將細節層次模型的第14-21 層級按模型加載順序由頂向下進行繪制,可得如圖2所示的金字塔。

圖2 實景三維模型縱向細節剖分金字塔
由上圖可知,三維模型數據加載時細節層級模型的調度方式符合四叉樹索引結構,在生成點云時可以根據此調用結構找到最適宜生成點云的底層模型;本文以此為基礎,進一步研究實景三維數據的三維網格模型表達。
三維模型一般是指空間中物理實體對象的數學表示,其表達方式包括點云表達、體素表達以及多邊形網格表達等3種[6]。本文主要研究其中2種,即由三維模型的多邊形網格表達轉換為點云表達。
三維模型的多邊形網格表達是目前計算機圖形學中最常用的三維模型繪制方法。其具有易于獲取、曲面逼近性好、保留表面信息、形狀簡單等優點[7],目前最常用的多邊形網格為三角形網格。而點云表達通常為生成多邊形網格模型的過渡數據表達,一般不具備拓撲結構。
通過本文的研究,可以將三維網格模型轉換為密集點云模型,進而借助點云模型的數據特性為后續的點云分割等研究提供技術依托。
以OSGB 格式存儲的三維網格模型將紋理信息、頂點坐標信息、三維網格索引信息以及紋理坐標信息均保存在同一個文件中,提取其關鍵結構并分析可得到OSGB模型(如圖3)。

圖3 OSGB數據模型
以OSGB 數據模型為例,采用三角形網格進行表達的三維模型包含2 175 個頂點以及5 634 個面片;OSGB數據在保存上述幾何信息的同時還存儲了2 175個紋理坐標以及相應的紋理圖片,以此來提高實景三維模型與真實世界的相似性。
本文所提出的面向OSGB 格式三維模型的實景三維模型點云析出方法主要包括以下3 個步驟:首先,利用節點遍歷技術提取實景三維模型最精細一級文件的頂點坐標;隨后,利用局部泰森插值對提取的頂點坐標進行點云插值,從而得到密集點云數據;最后,將實景三維網格模型的紋理信息作為圖像進行導出。在導出紋理的過程中需要獲取插值點的紋理坐標并重建面片索引來輸出新的模型,這一方法將在下一章節中進行介紹。
本文針對OSGB 模型的特點,采用節點遍歷的方式獲取實景三維模型的最底層精細模型的頂點信息、紋理坐標信息以及面片信息,并從中提取出可用的頂點坐標數據進行析出。
實景三維模型數據本身對頂點結構進行了一定程度的簡化,以此步驟分析出的頂點坐標信息實際上是一種稀疏點云。為了進一步提高析出數據的可用性,本文采用點云插值算法對稀疏點云進行插值,獲取細節更為豐富的稠密點云。
目前的點云插值算法主要包括2 種:經典插值算法插值以及神經網絡插值[8-11]。經典插值算法能夠很快得到插值結果,但其插值效果與計算量大小密切相關[8];點云的神經網絡插值算法具有很好的表現性能,但對原始模型拓撲幾何信息的兼容性較差。
本文分析2 種方法的各自特點,針對建筑物實景三維模型的平面性結構,提出面向三角形網格模型的局部泰森插值算法,算法的流程如圖4所示。

圖4 局部泰森插值算法流程圖
本文提出的局部泰森插值算法的主要流程為:


將行列式展開為平面方程的一般形式,即Ax+By+Cz+D=0。由此平面方程確定系數A1,B1,C1,D1,由空間三角形外接圓的性質聯立方程確定系數A2,B2,C2,D2以及A3,B3,C3,D3,由此可推圓心O0的坐標為:
3)檢查鄰域三角面片的拓撲特性,對于非建筑表面的三角面片還需要以鄰域泰森多邊形角點的坐標作最小二乘法曲面擬合,在上一步求出的圓心坐標O0的基礎上做偏移操作,使得泛函誤差最小,得到最優化的插值點。
如圖5所示,取三角面片F0,則其鄰域三角面片集合為{F1,F2,F3,F4,F5,F6,F7,F8} ,作F0的外接圓求得其圓心為O0。通過對其進行鄰域拓撲檢查,最終確定參與第三步曲面擬合的三角形為F3,F6,F8,得到其圓心坐標O3,O6,O8,則最終的最優化插值點可由4個圓心坐標做協同計算而得到。

圖5 插值算法示意圖
以OSGB 格式存儲的三維網格模型將紋理信息以圖片的形式保存在同一個二進制文件中,在通過節點遍歷的方式進行稀疏點云析出時可以同步導出模型對應的紋理圖片。
在3D 模型的紋理貼圖中常使用UV 映射將3D 網格轉換到2D 平面便于對其包裹2D 紋理圖片,其中U和V指的是2D空間的水平軸和垂直軸。實景三維模型中存儲的紋理實際上就是一張執行完UV展開,將三角網格與參數平面建立一一映射后得到的圖片(如圖6)。

圖6 導出的部分模型紋理示意圖
輸出新的三維模型需要新的面片索引,在插值生成點云數據后,需要根據插值后得到的新三角面片的頂點坐標以及頂點對應的紋理坐標來完成對面片索引的重建。
如上文的紋理導出一節所說,經過UV 展開得到的紋理貼圖中3D網格和2D紋理是一一映射的,構成模型的三角網的每個頂點都有自己的紋理坐標,由插值得到的點無法直接從紋理圖片中得到其紋理坐標。UV 展開保留了三角面片這一構成實景三維模型的最小單元,以此為原則,本文提出了基于平面單應性轉換獲取插值點的紋理坐標的方法。
平面單應性轉換將一個平面內的點映射到另一個平面,這里的平面是指圖像或者三維中的平面表面,由于UV 展開在紋理圖片中保留了模型三角面片,利用面片頂點坐標與紋理坐標之間的映射關系以及三角面片本身具有的邊對邊約束關系,能夠較為良好的解決本文所述的插值點的紋理坐標求解問題。

該投影坐標系可以進行任意尺度的縮放,為齊次坐標系,單應性矩陣H的自由度為8。因此通過三對點到點映射以及三角形的邊對邊約束,可以用直接線性變換法求解(3)式中矩陣H。得到該矩陣后,即可在執行點云插值后,根據插值點的坐標求得其紋理坐標,實現新增的頂點從紋理圖片中調度其對應顏色的需求。
經過局部泰森插值算法的處理,原始的三角片面面片F0或其鄰域三角面片將以插值點O0為中心裂變3 個新的三角面片,將此過程稱為面片索引重建,其操作流程為:
首先,檢查圓心O0所在的三角面片;由于三角形外接圓的圓心并不一定會落在當前三角形內,所以需要對此進行判斷,若令該圓心落在三角形面片{v1,v2,v3} 中,則該面片即為原始三角形面片F。
接下來,添加外接圓圓心數據到稀疏點云列表中并得到其頂點坐標索引為vk;由此即可將原始三角面片F裂變為3個新的三角面片,分別為F1’={vk,v2,v3} ,F2’={vk,v1,v3} 以及F3’={vk,v1,v2} 。
最后,將新的三角面片F1’,F2’,F3’ 添加到面片索引列表中,并對應刪除原始三角面片F,至此,本文完成了對面片索引的重建工作。
對四川崇州某城市區域的OSGB 三維模型進行實驗,導出實驗結果如圖7、8所示。

圖7 析出點云示意圖

圖8 輸出模型示意圖
本實驗遍歷原始的三維模型頂點并析出點云,使用的本文提出的插值方法并經過兩次迭代的點云插值計算和最小二乘曲面擬合得到插值點云和新的面片,求出插值點的紋理坐標后,對面片索引進行重建,最后輸出新的三維模型。
由圖9a 和9b 對比看出,通過插值頂點個數從4 284 增加到38 898,切實提升了點云數量和稠密度。從圖10a 和10b 對比看出,由實驗得到的三維模型較原有模型,精細程度得到提升,地物邊界更加明顯,紋理的顯示效果良好,且析出模型點云也能較好的符合實際情況。

圖9 點云插值前后頂點數量對比

圖10 插值前后模型細節對比
本文提出的算法能夠在不借助傾斜攝影測量原始相片以及點云數據的條件下,保持建筑物原有平面幾何結構,生成符合點云編輯、分割以及重建要求的稠密點云數據,并通過實驗證明了析出點云構建的模型保持了良好的幾何和紋理特性,為實景三維模型基于點云數據的進一步應用提供了理論基礎,也為后續模型點云相關工作的展開創造了數據條件。
當然后續工作中還需要改進不足之處,一方面需要改善插值算法的迭代次數與迭代的判斷條件,避免場景較大點云過多時插值的計算量太大;另一方面需要發掘更高效的曲面擬合方法,提升不同平面的面片經過曲面擬合后產生的三維曲面的精細度。