?

基于多視圖像點云的建筑物屋頂分割算法研究

2022-06-06 12:57陳鑫祥蒲冰鑫王瑞勝鐘若飛
地理空間信息 2022年5期
關鍵詞:面片云中屋頂

陳鑫祥,蒲冰鑫,俞 建,王瑞勝,鐘若飛

(1. 廣東省國土資源技術中心,廣東 廣州 510098;2. 首都師范大學 資源環境與旅游學院,北京 100048;3. 廣州大學 地理科學學院,廣東 廣州 510006)

建筑物是一種可用于估算能源[1]需求、生活、城市人口和財產稅的基本GIS 數據?;跈C載點云的建筑物三維建模,主要是以建筑物屋頂為基礎進行幾何模型繪制[2];同時建筑物屋頂識別作為屋頂輪廓線生成的關鍵一步[3],在“鄉村振興”的時代背景下,對農村地籍調查工作大有裨益。全自動建筑物屋頂識別算法將有助于解決傳統人工方法從海量點云中提取建筑物屋頂成本高、耗時長的問題?;诘涂諢o人機獲取的多視傾斜圖像經過計算機視覺技術處理后,可得到多視圖像MVS 點云[4]。相較于機載激光雷達技術,傾斜攝影技術具有速度快、成本低、風險小等優點,且MVS點云不僅包含地物詳細的三維信息,還包含紋理信息和光譜信息,因此MVS點云后處理技術是未來研究的趨勢[5]。鑒于此,研究基于MVS 點云的全自動建筑物屋頂識別技術十分必要。

通過查閱大量文獻可知,現存的點云后處理技術主要針對激光點云。在機載激光點云后處理算法中,從點云中提取建筑物屋頂主要包括建筑物識別和屋頂面片提取[6]兩步。建筑識別通常包括“自下而上”和“自上而下”兩種思路,“自下而上”即分別過濾地面、植被等非建筑點,最后得到建筑[7];而“自上而下”則是直接從點云中識別建筑[8];通常來說,“自下而上”的方式更流行。從點云中識別地面的算法[9-11]有很多,如ZHANG K[9]等提出的漸進形態學濾波,ZHANG W M[11]等提出的布料濾波,這些算法都能取得很好的效果,算法的難點是如何對建筑和植被點進行分類。針對植被識別算法,研究主要集中在LiDAR點云,但這些方法往往都有使用場景的限制。部分學者對MVS點云做了研究,如劉宇[12]等提出利用植被系數和綠信比過濾植被點,該方法參數過多、不易控制;眭海剛[13]等利用了顏色不變量理論[14-15],只需設置一個參數;上述兩種方法均未考慮建筑物表面極有可能為近綠色的情況。屋頂面片分割算法的關鍵是如何識別面片之間的差異性。常見的算法包括基于點法向量的區域增長算法、基于平面擬合的RANSAC 算法[16]以及基于最小能量函數的屋頂分割算法[2]等。

綜上所述,現階段存在很多激光點云后處理算法,各有優劣。對于MVS點云,由于其往往存在不同程度的數據缺失,且含有大量噪聲、離值點,因此從MVS 點云中快速而準確地分割建筑物屋頂是一大挑戰。針對該問題,本文提出了一種從大規模MVS點云中分割建筑物屋頂面片的新算法。

1 研究方法

本文借用LiDAR點云處理的一些思想,結合MVS點云數據的特點,提出了一種從MVS點云中全自動識別建筑物屋頂面片的算法框架,主要由建筑物單體化、屋頂面片識別和面片優化3 個部分組成,每個部分又由2~3個子算法組成,如圖1所示。

圖1 建筑物屋頂分割流程圖

1.1 建筑物單體化

借鑒計算機科學中“分而治之”的算法思想,首先需要執行建筑物單體化操作。由于屋頂是以單體建筑物為單元存在的,因此準確識別建筑物至關重要。算法借用LiDAR 點云“自下而上”分離建筑物的思想,通過過濾植被、分離地面來實現建筑物單體化。

1.1.1 地面過濾

從數據性質上來看,MVS點云類似于機載激光點云,因此可利用機載激光點云中地面識別算法進行地面去除。本文采用ZHANG W M[11]等提出的布料濾波算法。該算法利用三維計算機圖形學中的布料模擬技術,將計算機編程模擬的布料放置在倒置后的點云數據上,再通過布料與數據的接觸來識別地面點。

1.1.2 植被過濾

從數據內容上來看,數據源是彩色點云,具有正確的RGB 信息。受相關研究[14-15]的啟發,植被通常是綠色或近綠色,那么可利用基于顏色不變量的植被濾波方法。具體的,設點云中每個點的坐標為(x,y,z),利用綠色和藍色通道定義的顏色不變量公式為:

