魏峰
(廣州市城市規(guī)劃勘測設計研究院,廣州 510060)
建筑物作為城市環(huán)境的基本要素,其矢量信息是城市地理信息的重要組成部分。建筑精細信息分析、城市更新等領域對建筑物矢量信息提取提出了更高的要求,不僅需要對建筑單體進行矢量化重建,還需要對建筑物進行結構化分割,以獲得具有陽臺、飄樓等語義結構信息的建筑物矢量化結果,滿足行業(yè)應用需求。此外,密集匹配點云作為低空攝影測量技術的成果,不僅滿足城市空間地理信息的快速獲取及更新,且較好地保持了建筑物的高精度三維信息[1]。因此,研究基于密集匹配點云的建筑物結構矢量化方法在理論和現實中都具有重要意義。
目前已有大量的研究集中在建筑物信息重建,其中,建筑物2D輪廓線重建是建筑物矢量化的關鍵步驟。常見的方法包括基于二維柵格圖像的信息提取方法[2-3]以及基于三維點云的輪廓重建方法[4-5]等。此外,為獲得更高的精度,以數據驅動的建筑物輪廓提取算法成為當前的主流方法,其過程大體分為邊緣點檢測和輪廓線規(guī)則化重建兩個階段。其中,Delaunay三角網[6]、Alpha-Shapes[7-8]、凸包算法[9-11]等算法是邊緣點檢測的常用方法。進一步,考慮絕大部分建筑呈現直線型和直角結構,已有學者基于最小二乘法的方法[12]、Hough變換方法[13]進行輪廓規(guī)則化重建。但是僅對單體建筑進行矢量化還無法滿足應用需求,還需在單體建筑的基礎上,對建筑物點云進行結構化分割,并進一步對各結構單體進行矢量化重建。
然而,點云的結構化分割結果不足以區(qū)分陽臺、飄樓這類與建筑主體連接的局部結構,因此,本文基于建筑物結構單體點云提取結果,提出了一種包含陽臺、飄樓等局部結構識別語義信息的建筑結構矢量化流程,通過屋檐改正及剖面特征追蹤方法提取建筑結構單體點云剖面輪廓結構,并結合基于圖像的剖面結構拓撲對比分析方法實現陽臺、飄樓區(qū)域的自動識別和定位,進而獲得建筑物結構矢量化結果。
通過傾斜攝影測量技術獲取的密集匹配點云包含了場景中的各類地物,因此首要步驟是提取建筑物點云。閆利等[14]提出的建筑結構單體提取算法不僅考慮了復雜場景中密集匹配點云存在插值產生的噪聲點,同時能夠對建筑單體進行分割,有效支撐后續(xù)建筑結構矢量化信息的重建。
該方法在利用布料模擬濾波(cloth simulation filtering,CSF)算法進行點云濾波的基礎上,通過法向量計算,將非地面點云分為水平點云和立面點云兩類,并對水平點云進行點云聚類,實現點云面片的分割;進一步,對于點云面片中存在的非建筑屋頂面部分,將點云面片投影至二維平面格網化并結合立面信息及面片幾何特征將非屋頂面的點云面片濾除;最后,根據點云面片之間的拓撲關系及點云面片的高程信息,將各屋頂面所包含的三維空間進行分割,實現建筑結構單體點云的提取。
建筑單體點云的提取雖然對雜亂無章的點云進行了有效分割,但此時的成果仍未達到應用需求,因此,還需在建筑結構單體點云提取的基礎上,依次對各結構單體進行2D矢量輪廓重建。
矢量輪廓重建方法主要包括外邊緣點檢測和輪廓線規(guī)則化兩個關鍵過程。在外邊緣點檢測過程,基于鄰域約束的凸包算法是當前非常有效且常用的輪廓追蹤算法,可滿足對凹多邊形輪廓的檢測。然而,由于點云本身的采樣和誤差等問題,檢測的邊緣點呈現不規(guī)則的折線形式,與建筑物實際輪廓不符,不滿足建筑物矢量化的要求,因此,還需要進行輪廓線規(guī)則化處理。根據建筑物輪廓線通常為相互垂直的兩個方向這一先驗條件,利用最小二乘的直線增長算法提取邊緣點中的線特征,并以線特征長度作為權值對其方向進行權重二均值聚類,確定建筑物的主軸方向之后,以此方向對所有線特征進行重定向及重定位處理,得到規(guī)則化輪廓線結果。
由于建筑結構單體點云的提取結果是基于建筑結構單體屋頂面計算得到,此時進行矢量化輪廓重建實際僅得到屋頂面輪廓。然而在現實場景中,由于飄樓、陽臺、屋檐等建筑結構的存在,其建筑基底輪廓與屋頂輪廓不一致,在建筑精細分析領域,如建筑總量統(tǒng)計方面,若不將這些結構與建筑主體進行區(qū)分,統(tǒng)計結果將存在較大誤差。
屋檐結構通常不參與建筑物的矢量化。作為干擾部分,需要對其進行識別剔除。如圖1所示,屋檐通常表現為屋頂面在建筑墻面位置向外突出一定距離,從而導致屋頂面下方的建筑墻面所圍成的輪廓相比于屋頂面輪廓出現向內凹進的情況。
圖1 包含屋檐的建筑物點云
由于屋檐的存在,屋頂面的輪廓并不能代表建筑物的實際輪廓,而屋頂面下方的立面點云所構成的矢量輪廓為實際輪廓。因此,對于結構單體BSi,計算其屋頂面點云RPi中的最低高程Hi,取屋頂面下方dh高度的建筑剖面點云,即高程在[Hi-dh-δh/2,Hi-dh+δh/2]區(qū)間內的點云PPi,δh為剖面寬度,對PPi進行矢量輪廓重建,得到剖面輪廓PBi(profile boundary)。通常情況下,令dh=1 m時,能得到可以正確反映建筑實際輪廓的剖面輪廓。
為了將各結構單體矢量輪廓中的主體部分與陽臺、飄樓部分進行區(qū)分,本文以陽臺、飄樓結構的幾何結構特征作為先驗信息。陽臺、飄樓結構在建筑結構單體提取過程中無法與建筑主體進行區(qū)分,但是建筑基底均不包含陽臺、飄樓結構,導致首層的建筑剖面輪廓與建筑整體的外輪廓相比,其具有向內凹進的特點,而凹進部分的輪廓即為陽臺、飄樓輪廓。因此,本文算法以此條件對陽臺、飄樓結構進行識別。
為找到建筑物外輪廓的凹進部分,本文提出了一種建筑剖面特征追蹤方法。在獲得屋檐改正后的建筑矢量輪廓(building boundary,BB)的基礎上,從屋頂面高度自上而下,每隔一定高度獲取該高度下的建筑剖面,利用矢量輪廓重建方法計算該剖面的規(guī)則化輪廓(profile boundary,PB),并采用基于圖像的輪廓拓撲對比分析方法,基于圖像方法求取BB和PB的交集區(qū)域和差集區(qū)域,最后結合形態(tài)學處理,找到該剖面輪廓中相比于建筑矢量輪廓的凹進部分。該方法主要包含兩個核心部分:基于圖像的輪廓拓撲對比分析方法以及基于建筑剖分的陽臺、飄樓識別流程。
1)基于圖像的輪廓拓撲對比分析方法。由于點云數據本身的精度及采樣問題或建筑立面上的空調或窗戶等影響,建筑矢量輪廓BB和剖面輪廓PB除了在陽臺、飄樓區(qū)域存在差異以外,還存在較多細小差異,直接利用幾何計算將導致算法極其復雜,因此,本文采用了一種基于圖像處理的方式,將建筑物結構單體輪廓和建筑剖面輪廓轉變?yōu)闁鸥駡D像,進而計算差集區(qū)域,并采用形態(tài)學處理,可以輕易地剔除細小差異,進而得到陽臺、飄樓的輪廓區(qū)域。
該過程涉及到柵格圖像分辨率參數的設置,參數值較小時,可以更好地表現輪廓原本的精度,但是會帶來效率的成倍降低。在實際應用過程中,圖像分辨率(rs)設為0.05 m時可以保證較高效率的同時,輪廓精度的損失較小。
此外,本算法采用形態(tài)學開運算處理,經過腐蝕、膨脹過程后,圖像中細小的噪聲區(qū)域會被剔除。在濾波窗口大小的選擇方面,由于陽臺、飄樓通常具有一定大小,其窄邊寬度一般大于1 m,因此將窗口設為15像素×15像素,即可以將窄邊小于15個像素(若rs=0.05 m,則15個像素對應0.75 m)的狹窄區(qū)域濾除。
以圖2中的簡單建筑模型為例,該建筑包含藍色、綠色和黃色三部分結構單體B1、B2、B3,分別計算各結構單體屋檐改正后的整體輪廓BB1、BB2、BB3。然后,利用從上至下的建筑剖分方法,首先構建差異輪廓集合FB={},并對藍色部分結構B1進行剖分,計算剖面高度,如式(1)所示。
(1)
(2)
圖2 包含飄樓結構的簡單建筑物模型及從上至下的建筑剖分流程示意圖
由于密集匹配點云的精度問題,在某個剖面下計算得到的差異輪廓并不能完整地表現陽臺、飄樓輪廓形狀,因此需要對各個剖面下獲得的差異輪廓進行整合。對FB中的差異輪廓進行疊加后利用連通分析對其聚類,并將各聚類簇中的差異輪廓進行合并和統(tǒng)計,得到合并的差異輪廓集合CFB={CFBi},i=1,2,…,n,n為聚類數。以CFBi對應的聚類簇中最低的差異輪廓高程作為CFBi的參考高程。
為了計算建筑物結構矢量化結果,需要獲取各結構單體屋頂面的準確輪廓。因此,在已有各結構單體整體輪廓BBi的基礎上,計算BBi與其拓撲關聯的結構單體輪廓的差集作為其屋頂面輪廓RBi。如圖3(a)所示,由于B1為無拓撲關聯的結構單體,因此RB1=BB1。圖3(b)為結構單體B2的屋頂面輪廓RB2計算結果,此時RB2=BB2-BB1。計算RB3=(BB3-BB2)-BB1,如圖3(c)所示。
圖3 結構單體屋頂面輪廓示意圖
最后將結構單體的屋頂面輪廓RBi依次與合并的差異輪廓CFBj進行求交運算,其中交集區(qū)域RBi∩CFBj為屋頂面輪廓RBi中的陽臺、飄樓輪廓;CFBj在RBi的差集區(qū)域RBi-CFBj為去除陽臺、飄樓部分后的屋頂面輪廓RBi。圖3的屋頂面輪廓經過與圖2中獲得的合并差異輪廓進行求交運算,得到如圖4中各結構單體屋頂面中的陽臺、飄樓輪廓以及更新后的屋頂面輪廓。
圖4 屋頂面輪廓與合并的差異輪廓求交計算得到陽臺、飄樓輪廓及更新后的屋頂面輪廓
將陽臺、飄樓的識別結果以及各結構單體屋頂面輪廓的計算結果投影至二維平面,得到建筑物二維矢量圖結果。同時,利用該結果對建筑物進行結構化矢量重建,得到建筑物結構矢量化結果。
如圖5所示,以廣州市某城中村作為測區(qū)采集傾斜影像,并利用ContextCapture軟件進行數據處理得到密集匹配點云,對該數據利用前文方法進行建筑物結構單體點云提取,得到如圖6所示的結構單體點云提取結果,以此為基礎,進行陽臺、飄樓的識別及建筑物的結構化矢量重建。
圖5 原始點云數據
圖6 建筑物結構單體點云提取結果
圖7為陽臺、飄樓識別結果以及建筑物結構矢量化結果,圖中紅色線條為建筑中結構單體的輪廓線,橙黃色部分為識別的陽臺、飄樓結構。直觀來看,該矢量化結果較好地反映了建筑物的實際幾何形狀,且單體部分均已得到區(qū)分,符合建筑矢量化應用的需要。此外,由于本算法在建筑物結構單體點云提取的基礎上進行處理,數據量已大大減少,本實驗數據僅需2~3 s即可完成運算,說明本方法在效率方面具有一定的保障。
圖7 包含陽臺、飄樓識別結果的建筑物結構矢量化結果
從圖7中的陽臺、飄樓識別結果(橙黃色部分)可見,陽臺、飄樓結構的矢量輪廓結果與真實的結構輪廓較為符合,在該數據條件下取得了較好的識別效果。但是對于密集建筑區(qū)域,如圖8紅圈部分所示,由于遮擋原因,在建筑首層區(qū)域,密集匹配點云數據存在大量的插值點,導致其飄樓結構區(qū)域的首層部分點云被過度平滑,失去了向內凹進的特點,破壞了飄樓的可識別條件,從而導致算法無法對該情況下的飄樓結構進行識別。對于該情況,應從數據源方面進行改進,采用地面LiDAR或SLAM技術等進行數據采集,結合多源數據還原遮擋區(qū)域的點云實際分布情況,即可更好地實現陽臺、飄樓結構的識別。
圖8 建筑物遮擋區(qū)域的局部展示
本文利用該區(qū)域的結構矢量化結果結合樓層信息計算各建筑的總面積。將該結果與通過外業(yè)測圖統(tǒng)計的建筑總面積進行定量對比分析,21棟建筑的對比結果如表1所示,其中最大相對誤差為12.5%,最小相對誤差為0.7%,平均誤差在6.8%,整體誤差在6.5%。從該結果看,相比手工成圖的面積統(tǒng)計結果,基于本文算法結構矢量信息的面積統(tǒng)計結果絕大多數都偏大,這主要由于密集匹配點云本身的精度(一般在8~10 cm)、密集匹配噪聲、局部結構漏識別、輪廓自動提取與正則化算法四個方面,尤其是陽臺、飄樓結構的漏識別,導致在本應計算一半面積的陽臺飄樓區(qū)域計算了全部面積,使得總面積統(tǒng)計結果偏大,而陽臺、飄樓結構的漏識別與密集匹配點云本身的噪聲相關。因此,采用多源數據融合的方式進行建筑結構矢量化,進一步改善了矢量化結果。
表1 本文矢量化結果統(tǒng)計的建筑面積與外業(yè)數據采集及手工成圖所統(tǒng)計的建筑面積對比
整體而言,本文方法得到的建筑結構矢量化結果具有較好的精度,在大大提升建筑物矢量成圖的效率且降低矢量成圖成本的同時,還保證了矢量化結果的精度,具有一定的應用前景。
本文在建筑物結構單體點云提取的基礎上,基于矢量輪廓重建算法,設計了一種建筑物結構矢量化算法。該算法利用已初步結構化分割的建筑物點云,采用基于建筑剖面輪廓的屋檐改正方法剔除屋檐對矢量化的影響;針對建筑物陽臺、飄樓等局部結構的識別問題,采用剖面特征追蹤方法,并結合基于圖像的剖面結構拓撲對比分析方法實現陽臺、飄樓區(qū)域的自動識別;進一步,通過結構化矢量重建,得到包含陽臺、飄樓語義信息的建筑結構矢量化結果。實驗結果表明,該算法可以較好地反映建筑真實矢量特征,能夠快速、準確且自動地重建建筑物結構矢量信息。
在實驗結果中,由于密集匹配點云數據本身存在的精度問題以及受遮擋影響出現的插值點問題,造成建筑局部結構的漏識別,可以考慮通過多源數據融合的方式,結合地面LiDAR點云還原遮擋區(qū)域的點云實際分布情況,提高建筑結構矢量化的準確性,這也是本研究需要進一步改進的地方。