郝耀庭,楊 保,張鵬飛,王麗媛
(1.河南理工大學(xué) 測繪與國土信息工程學(xué)院,河南 焦作 454000;2.河南四維遠(yuǎn)見信息技術(shù)有限公司,河南 鄭州 450000)
點云分割是在二維圖像分割受到局限的情況下,研究者將數(shù)據(jù)維度從二維提升到三維,從根本上解決二維圖像在空間位置上的局限性。在二維圖像分割中,國內(nèi)外許多研究者都提出了用于深度學(xué)習(xí)的算法[1],點云分割與分類模型的效果也與訓(xùn)練樣本的質(zhì)量息息相關(guān),在Wang[2]等人提出的DGCNN網(wǎng)絡(luò)模型中,設(shè)計了一個用于提取中心點的特征以及此點與鄰域點的邊緣向量的邊緣卷積操作,在這部分操作中,點云的稠密程度影響較大,總體的分割效果與點云的點數(shù)呈現(xiàn)線性關(guān)系,點云點數(shù)越多,分割效果越好。點云數(shù)據(jù)密度較大時,會存在大量的數(shù)據(jù)冗余,造成計算量大、效率低、顯示不便等一系列問題,由此陳佩奇等[3]針對城區(qū)LiDAR點云數(shù)據(jù)提出了自適應(yīng)采樣的抽稀算法。對于稀疏點云的插值,康帥[4]以冷龍嶺斷裂上一處典型地貌點云為例,對比了最鄰近法、距離反比法、不規(guī)則三角網(wǎng)法、樣條函數(shù)法、克里金法等5種插值方法,實驗結(jié)果表明:不規(guī)則三角網(wǎng)插值法結(jié)果最優(yōu),可以較好地還原野外真實場景。
對于室外復(fù)雜場景,先對點云進(jìn)行濾波處理分為地面點和非地面點,再對兩部分點云進(jìn)行分別插值。點云濾波是LiDAR點云數(shù)據(jù)處理過程中的重要環(huán)節(jié)之一,常用于點云去噪、分離地面點與非地面點等。傳統(tǒng)的常見點云濾波方法一般有直通濾波、體素濾波、統(tǒng)計濾波、條件濾波、半徑濾波。直通濾波是對具有一定空間分布特征的點云數(shù)據(jù)進(jìn)行處理,適用于處理x、y方向具有一定范圍但z方向分布較廣的這類點云的離群點。體素濾波通過體素網(wǎng)格去除噪音點以及離群點,可對點云進(jìn)行降采樣,同時可以使點云本身的幾何結(jié)構(gòu)不被破壞。統(tǒng)計濾波是定義某一部分區(qū)域的點云密度閾值,小于閾值的部分點云無效。條件濾波即設(shè)定一個或多個條件對點云進(jìn)行過濾,符合設(shè)定的條件即保留。半徑濾波與統(tǒng)計濾波類似,同樣是區(qū)域性的濾波,但是濾波方式有差別,是以某點為中心畫一個圓并計算落在該圓中的數(shù)量,當(dāng)數(shù)量大于閾值的時候保留該點,小于閾值則剔除該點,圓的半徑與閾值均要人工指定。目前,國內(nèi)外研究者提出了大量的點云濾波算法,基本分為基于形態(tài)學(xué)的濾波算法[5-6]、自適應(yīng)不規(guī)則三角網(wǎng)濾波[7]、基于多尺度濾波。
2003年,張建忠[8]等人通過對布匹動力學(xué)的物理模型簡化,提出了一種快速有效的布模擬算法(Cloth Simulation Filtering,CSF),其可以模擬布料在真實場景中的狀態(tài)。2016年,張吳明[9]等人將布模擬算法的思想應(yīng)用于點云濾波中。應(yīng)用于機(jī)載LiDAR點云的布模擬點云濾波算法的主要原理是將點云反轉(zhuǎn)之后,設(shè)定格網(wǎng)分辨率和迭代次數(shù),生成一個該分辨率下迭代多次的彈性格網(wǎng)來模擬布匹落在地面上的狀態(tài),再設(shè)定一個閾值,通過點云與彈性格網(wǎng)的歐式距離來分離地面點與非地面點,見圖1、圖2。
布模擬算法包含3個參數(shù),分別為格網(wǎng)分辨率、迭代次數(shù)、分類閾值。格網(wǎng)分辨率是指覆蓋地形的格網(wǎng)大小,設(shè)置的分辨率越大,模擬的彈性格網(wǎng)越粗糙。迭代次數(shù)是指地形模擬的最大迭代次數(shù)。分類閾值是根據(jù)點與地形模擬彈性格網(wǎng)的距離,將點云分為地面點與非地面點兩部分的閾值。
已知三角形的3個頂點坐標(biāo)P1、P2、P3,三角形內(nèi)部一點P與3個頂點連線將三角形分為3個面積分別為V1、V2、V3的小三角形,大三角形面積為V,如圖3所示。
P點坐標(biāo)P=u×P1+v×P2+w×P3,其中,u=V1/V,v=V2/V,w=V3/V,u+v+w=1,由此可以得出三角形內(nèi)任意一點的坐標(biāo)。
由于大面積三角形需要的插值點過多,所以總體采用隨機(jī)插值的方法,先在(0,1)范圍內(nèi)隨機(jī)得到兩個數(shù)字c,d,則令
u=min(c,d)
(1)
v=|c-d|
(2)
w=1-max(c,d) (3)
這樣的隨機(jī)取值方法可以確保在對大面積三角形進(jìn)行插值的時候不會出現(xiàn)插值點聚集在一起的現(xiàn)象,使插值結(jié)果更加均勻。
操作系統(tǒng):Windows10;軟件環(huán)境:Python3.5;點云顯示軟件:CloudCompare;點云數(shù)據(jù):ModelNet10數(shù)據(jù)集,鄭州市高新技術(shù)開發(fā)區(qū)一處機(jī)載LiDAR實測點云。
論文中所使用的模型點云數(shù)據(jù)為ModelNet10點云數(shù)據(jù)集,該數(shù)據(jù)集共有662種目標(biāo)分類,127 915個CAD模型以及10類標(biāo)記過方向的數(shù)據(jù)。點云數(shù)據(jù)為off格式,包含點數(shù)量、面數(shù)量、邊數(shù)量、點信息、面信息。室外點云數(shù)據(jù)使用鄭州市高新技術(shù)開發(fā)區(qū)一塊實測點云,點云數(shù)據(jù)為las格式。
原始點云數(shù)據(jù)包含13 147 331個點,點云密度較大,如圖4所示。對點云進(jìn)行隨機(jī)降采樣,降采樣后生成的點云包含893 871個點,使用降采樣后的點云作為實驗對象,如圖5所示。
圖4 原始點云
圖5 降采樣后的稀疏點云
ModelNet10數(shù)據(jù)集的點云數(shù)據(jù)格式為off格式,包含了a個點信息和b個面信息。首先,讀取點云數(shù)據(jù),每一條點信息都包含了該點的x、y、z坐標(biāo),每一條面信息都包含了面的邊數(shù)以及各個頂點的點號,點號從0開始,到最后一個點結(jié)束。利用三角網(wǎng)中三角面的權(quán)重來確定增加的點數(shù),先計算三角形的邊長l1、l2、l3,點P1與P2之間的距離D采用歐式距離,公式為:
(4)
再用海倫公式計算面積,公式為:
(5)
(6)
其中,S為面積,p為半周長。
第i個三角形插值點的數(shù)量通過當(dāng)前三角形的面積Si與三角網(wǎng)總面積的比值n來確定,公式為:
(7)
由于ModelNet10數(shù)據(jù)提取的三角網(wǎng)存在兩邊較長一邊較短的三角形,為了保證這類細(xì)長型三角網(wǎng)的插值,通過判定周長總和與最短邊長比m,
(8)
對于室外點云數(shù)據(jù)先對其進(jìn)行布模擬濾波處理,對點云進(jìn)行多層次不同分類閾值的布模擬濾波并進(jìn)行整合,解決單次固定分類閾值下的濾波導(dǎo)致的部分分類錯誤問題。
2.4.1 ModelNet10數(shù)據(jù)插值
對一個椅子的點云進(jìn)行插值,由于點云數(shù)據(jù)直接包含了三角網(wǎng)的面狀屬性信息,直接將數(shù)據(jù)分為點云數(shù)據(jù)和三角網(wǎng)模型,再對三角網(wǎng)進(jìn)行插值。
通過對比插值前后的點云,當(dāng)k=1時,點數(shù)從2 382增加到6 050個,當(dāng)k=2時,點數(shù)從2 382增加到8 581個,如圖6所示。通過視覺上直觀的對比,k=1時,點云插值的結(jié)果已經(jīng)非常理想,足夠作為深度學(xué)習(xí)網(wǎng)絡(luò)模型來進(jìn)行訓(xùn)練學(xué)習(xí)的樣本。
圖6 插值前后點云以及三角網(wǎng)
2.4.2 室外實測點云插值
對鄭州市高新技術(shù)開發(fā)區(qū)一處機(jī)載LiDAR實測點云進(jìn)行實驗,實驗數(shù)據(jù)與ModeNet10數(shù)據(jù)集不同,為las格式數(shù)據(jù),先對las數(shù)據(jù)進(jìn)行解析提取點云的點信息,進(jìn)行隨機(jī)降采樣之后對點云進(jìn)行布模擬濾波處理來分離地面點和非地面點。格網(wǎng)分辨率設(shè)置為0.5,迭代次數(shù)為500,進(jìn)行單次濾波作為對比,將分類閾值分別設(shè)置為0.5~3.5,以0.5為間隔的分類閾值進(jìn)行布模擬濾波,濾波后地面點和非地面點的點數(shù)見表1。
表1 單次不同分類閾值下濾波結(jié)果
分類閾值為0.5、2.0、3.5時的濾波結(jié)果分別見圖7、圖8、圖9。由表1可以看出,隨著分類閾值的增加,地面點數(shù)的增速呈遞減趨勢。分類閾值為0.5時,很大一部分地面點都被錯誤分類到非地面點。分類閾值為2.0時大部分地面點都正確分類到地面點,只有一小部分依然被錯誤分類。分類閾值為3.5時,更多的矮建筑物被分類到地面點。所以,選取分類閾值為2.0時的濾波結(jié)果進(jìn)行下一步的插值。
圖7 分類閾值為0.5時的分類結(jié)果
圖8 分類閾值為2.0時的分類結(jié)果
圖9 分類閾值為3.5時的分類結(jié)果
對首次濾波的結(jié)果(見圖10)再次進(jìn)行更大分類閾值下的濾波,對地面點與非地面點分別進(jìn)行更高分類閾值的濾波之后并整合,結(jié)果如圖11所示,兩種方法的分類結(jié)果對比見表2。
圖10 單次固定分類閾值的分類結(jié)果
圖11 多次不同分類閾值整合的分類結(jié)果
表2 不同方法結(jié)果對比
與單次單分類閾值情況下的濾波相比,多次不用分類閾值整合的分類結(jié)果更加精確。單次濾波的分類結(jié)果中有部分矮建筑被錯誤分類到地面點,也有部分街道上的點云被分類到非地面點,使用多次不同分類閾值并進(jìn)行整合的方法可以很大程度地降低類似的分類錯誤,提高分類精度,準(zhǔn)確性更好。對最終分離的地面點和非地面點分別生成三角網(wǎng),再對三角網(wǎng)進(jìn)行插值,插值結(jié)果如圖12所示。
圖12 插值后的地面點與非地面點
通過插值前后對比,地面點由617 391個增加為1 019 494個,非地面點由276 480個增加為536 911個,插值效果理想。在保證增加了點云細(xì)節(jié)的情況下,不使深度學(xué)習(xí)模型對點云進(jìn)行分割分類的計算量過于巨大。
論文設(shè)計實現(xiàn)了一種基于布模擬算法和三角形內(nèi)部線性插值的快速高效點云插值方法。利用三角網(wǎng)中三角形面積權(quán)重與三角形邊長總和與最短邊的比值來確定插值點數(shù)量,并在三角形面內(nèi)進(jìn)行隨機(jī)均勻線性插值,在ModelNet10數(shù)據(jù)集上插值效果理想。對于室外場景,插值效果受點云濾波處理的影響,布模擬算法可以很好地貼合地面點,但單次固定分類閾值下的分類會導(dǎo)致有一部分高度比較低的地物和面積比較大的矮建筑被分類到地面點,造成分離錯誤。論文提出的方法通過對室外點云進(jìn)行多次不同分類閾值濾波,整合所得到的分類結(jié)果很大程度地降低了單次固定濾波造成的分類錯誤,只有極少部分的地物分類錯誤。地物點的顏色信息一般與地面點有一定差異,可以從這個角度出發(fā)對布模擬算法做進(jìn)一步的研究和改進(jìn)。