式中, Ig(x,y,z)、 Ib(x,y,z)為該點的綠色和藍色通道值。

設植被閾值為Tg,當Ψg<Tg時,表示該點為植被點;否則,為非植被點。值得注意的是,現實世界中存在一些帶有特殊顏色的建筑,如屋頂為藍色的廠房、墻上綠色攀援植物的居民樓、彩色外墻的幼兒園(圖2)等,通常的植被去除算法都忽略了這些特殊情況。為了防止植被點過濾時誤刪除這些建筑物點,本文采用一種基于法向量變化檢測的方法來進行優化[17]。

圖2 幼兒園

首先,估計點的法向量。利用式(2),構造一個圓心為 p ,半徑為r 的鄰域 Np,其中 P 為原始點集,

然后,利用式(3),計算鄰域內點的協方差矩陣Cp,并計算其特征值和特征向量。對特征值排序,λ1<λ2<λ3,則最小特征值 λ1對應的特征向量被視為點 p 的法向量。其中, pˉ為鄰域Np的中心。

通過設定閾值Tn則可很好地識別共面點。通過上述步驟,理論上可保證準確地過濾植被點。

1.1.3 建筑物的單體化

對于MVS點云,過濾掉地面、植被后,通常剩余地物為建筑物、車輛和電力設施(如電線、電桿)等。由于建筑物包含完整的立面信息,因此單棟建筑物的點數明顯大于其余地物。利用基于點間距的歐式聚類算法,設置聚類的最小點數和點間距的最大值,可有效剔除非建筑物點,實現建筑物聚類。

為了進一步提高算法的精確度,本文結合高程信息對結果進行優化。找到每個點集的高程最小值Zmin,并結合建筑屋頂常識,設置建筑物高程最小值Zmin+Tz,如Tz=2.0 m。

1.2 屋頂面片識別

經過建筑物單體化后,本文以單棟建筑物點集為處理單元進行屋頂面片提取。相較于機載激光點云,MVS點云中的建筑物信息更加豐富,不僅包括大量建筑物立面信息,還有可能包括部分室內信息。

1.2.1 建筑物立面去除

根據先驗知識,建筑物立面通常是垂直于水平面的。因此,可通過計算特征 f 去除建筑物立面[18]。由式(5)可知,若點位于立面,則 f 極有可能等于1。

式中,np為點p處的法向量;ez為單位列向量(0,0,1)。

由于MVS點云具有詳細的建筑物立面信息(圖3),通過特征值 f 只能剔除建筑物墻面點,對于非墻面點,如雨棚等構筑物則不能有效去除。這些構筑物呈小塊狀零星分布,不同塊之間有較大距離,因此可利用歐式聚類算法進行有效去除。

圖3 建筑物

1.2.2 面片識別

建筑物屋頂通常由各種平面或類平面組成,因此可利用區域增長算法分割屋頂面片。經典區域增長算法的工作原理是基于點法線之間的角度比較,即通過設置曲率變化和法線角度變化的閾值,合并在平滑度上接近的點,從而分割面片。

1.3 面片優化

MVS點云中存在部分點與現實世界不一致甚至部分點缺失的情況,如兩個平面的相交區域為不規則曲面、屋頂面片中有較大孔洞等,如圖4所示;同時,建筑物屋頂通常存在一些附屬物,如水箱、通風設施、太陽能熱水器等,去除立面后,仍會有點殘留,這些情況將造成分割出的屋頂面片邊界不規則甚至不完整。

圖4 建筑物屋頂

1.3.1 面片平整

針對這些問題,受李海亮[19]等研究的啟發,結合屋頂環境的特點,本文提出了一種基于主成分分析的面片平整算法,既能修補孔洞,又能平整面片。

1)搜索與點數最多的面片Pmax的距離d 在閾值內的面片,如0.5 <d <2.0;這些被認為是非屋頂面片P'。

2)利用主成分分析算法將P'和Pmax轉換到主平面。計算轉換后Pmax的高程均值,并把它賦給所有點的z 坐標。

3)在主平面上,搜索與直線x=Xmin+i×dˉ距離在dˉ/2范圍內的點;再以dˉ為閾值,進行補點,其中dˉ為平均點間距,i=1,2,3,…;直至Xmin+i×d>Xmax為止。

4)在 y 坐標上重復步驟3)。

5)將所有點從主平面還原到世界坐標系,得到屋頂面片P。

6)迭代執行步驟1)~5),直至遍歷所有點。

通過該算法處理,理論上可獲得平整的建筑物屋頂面片。

