1. 程式人生 > >掃蕩傾斜攝影單體化難題

掃蕩傾斜攝影單體化難題

單體化問題的由來
我們先來說說什麼是“單體化”。“單體化”其實指的就是每一個我們想要單獨管理的物件,是一個個單獨的、可以被選中的實體(Entity);即用滑鼠點選時可以顯示為不同顏色(稱為“高亮”)顯示,可以附加屬性,可以被查詢統計等等。只有具備了“單體化”的能力,資料才可以被管理,而不僅僅是被用來檢視。
對於人工建模而言,單體化是一個不言而喻的事情。即在人工建模的過程中,自然會把需要單獨管理的物件(如建築、路燈、樹木等)製作為單獨的模型,也是和其它物件分離開的。(當然也有一些時候為了其它方面的一些考慮,人工建模時故意把幾棟樓作為一個物件來製作)
這裡寫圖片描述

圖1 傾斜攝影自動化建模過程和機制
對於傾斜攝影自動化建模而言,其建模機制的原因可簡單歸納為如上圖所示。即在空三之後,首先對所拍攝的影像像對生成稠密的點雲,然後對點雲進行抽稀,再構建三角網,最後貼上貼圖。在這個過程中,是沒有人工干預的。當前的建模演算法並不會把建築、地面、樹木等地物區分出來,因此構建出來的是一個連續的Tin網。對於這樣的資料,本身是無法選中單個建築的,需要進行一定的處理才能實現“單體化”。
而對於大多數應用(除了僅僅用來看效果或進行量算)而言,是需要能對建築等地物進行單獨的選中、賦予屬性、查詢屬效能最基本的GIS的能力。因此,單體化成為傾斜攝影模型在GIS中應用所繞不過的一個坎,是必須要解決的問題。
這裡寫圖片描述

圖2 單體化問題的由來
單體化的三種解決思路
那麼,傾斜攝影模型實現單體化的技術思路,總結出來有三種,具體包括:
1、最直觀的思路,就是用建築物、道路、樹木等對應的向量面,對傾斜攝影模型進行切割,即把連續的三角面片網從物理上分割開,從而實現單體化。我們可以稱之為“切割單體化”。效果可如下圖所示:
這裡寫圖片描述

圖3 切割單體化效果圖
2、利用三角面片中每個頂點額外的儲存空間,把對應的向量面的ID值儲存起來;即一個建築所對應的三角面片的所有頂點,都儲存了同一個ID值,從而實現在滑鼠選中這個建築時,該建築可以呈現出高亮的效果。這個可以稱之為“ID單體化”,如下圖所示。
ID單體化理解起來相對要難一點,最好能懂一點三維開發的知識。其實就是讓同一個建築模型上,都儲存上同一個id值。從而在三維gis中呈現出滑鼠點選後,能高亮顯示這個建築物:
這裡寫圖片描述


圖4 ID單體化效果圖
3、在三維渲染的時候,動態的把對應的向量面疊加到傾斜攝影模型上,類似於一個保鮮膜從上到下完整的把對應建築等物體的模型包裹起來,從而實現可被單獨選中的效果。這種由於是渲染時動態呈現的,可以稱之為“動態單體化”。如下圖所示:
這裡寫圖片描述
圖5 動態單體化效果圖

動態單體化乍一看和ID單體化效果非常像,但它們實現的技術原理是有很大區別的。ID單體化是需要預先處理資料,把建築物所對應的模型上儲存同一個ID值,而動態單體化則是在渲染時動態繪製出來的。
動態單體化的另外一個誤解是:是不是就在用一個半透明的方盒子在傾斜攝影模型外面。其實不是這樣,動態單體化類似於半透明的面板衣,是從上到下貼合模型表面,並把模型完整全部套合在內的效果。如下圖所示:
這裡寫圖片描述


圖6 動態單體化中向量面與模型的套合效果

