呂富強,唐詩華*,何廣煥,蒙金龍
(1.桂林理工大學測繪地理信息學院,桂林 541004; 2.廣西空間信息與測繪重點實驗室,桂林 541004)
隨著無人機航攝技術的發展,建筑物信息提取的方式越來越多。建筑物信息的提取為房地一體、城區改造以及智慧城市等各項建筑相關的測繪項目提供有效的幫助[1]。因此,對建筑物信息的提取具有十分重要的現實意義。而提取出的建筑物信息需要單體化后才能夠賦予相應的屬性信息,滿足用戶的不同需求。對于如何快速提取建筑物信息并將其單體化,國內外學者開展了大量研究。
目前,建筑物信息提取的類型與方法有多種,主要類型有基于影像與基于點云兩大類。提取的方法較多,如王春林等[2]引入活動輪廓的圖割算法構建并解算輪廓能量函數來實驗建筑物輪廓信息的提取。程亮等[3]利用LiDAR、影像以及K-means 聚類方法,提取建筑物輪廓信息。李強等[4]對建筑物點云數據構建特征規則集的方式進行建筑物點云的提取。這些方法都可以較好地提取出建筑物信息,但其目標都是大面積的建筑物提取,沒有進行建筑物自動單體化的提取。建筑物提取后的單體化方法中,目前較為廣泛的單體化方法包括ID單體化、切割單體化、動態單體化和人工單體化4種方式。孫松梅等[5]先提取建筑物基底矢量面,再對建筑物體單體化。張紅華等[6]通過獲取垂直的圖像上的建筑物的頂部結構,以及建筑物側面的紋理特征來使建筑物單體化。李濟坤等[7]過 Canny檢測算法獲取建筑物邊界,用DP-Modeler實現了建筑物單體化。吳為民[8]采用了自動 ID 單體化的方法來進行建筑物的單體化。
現提出一種基于密度噪聲應用空間聚類(density-based spatial clustering of applications with noise,DBSCAN)算法的建筑物點云提取與單體化的方法,在進行建筑群提取的過程中,以航攝影像為輔助,使用DBSCAN算法對建筑物點云進行提取,并將其單體化。該方法適用于分布明顯的建筑片區,在大范圍建筑片區中也有一定的適用性。旨在提高建筑物點云自動化提取程度,提高提取效率與精度。
使用DBSCAN算法進行建筑物點云的聚類處理。DBSCAN算法是一種基于密度的空間數據聚類,可以發現某一密度條件下任意形狀的聚類[9-10]。
該算法首先會選取一個核心點,通過這個核心進行三維空間的生長,每個簇類都可以由該簇類的任何核心對象唯一確定。通過分析數據分布密度來生成簇類,核心點在一個空間范圍內檢索周圍數據點,小于聚類閾值時,將范圍內點的點歸為該集合當中,當密度大于某一給定的閾值,就把該集合稱為簇類,該簇類即為密度相連的點的最大集合,低密度的數據區一般認為是噪聲。
在該算法中,三維鄰域空間的閾值參數有兩個,一個為空間上的鄰域半徑(eps),該參數使用的是歐式距離。首先選取任意核心點,然后進行核心點的近鄰點遍歷,再進行核心點與任意臨近點之間的距離計算,判斷該距離值是否大于eps值,若該距離值大于eps值,則不屬于同一簇類點,并設置為噪聲點。若該距離值小于eps值,則將該點歸為同一簇類集合中,并再將該點設為核心點,進行相同的遍歷步驟直至無法遍歷到新的核心點,則該集合即為一個簇類,最后遍歷到的同一簇類中的點則為邊界點。另一個參數為鄰域半徑球體內的最小點集數(minpts),當一個簇類中核心點數與邊界點的數量和小于minpts值時,無法達到最小點集的數量要求,則該簇類內的點都將歸為噪聲點。若大于minpts值,則繼續聚類。該算法二維聚類的簡單過程如圖1所示。藍色的為核心點,綠色的為邊界點,黑色的為噪聲點,圓圈的半徑即為eps值的大小。圖中的藍色點與綠色點為同一簇類中的點,黑色點判定為噪聲點后另成一簇。