1.3.2 格網化

通過實驗發現,由于照相機攝影角度的原因,MVS點云通常含有建筑物內部點。為了避免將建筑物內部點識別為屋頂,本文提出了一種基于二維格網的濾波算法。

首先找到點集在X 、Y 軸上的最值(Xmin、Xmax、Ymin、Ymax);再根據式(6)計算每個點所屬網格的行列索引號;最后統計每個網格內的點數,并按照高程值對點進行排序。若網格內存在相鄰點的高程之差大于閾值Tz,如Tz=2.5,則舍棄高程較低的那部分點。

式中,rowi為點i 的行索引;columni為點i 的列索引;width 為網格的寬度; xi為點i 的x 坐標; yi為點i 的 y 坐標。

通過該算法處理,不僅能清除建筑物的內部面片、提高屋頂面片的識別率,而且能刪除屋頂面片之間的重疊部分,使面片規則,從而方便了以屋頂面片為輸入數據的其他算法處理,如屋頂輪廓線提取、基于屋頂的三維建模等。

2 實驗與結果分析

2.1 數據預處理

為了驗證本文算法的正確性,選取一組由傾斜影像生成的彩色點云進行實驗。原始數據采集于廣州市某小區,共約包含38 593 萬個點,大小約為17.6 G;按照1∶50 抽稀,并去除噪聲后,最終數據大小為359 M,點數約為772 萬個。場景內包括一個幼兒園、11 棟居民樓(含一棟連體建筑)、兩棟結構復雜的商業建筑、大量綠化設施和車輛以及道路、路燈等交通設施,如圖5所示。

圖5 原始數據

2.2 實驗環境

實驗采用C++編程語言,基于PCL 庫,環境為Windows 64 位系統,處理器為Intel Xeon (至強)E3-1226 v3 @ 3.30GHz 四核,內存為 16 GB,IDE 為Visual Studio 2013。

2.3 實驗結果分析

整個框架運行時間為1 542.1 s,其中植被過濾耗時約為53 s,地面過濾和單體化耗時約為461.96 s,屋頂面片分割由于涉及到面片優化,耗時較長,約為1 027.14 s。實驗結果如圖6所示,可以看出,盡管測試數據中有彩色建筑,本文算法仍可準確識別出14棟建筑物,有效完成屋頂分割任務。為了進一步說明該算法的有效性,本文將原始數據與分割結果進行疊加比較,如圖7 所示,從視覺效果上來看,該算法能正確分割出屋頂面片。

圖6 實驗結果

圖7 重疊效果圖

為了突出屋頂分割的準確性,屋頂包含大量附屬物的建筑物分割結果如圖8 所示,可以看出,該算法不僅能準確分割屋頂面片,而且能保證其具有較規則的幾何形狀。

圖8 附屬物屋頂

本文采用參考文獻[18]的方法來定量評價本文算法,結果如表1 所示,可以看出,實驗數據的分割準確度可達96.46%。對比實驗結果和原始數據發現,出現欠分割的原因是兩個屋頂面片平行且緊鄰,導致面片合并,如m 和n 組;屋頂存在較大空洞導致出現過分割,如h 組,充分說明本文算法具有良好的魯棒性。

表1 實驗結果統計

3 結 語

本文提出了一種全自動從大規模多視圖點云中分割建筑物屋頂面片的算法。雖然MVS點云中含有大量的離值點,但該算法仍能生成準確、平整的建筑物屋頂面片,并保證面片之間正確的拓撲關系。本文具有兩個創新點:①優化了基于顏色不變量理論的建筑物單體化技術,能在復雜的城市場景中實現高準確率的建筑物識別;②提出了一種基于主成分分析的面片孔洞修補算法,既能修補空洞,又能平整面片,對于由規則四邊形組成的屋頂普遍適用。

本文解決了從MVS點云中分割建筑物屋頂面片較難的問題,在一定程度上降低了工業上分割建筑物屋頂面片的成本;且研究結果能作為建筑物屋頂輪廓線提取或三維建模的輸入數據。本文算法仍存在一些不足之處,如對于非矩形組成的屋頂面片適用性不強等,后續研究中將重點解決這些不足,同時研究如何生成規則屋頂輪廓線。

猜你喜歡
面片云中屋頂
借“光”生財的屋頂
阿來《云中記》的死亡言說及其反思
三維模型有向三角面片鏈碼壓縮方法
屋頂屋
“一個人”的村莊:阿來《云中記》解讀
初次來壓期間不同頂板對工作面片幫影響研究
云中歌
云中笛音
屋頂的雪(外四首)
甜面片里的人生
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合