在軟體操作中,動態單體化需要把向量面作為一個圖層新增到三維場景中,然後軟體中的一個開關設定為“貼物件”,效果就出來了。
內部實現中,可以簡單理解為:向量面會判斷tin網的哪些部分是在它的範圍內的,包括空中漂浮的模型,然後把半透明的顏色覆蓋上去。
還有一類是以天際航的DP-Modeler為代表,在傾斜攝影模型的基礎上,進行人工干預,重新構建單個的三維模型;這個其實有點類似於人工建模的味道,結果自然就是單體化的(同時還起到修飾模型效果的作用)。就不在我們後續討論之列了。
單體化目的回顧及優缺點分析
乍一看,第一種思路即“切割單體化”在單體化的道路上最為徹底,畢竟只有這樣,才是真正把連片的模型單獨切割出來了,之後的選中高亮、賦予屬性等也就都是順理成章的事情了。因此,也有人說:只有“切割單體化”才是真正的單體化,其他都是假的單體化。
但我們繼續深入研究,就會發現後面兩種單體化在代價更小的情況下,也能實現對應的要求,切效果更佳。也就是說我們需要再審視目的,再綜合利弊來考慮和選擇途徑和方法。就如同減肥並不代表必須節食,運動加合理的膳食同樣能達到目的,效果可能更好。
那麼,我們再來回顧一下單體化的目的到底是什麼:
單體化本質上是為了解決傾斜攝影自動化建模軟體輸出的三維模型是連片的、無法單獨選中要管理的地物;為了能進行查詢和管理,我們需要能單獨選中某個地物,能查詢它對應的業務屬性;但並不“必然”要求把這個地物從物理上把它和周邊的模型分離開。
當然,“單體化”這個名詞容易給人造成一種誤解,似乎必須物理切割了,才是真正的單體化;要是換做“物件化”或“可管理”等名詞,理解起來就順暢多了。
這裡寫圖片描述

圖7 單體化思維的轉變

打破了這個心理障礙,那我們就繼續來分析這三種單體化方法各自存在的優缺點。
首先我們來看,上述三種單體化的方式,其實都能達成最基本的目標,就是能選中該地物,能賦予屬性並進行查詢。我們再看資料製作過程,“切割單體化”必須先進行模型物理上的切割,由於傾斜攝影資料量一般都比較大,因此切割是一件費時費力的事情,再有就是切割後模型的底邊,會帶有非常明顯的鋸齒(三角面片的邊界)。另外由於三維GIS對模型的空間查詢和分析計算能力遠沒有二維GIS對面的能力完善,因此所能進行的下一步分析計算的能力是非常有限的。
而“動態單體化”則是在三維渲染過程中,動態的把對應向量底面套合在模型表面之上,因此就無需提前的預處理,只需要三維GIS軟體和所執行的裝置上支援該渲染能力即可;套合後的模型底邊的平滑度是和顯示器螢幕的解析度一致的,效果會好的太多。另外動態單體化由於是把二維向量面和三維傾斜攝影模型結合起來了,因此可以充分利用二維GIS平臺對面資料的查詢計算分析等能力,各類GIS能力都能充分發揮出來,如查詢周邊地物,製作專題圖等等。如下圖所示:

這裡寫圖片描述
圖8 動態單體化支援豐富的GIS功能

“ID單體化”則是介於兩者之間,可以理解為在還不支援“動態單體化”所需要的三維渲染能力時,一種折中的處理方法。
對於以上分析,我們可以歸納總結為下表:

單體化方法 技術思路 預處理時間 模型效果 功能 小結
切割單體化 預先物理切割把地物分離開 長 差,鋸齒感明顯 弱 非特殊情況不推薦使用
ID單體化 給對應地物的模型賦予相同ID 一般 一般 一般 在不支援動態渲染的環境中使用
動態單體化 疊加向量底面,動態渲染出地物單體化效果 無需 好,模型邊緣和和螢幕解析度一致 強,所有GIS功能都能實現 推薦使用