圖1 二維聚類原理圖
eps與minpts值的選取都有一定的規則限制。當eps值選取過大時,會導致鄰域空間過大,不同類別的點集被錯誤聚類到同一簇類。而eps值選取過小時,則會導致同一類別的點無法聚類到同一簇類中,導致最后簇類集數量龐大。minpts值選取也會有一定的影響,該值設定過小時,則會使部分噪聲點集合歸之非噪聲的簇類之中。而該值選取過大時,則可能導致點集合中點數量較少的簇類無法進行聚類,被過多歸至噪聲點。
解決eps值的取值問題,需要用到k-距離曲線圖,計算所有點與它第k遠的點之間的距離,將結果排序后得到k-距離曲線圖,k值通常設為4,選擇該圖中第一個谷值點位置,該位置對應的k距離值設定為eps值較為合適[11]。
minpts值的選取通常需要設定為大于數據的維度值(dim),minpts≥dim+1時較為合適,也可以根據需求,適當加大。
1.2.1 預處理
根據DBSCAN算法的特點,DBSCAN算法具有一定的去噪效果,不需要再進行點云的去噪。但該算法基于MATLAB平臺進行數據處理時運算量較大,處理速度相對較慢。因此,需要對部分非相關點云進行剔除。除建筑物及與其貼邊相關的點云外,都屬于非目標點云。對該部分點云采用“布料”濾波(cloth simulation filter,CSF)算法進行濾波處理,剔除地面點云,留下非地面點點云。
CSF算法將獲取的機載雷達點云數據進行反轉,由于點云數據包含(x,y,z)3個坐標值,反轉時只需保持x、y不變,將z變為相反數,即將原始點云數據坐標變為(x,y,-z)。通過設置參數,使生成的布粒子在下降過程中,先與地面點接觸,通過分析布節點與相應機載雷達點云的相互作用,確定粒子下降時停留的位置,確定布最后的形狀,實現點云濾波,完成對機載雷達原始點云數據的非地面點提取[12],從而有效剔除點地面點點云,減小數據量。
為了進一步減小數據量與冗余,需要將已剔除大部分非相關點云的數據進行點云的抽稀。按照空間距離抽稀的方法進行等距離的抽稀。該方法是根據設置空間距離閾值進行點云的抽稀,設定兩點之間的距離,將小于該距離的點進行去除。
1.2.2 提取與單體化原理
建筑物點云的提取是基于點云密度聚類方法。采用無人機機載雷達獲得的建筑物點云,其密度遠大于其他非建筑物點云。根據這一特性,采用密度聚類的方法可以較好地提取出建筑物點云數據。
通過DBSCAN算法,設定合適的eps值與minpts值,對預處理后的點云數據進行聚類。聚類后的建筑物點云數據,每一幢樓房都會生成不同的簇類。以不同的顏色來標識每一個簇類,并賦予每一個簇類相應的簇類ID值,通過每幢樓房對應的ID值,可以提取出需要的單幢建筑物點云,即實現建筑物點云的單體化提取。其他地物也會根據其特點進行相應的簇類,而無法聚類的點云數據則會被判定為噪聲。
初步提取建筑物點云后,可以根據三維空間上的歐氏距離值去除噪聲。提取數據后,數據中含有其他地物簇類和建筑物相關點云的簇類。建筑物相關點云的簇類中,部分非建筑物點云與建筑物點云聚類在同一簇內的,這些點云可能為道路點云、停車場點云和樹木點云等非目標點云。由于這些點云與建筑物貼邊或相近,使得這部分點云與建筑物點云錯誤的聚類在一起。根據建筑物點云的墻面的密度特點,將粗略提取出來的建筑物點云進行二維聚類,可以得到明顯的邊界線,但仍然保留三維信息,將邊界線外的點云進行去除,留下邊界內的點云數據,完成點云的分割任務。
點云分割時可能存在少數非目標點云數據被遺漏,或存在樓房挑出部分下方的地面點數據未完全剔除,所以需要進行進一步的優化處理,結合正射影像,通過三維的視角對數據進行檢查,主要是對建筑挑出或遮蓋部分的數據進行剔除,剔除該部分數據后,再進行一次三維的DBSCAN算法聚類,即可得到優化的建筑物點云數據,并賦予每一幢建筑不同的顏色與簇類ID,實現單體化。
從建筑物點云的提取數量誤差、正確率和單體化提取出的建筑物平面邊線長度的精度誤差3個方面進行精度評定。將本文方法提取的建筑物點云與TerraScan軟件所提取出的點云數量與正確率進行比較,以人工提取的建筑物點云作為參考。再將單體化提取的建筑物輪廓邊線長度與實測數據進行比較,根據兩者誤差進行精度評定。
將DBSCAN算法與正射影像組合使用,提取出目標區域建筑的點云。首先使用CloudCompare軟件的布料濾波算法,對原始點云數據進行預處理。其次,使用DBSCAN算法對預處理點云進行去噪與建筑物點云的三維聚類,將建筑物點云進行初步提取。再對初步提取的建筑物點云進行二維聚類,根據建筑物點云的密度特點,將點云與正射影像相結合,進行建筑物與其他地物的點云分割,最后再進行一次三維的密度聚類,優化出最終的建筑物點云,具體流程如圖2所示。

圖2 處理流程圖
實驗數據采用的是桂林理工大學博士生公寓的點云數據,使用CloudCompare軟件進行預處理。采用CSF算法進行地面點的剔除,采用空間抽稀法進行點云的抽稀,空間中兩點的距離為1 m,預處理后的點云數據如圖3所示。可以看出,數據中存在大量非建筑物點云,在后續處理中,需要進行去除。

圖3 預處理后的點云圖
基于MATLAB平臺,對預處理后的數據進行初步提取。將eps值按照k距離圖肘部值進行選取,如圖4所示。

