A Gestalt rules and graph-cut-based simplification framework for urban building models原理與核心

這篇paper主要用是利用格式塔和圖割來簡化城市建築的框架。

目的:為了有效的識別城市並保持空間的連貫性,以格式塔的原理來識別識別城市建築物的分佈模式。

介紹:應用格式塔規則和圖形切割將相似的建築物聚類到同一組中。然後,將建築物的佔地面積和立面紋理進行匯總,然後可以將整個城市模型概括為多個級別。格式塔原則在對建築模型進行聚類時應考慮空間關係,包括距離,方向,相似性和連續性。為了減少加載時間。

貢獻:

  • 提出了一種對大型城市建築足跡和立面紋理進行聚類和泛化的優化框架。
  • 建築足跡被分為潛在的格式塔組。
  • 基於圖形切割的優化功能用於獲得建築物的一致分割。
  • 引入了一種有效的數據結構來管理匯總的建築足跡和立面紋理。


流程圖:





預處理Pre-processing

劃分Blocks主要是依據主要道路去區分出不同區域。
DT子圖這裡是基於Delaunay三角剖分和最小生成樹建立。

格式塔規則包含鄰近性、相似性、規律性及共同的方向。


提取潛在的格式塔群組

  1. 先依彼此的距離來劃分群組把區堆從B0開始放至Graph的G中,會形成G={B0,B1,...,Bn}
  2. 在規律性regularity 的部分, 主要是利用線性方向的部分來計算Bi,Bj,假設以Bi為主,那設此方向為OBi並求出與差距的角度θ(OBi,OBj)
  3.             利用反餘弦求出

                 得到一個簇集GR,此簇集物件角度不超過閾值
  4. 再從圖GR中提取潛在的格式塔群組
(1)前兩個建築佔地面積B0和B1從GR中拉出, 放入新建立的列表GR1。接下來計算利用方向dn和dnj算出θdirdn為列表中GR1第一建築B0底部的方向至最後一棟建築Bn底部的方向。如果θdir > tdir (tdir是規律性的閾值),那麼從GR1刪除並分配至GR2。
(2)重複步驟(1),直到遍歷GR中的所有建築物佔地面積。所有的建築足跡滿足格式塔規律性規則。
(3)對於殘留的建築足跡GR2以相同的方式重複步驟(1)和(2),然後獲得另一個足跡也符合格式塔規則性規則的組。
(4)重複執行步驟(1)–(3),直到其中的GR數量不止一個。
相似性群組為最小邊界框的寬度和高度比
鄰近性群組一棟建築物之間的距離B及其周圍的建築物小於接近度閾值tp


優化潛在的格式塔組


引用Fast approximate energy minimization with label costs 出自Delong 2012的論文的能量函式


建築佔地面積分組

在圖割完結果後,把不同的群組分別合併為一個多邊形。我們將合併過程分為以下四個步驟

(1)得到的一個凸包Ch在所有足跡(紅色多邊形)包含在其中中。(下圖b)

(2)當頂點滿足以下條件時,將足跡上的凸頂點VA插入到CH中:(下圖c,d)
條件1:有兩個相鄰的VA頂點屬於不同的原始足跡。
條件2:與其他凸頂點到該線的距離相比,從VA到由兩個相鄰頂點連接的線的距離最短。

(3)當VB及其兩個相鄰頂點屬於同一原始足跡時,將頂點VB插入到CH中。(下圖e)

(4)重複上述步驟,直到遍歷原始輪廓線的所有頂點為止。(下圖f)







SceneTree場景樹

SceneTree是樹形數據結構,SceneTree中的每個節點都包含相應LOD建築模型的實例索引,從而使SceneTree的創建過程與建築概化過程分開。SceneTree節點Bn定義如下:
nodeBn={BlockID,LODLevel,LOD(i)(FootprintPolygons,TexturePolygons),ptr_father,ptr_child}


SceneTree節點。BlockID記錄塊編號。為了有效地檢索級別以進行渲染,我們為每個級別分配了唯一的編號,即標識符。LODLevel是相應級別的標識符。LOD)存儲該建築物佔據區域和所述的外牆紋理個電平,並且它由兩部分組成:足跡多邊形紋理多邊形足跡多邊形管理廣義的建築物足跡;紋理多邊形存儲廣義的門面紋理。ptr_father是一個指向父節點的指針,而ptr_child指向子節點。


塊中的原始城市建築佔地面積LOD 0  =  123,…,n }作為LOD0。經過優化後,LOD0中的建築物被分為不同的組,並形成新建築物LOD 1  =  R 1R 2R 3,…,P 1P 2P 3,…,
BS1BS2BS3, …}。
Ri表示規則性組的泛化結果,Pi表示鄰近性組的泛化結果,Si表示相似性組的泛化結果。
下圖中規則性建築物組{ 123 }被合併到節點BN 9(建築物節點BN)和鄰近建築物組{ 4中。56 }合併到節點10中,而節點BN 11是相似性建立組{ 78 }的聚合結果節點中包含的信息(例如BlockIDLODLevelLODi),ptr_fatherptr_child)也記錄在相應的建築物中。因此,SceneTree節點可以通過應用合併操作來保存不同的LOD信息。




LOD可視化

在渲染期間,我們首先遍歷SceneTree以根據用戶的視點選擇適當的節點。隨著視點的變化,我們計算視點與塊中心之間的距離d給定距離閾值12,其中1  < 2,存在四種可能的LOD: 

不可見(方塊被剔除和不用顯示),

粗略顯示(d  > 2), 

中等顯示(1  < d < 2),和   

全部顯示(d  < 1)。 

BlockID由當前視點確定。通過LODLevel相應的塊標識,我們計算的腳印和外觀紋理的級別,並確定在合併的子集 GRGS 和GP。
SceneTree可以確定要渲染的節點。它可以輕鬆地從幾何數據中分離索引信息,以管理正在加載的城市場景的數據。




並行運算

為了減少計算時間,提出了一種基於以下兩個假設的並行化方案:
(1)

聚類和合併過程:在此過程中,每個區塊中的建築足跡僅與其自身區塊中足蹟的空間分佈有關,而與其他區塊中的足跡無關。因此,可以並行地計算不同塊之間的處理。類似地,可以將不同立面之間的紋理元素進行聚類和並行合併。

(2)

基於圖割的優化:在最小化多標籤標準化圖割的過程中,可以獨立構造數據成本,平滑度成本和標籤成本的能量函數。基於圖割的優化可以通過並行計算來加速。







留言

這個網誌中的熱門文章

🛠【ASP.NET Core + Oracle】解決 ORA-00904 "FALSE": 無效的 ID 錯誤與資料欄位動態插入顯示問題

🛠【實戰排除教學】從 VS Code 的 _logger 錯誤,到 PowerShell 找不到 npm/serve,再到 Oracle ORA-03135 連線中斷——一次搞懂!

🔎如何在 Oracle PL/SQL 儲存過程中為文字欄位加入換行符號(CHR(10))——以 Updlcmremark 為例