“切割單體化”還有一個非常致命的問題在於:傾斜攝影模型本身是帶有多層LOD的,切割針對最精細層進行,破壞了資料原生的LOD,也就無法直接載入模型,而只能採用匯入的方式。再就是切割一般只是把Tin網分來了,而整塊模型所對應的紋理並不會切割開,因此會出現多份紋理,而重複大量的紋理是最耽誤三維渲染效能的。這一切,都會導致資料量較大時三維瀏覽的效能急劇下降。這一點,還可以參考對傾斜攝影資料載入和效能方面的問題,會有更詳細的闡述。
分層單體化的實現思路
動態單體化的一個高階應用,就是對不同樓層進行單體化,也就是能選中高亮一個建築的每一層、乃至每一戶,並查詢對應的屬性。這麼做的目的是為了實現基於傾斜攝影模型的精細化管理,在公安的“三實”、不動產登記等諸多領域中都具備應用價值。
實現分層單體化的提前是需要知道每一層樓層高度資訊的向量面數據。資料準備過程如下圖所示。一般這類資料在房產主管部門會有,自己也能根據傾斜攝影模型採集製作。
這裡寫圖片描述

圖9 分層單體化所需要的資料基礎

對於切割單體化而言,是把模型中的每一層樓都單獨切割開,想想運算效率和每一層的鋸齒都是比較恐怖的事情。對於動態單體化而言,在資料準備妥當的情況下,也是軟體中的一個開關開啟,即可實現單獨每層每戶的選中和查詢。效果如下圖所示:
這裡寫圖片描述

圖10 基於動態單體化技術的選中查詢傾斜攝影模型每層每戶效果圖
從資料本質角度出發的再思考
其實,我們從科學原理上分析,傾斜攝影自動建模的結果,本質上就是帶有建築樹木等一切地物的地形加影像資料,只不過地形是用三角網來表達的。對於這種資料,我們更多可以參考和借鑑對影像的處理方式。即沒有人會把影像按照一個個建築來進行切割為多個小的影像塊,而是通過疊加一層向量化的面來實現對建築的選中和管理。
這裡寫圖片描述

圖11 單體化方式的再思考

這裡寫圖片描述
圖 12 2.5維地圖中的熱區(圖中央的天安門城樓效果)

當然,“切割單體化”也並非一無是處。曾經遇到個別應用中,使用者就是想儲存和拷貝其所擁有的建築模型,而並不關心周邊的環境。對於這種情況,竊以為採用模型修補軟體進行進一步加工處理,除了滿足單獨建築模型的需要,還能同時修補模型的效果。
配套向量底面的獲取方法
需要說明的是:由於三種單體化都事先需要準備好地物所對應的向量底面,因此在資料的準備工作上並沒有差別。不同的是:切割單體化是用完向量面之後就可以扔了;ID單體化需要留著向量面做屬性查詢;而動態單體化得把向量面帶著走、隨時用。
那麼,獲取配套的向量底面就是一個非常重要的工作。方法有三:
1、 已有DLG資料進行配準。這個是最省事的,不過需要有資料基礎;注意投影的一致性。
2、用自動化建模軟體輸出正射影像,然後半自動的勾畫向量面,這個需要投入一定的人工時間。也有不少國內公司,直接基於傾斜攝影來進行向量化製圖,據說效率也非常高。
3、 自動化的提取;這種方式代表著未來的方向,業界有不同公司正在探索之中,雖然方法各有差別,但總體前景非常看好。
例如中科遙感(天津)基於模型資料直接進行提取,但運算效能和效果還需要進一步提升。北京超圖則先把傾斜攝影模型轉換為Grid格式的地形,然後提取等高線,根據等高線的特徵進行分析提取。具體過程和提取後效果如下圖所示。最後的效果只能說是勉強可用,要是做太精確的計算肯定是達不到要求的;不過用來做管理,能選中能查詢還是OK的。
考慮到不同地區資料特徵不同,尚未提供一鍵式功能;但上述功能在桌面中都能進行操作(無需程式設計)。

這裡寫圖片描述
圖13 根據等高線分析來提取向量面的操作步驟

這裡寫圖片描述
圖14 根據等高線分析方法提取向量面之後的效果

最值得期待的是街景工廠、ContextCapture(Smart3D)等自動化建模軟體也在研製自動化提取方法。大致思路是通過中間輸出的點雲資料,按照一定規則進行篩選、簡化轉化為DLG。這個技術完成後,對於傾斜攝影的單體化,以及後續應用,都是一個大大的福音。