圖4 k距離曲線圖
根據k-距離曲線圖可得,eps值選取為1.3~1.4 m最佳。將minpts值設定為4,eps值選取為1.3、1.35和1.4 m 3個值,進行數據測試后可得到各個eps值的聚類結果,將3個聚類結果進行對比,如圖5所示。

圖5 初步聚類
在圖5中,除建筑物點云簇類與噪聲點外,均歸至其他地物簇類。從運行結果圖與簇類數量比較得出,當eps=1.3 m時,噪聲點數量較多,簇類數量為107個,數量較多,聚類效果欠佳;當eps=1.35 m時,噪聲點數量正常,簇類數量為86個簇類,僅有少部分非建筑物點云歸至建筑物點云;當eps=1.4 m,噪聲點較少,但其聚類過度,簇類數量為77個,使許多非建筑物點云數據與建筑物點云歸為同一簇。將該結果的噪聲點去除,導出簇類結果。
將初步提取的點云數據進行二維聚類,去除非相關點。在該步驟中,建筑物點云降維后數據密集程度會遠高于其他非建筑地物,將eps參數設置為約等于抽稀間距,可以更好地將非建筑物點云與建筑物點云進行分割,在該步驟中根據k距離曲線,eps值設定為1.05 m。導出范圍線簇類與范圍線內的簇類,剩余簇類全部剔除。通過該步驟可以去除掉大量非建筑物點云,二維聚類部分結果如圖6所示。
將二維聚類的結果與已制作完成的文檔對象模型(document object model,DOM)進行融合處理與分析。正射影像據有很強的直觀性,將兩者進行疊加分析,檢查范圍線與正射影像重合情況,并結合二維聚類結果,去除與范圍線簇類錯誤聚類的非建筑物點云。則范圍線內的即基本為建筑物點云,處理結果如圖7所示。
將分割后的點云數據再次使用DBSCAN算法進行三維聚類與單體化處理,對聚類結果進行優化,除去極少數點云分割時未處理完全的非建筑點云數據。采用與初步提取相同的參數,eps值設定為1.35 m,則可得到最后的建筑物點云。每一幢建筑物的點云簇類都有特定的簇類ID,根據需求,按照相應的簇類ID導出,即可實現建筑物點云單體化,整體優化結果如圖8所示。根據1#樓房的簇類號,提取出其單體化點云數據,處理前后的效果如圖9所示。

圖8 優化處理結果

圖9 單體化成果
將提取結果與TerraSolid軟件提取的建筑物點云數據結果進行數量與正確率的比較,提取1#建筑物單體數據的各邊長值與實際測量得到的邊長值進行比較進行定量的分析。TerraScan提取出的建筑物點云如圖10所示。

圖10 TerraSolid提取結果
從TerraSolid所提取出的結果看,該軟件提取出的建筑物點云底部點云缺失較多,但其建筑物上半部分的提取效果較好。
以人工提取出的建筑物點云作為參考,進行兩種提取方法的對比分析。人工提取出的建筑物點云數量共12 598個。兩種提取方法的獲取點云數量與正確率如表1所示。
由表1可知,Terrascan軟件建筑物點云提取的正確率為56.52%,而采用本文方法提取的正確率為97.36%。由此可得,本文方法總體分類精度高于采用Terrascan 分類方法。

表1 數量正確率比較
將1#建筑物點云單體化提取出的建筑物輪廓邊界與實際測量得到的數值進行比較,如表2所示。

表2 邊長比較
由表2可知,通過本文方法提取,每幢建筑物邊長值最大誤差為0.17 m,平均絕對誤差為0.055 m,中誤差為0.077 m。說明本文方法對建筑群的點云提取與建筑物點云單體化提取結果均能滿足相關規范要求。
針對機載激光雷達建筑物點云提取過程中自動化提取困難,以及提取后的建筑物點云單體化過程煩瑣等問題,利用DBSCAN算法進行提取與單體化,結論如下。
(1)使用DBSCAN算法與正射影像的組合使用,可以有效地對建筑物點云與其他地物點云進行分割。
(2)利用本文方法,提取出的點云正確率可以達到97.36%,建筑物平面邊界長度精度可以達到厘米級。
(3)利用本文方法對建筑物點云進行提取與單體化,使建筑物點云數據的提取處理效率提高,使提取與單體化過程更加快速與簡便,并得到符合規范的數據成果。
由于該提取方法中點云的聚類與點云的分割與實際無人機采集數據的精度有關,且點云數據量較大,數據處理需要一定的設備要求。因此,提高提取精度則必須要提高無人機的數據采集精度或采用更好數據處理設備。另外,該算法是基于密度的聚類方法,無人機所采集的點云數據在建筑物密集程度較大的區域,每幢建筑相鄰墻面的點云數據密度大小不夠,在該部分單體化提取效果可能會相比于墻面間距稍大的建筑群的點云數據提取效果稍差。在后續的研究中,將對此進行下一步的改進。