韓松魁,于正林
(長(zhǎng)春理工大學(xué) 機(jī)電工程學(xué)院,長(zhǎng)春 130022)
車載激光雷達(dá)系統(tǒng)在通過激光掃描儀采集過數(shù)據(jù)之后,將數(shù)據(jù)存儲(chǔ)為L(zhǎng)AS 格式或ASCII 格式[1]。LAS 已成為雷達(dá)數(shù)據(jù)的標(biāo)準(zhǔn)工業(yè)格式,提供一種開放式的可與不同商業(yè)硬件軟件交互輸出的一種格式標(biāo)準(zhǔn),但存儲(chǔ)較為復(fù)雜。ASCII 格式前置部分為文件頭,提供輔助信息,后置部分記錄點(diǎn)的三維坐標(biāo)和強(qiáng)度值等。由于存在遮擋以及車載激光點(diǎn)云自身的特性,直接對(duì)車載激光雷達(dá)點(diǎn)云進(jìn)行點(diǎn)云分類、點(diǎn)云分割、點(diǎn)云可視化、三維重建等顯然是不可能且不合理的,因此在完成后續(xù)點(diǎn)云高階操作時(shí)應(yīng)先進(jìn)行點(diǎn)云數(shù)據(jù)的預(yù)處理工作[2]。車載激光雷達(dá)點(diǎn)云數(shù)據(jù)的預(yù)處理包含激光雷達(dá)點(diǎn)云數(shù)據(jù)降采樣、點(diǎn)云除噪、點(diǎn)云數(shù)據(jù)濾波以及點(diǎn)云配準(zhǔn)等[3]。車載激光雷達(dá)點(diǎn)云數(shù)據(jù)的預(yù)處理是完成后續(xù)復(fù)雜點(diǎn)云操作的基礎(chǔ)。基于車載激光雷達(dá)點(diǎn)云的街區(qū)分布特點(diǎn)以及車載激光雷達(dá)點(diǎn)云的特性,將基于機(jī)載激光雷達(dá)數(shù)據(jù)的布料模擬濾波方法應(yīng)用在車載激光雷達(dá)數(shù)據(jù)中,并與數(shù)字形態(tài)學(xué)和坡度值濾波算法進(jìn)行對(duì)比和誤差分析,來驗(yàn)證此想法的優(yōu)越性,最終使街道、樹木、指示牌等點(diǎn)云信息與地面更好的分離。
由于車載激光雷達(dá)系統(tǒng)獲取的點(diǎn)云數(shù)據(jù)十分龐大,且信息點(diǎn)十分密集,不利于點(diǎn)云數(shù)據(jù)的存儲(chǔ)和處理,為了使對(duì)點(diǎn)云數(shù)據(jù)處理更便捷,就需要對(duì)這些點(diǎn)云數(shù)據(jù)進(jìn)行降采樣也稱“下采樣”[4]。點(diǎn)云降采樣是在降低點(diǎn)云數(shù)據(jù)規(guī)模的同時(shí)又不丟點(diǎn)云數(shù)據(jù)的特征信息。點(diǎn)云降采樣通常采用體素下采樣、隨機(jī)下采樣和均勻下采樣等。體素下采樣是對(duì)原始點(diǎn)云數(shù)據(jù)創(chuàng)建一個(gè)三維的體素柵格,把點(diǎn)云裝進(jìn)體素網(wǎng)格內(nèi),通過每個(gè)網(wǎng)格內(nèi)代表點(diǎn)的選取也出現(xiàn)了不同的體素下采樣方法。圖1 為原始樹木點(diǎn)云數(shù)據(jù),對(duì)原始點(diǎn)云數(shù)據(jù)進(jìn)行降采樣處理,圖2 為體素下采樣,圖3為隨機(jī)下采樣,很明顯減少了原始點(diǎn)云數(shù)量,但點(diǎn)云分布不均是隨機(jī)下采樣的缺點(diǎn),圖4 為均勻下采樣,彌補(bǔ)了分布不均的情況,也極大地保留了原始點(diǎn)云的特征信息。

圖1 原始點(diǎn)云

圖2 體素下采樣點(diǎn)云

圖3 隨機(jī)下采樣點(diǎn)云

圖4 均勻下采樣點(diǎn)云
由于受到數(shù)據(jù)采集平臺(tái)、周圍環(huán)境和被測(cè)物體表面性質(zhì)等因素的影響,點(diǎn)云模型中的點(diǎn)不可避免的存在噪聲。而車載激光雷達(dá)數(shù)據(jù)采集過程中由于車的運(yùn)動(dòng)、視野遮擋和障礙物等因素的影響會(huì)使點(diǎn)云模型中不可避免的存在離群點(diǎn)。而這些噪聲點(diǎn)和離群點(diǎn)會(huì)嚴(yán)重影響點(diǎn)云的局部特征計(jì)算精度,從而影響后續(xù)點(diǎn)云配準(zhǔn)、點(diǎn)云分割、點(diǎn)云特征提取和三維重建等點(diǎn)云處理操作[5]。因此需要對(duì)噪聲點(diǎn)和離群點(diǎn)進(jìn)行剔除,常見的去噪操作主要由Statistical Outlier Removal濾波器和Radius Outlier Removal 濾波器等實(shí)現(xiàn)。
Statistical Outlier Removal 濾波器主要用于剔除離群點(diǎn)。激光掃描過程中通常會(huì)產(chǎn)生密度分布不均的點(diǎn)云,測(cè)量過程中由于誤差也可能產(chǎn)生稀疏的離群點(diǎn)。Statistical Outlier Removal 濾波器的本質(zhì)是通過統(tǒng)計(jì)輸入點(diǎn)云區(qū)域內(nèi)點(diǎn)的分布密度來判定是否屬于離群點(diǎn)。如果某區(qū)域內(nèi)的點(diǎn)云密度小于一定的密度閾值,則被判定為離群點(diǎn),將其剔除。Radius Outlier Removal 濾波器主要是以半徑為判別依據(jù),能夠剔除一些沒有達(dá)到足夠鄰域點(diǎn)數(shù)量的點(diǎn)云。設(shè)置鄰域點(diǎn)閾值為M,依次以當(dāng)前點(diǎn)為中心,構(gòu)建D為點(diǎn)云半徑的球體。通過設(shè)置半徑D和鄰域點(diǎn)閾值M,計(jì)算當(dāng)前球體中點(diǎn)的數(shù)量,數(shù)量小于M則將此點(diǎn)剔除,數(shù)量大于等于M則將此點(diǎn)保留。此算法比Statistical Outlier Removal 算法更為便捷,但需要手動(dòng)輸入半徑D以及鄰域點(diǎn)閾值M。
由于車載激光雷達(dá)系統(tǒng)起步略晚于機(jī)載激光雷達(dá)系統(tǒng),因此機(jī)載激光雷達(dá)點(diǎn)云數(shù)據(jù)濾波的研究也以機(jī)載激光雷達(dá)點(diǎn)云濾波為參考。三維點(diǎn)云數(shù)據(jù)的濾波操作與二維圖像數(shù)據(jù)濾波不同,二維圖像的濾波是消除圖像中的噪聲與提取邊緣特征信息。機(jī)載點(diǎn)云數(shù)據(jù)濾波是通過濾波操作區(qū)分出地面點(diǎn)和非地面點(diǎn)。車載激光雷達(dá)點(diǎn)云數(shù)據(jù)由于車載激光雷達(dá)掃描儀的特性,點(diǎn)云密度會(huì)比機(jī)載高很多。而由于掃描方式以及掃描角度等因素,車載激光雷達(dá)點(diǎn)云數(shù)據(jù)濾波在機(jī)載點(diǎn)云濾波的基礎(chǔ)上,應(yīng)完成地面點(diǎn)云、建筑物立面點(diǎn)云和其他地物點(diǎn)云的區(qū)分操作。目前常用的濾波算法有基于形態(tài)學(xué)的濾波算法、基于坡度值的濾波算法、基于不規(guī)則三角網(wǎng)的濾波算法、基于移動(dòng)曲面濾波算法、基于分割段濾波算法、基于掃描線濾波算法和基于布料模擬(CSF)點(diǎn)云濾波算法等[6-7]。本文在基于車載激光雷達(dá)街景點(diǎn)云分布特點(diǎn)的基礎(chǔ)上,提出將機(jī)載點(diǎn)云布料模擬濾波算法應(yīng)用在街景場(chǎng)景下,對(duì)其他地物和地面點(diǎn)云進(jìn)行分類,并與基于坡度值的濾波算法相對(duì)比,驗(yàn)證此想法的合理性。
1.3.1 數(shù)字形態(tài)學(xué)濾波
數(shù)字形態(tài)學(xué)算法其中涉及膨脹和腐蝕操作、閉合運(yùn)算與開運(yùn)算。前兩種操作主要是為了對(duì)圖形中指定物體進(jìn)行大小和尺寸的編輯。腐蝕操作和膨脹操作是用來控制指定區(qū)域內(nèi)的像素灰度的最小和最大數(shù)值。這兩種操作大致可以分為閉運(yùn)算和開運(yùn)算兩種運(yùn)算,閉運(yùn)算是先膨脹操作,再腐蝕操作,開運(yùn)算與之相反。數(shù)字形態(tài)學(xué)點(diǎn)云濾波的核心是設(shè)定窗口的大小與尺寸,若窗口尺寸設(shè)定過小,則會(huì)導(dǎo)致大部分地面以及尺寸較大的地物或建筑物被當(dāng)做地面點(diǎn)保留,如果窗口尺寸設(shè)置過大則會(huì)導(dǎo)致大量地面點(diǎn)被當(dāng)做非地面進(jìn)行過濾,從而導(dǎo)致地面點(diǎn)云數(shù)據(jù)缺失,因此窗口大小的設(shè)置對(duì)數(shù)字形態(tài)學(xué)濾波算法至關(guān)重要,該算法的過程為:
(1)建立最低點(diǎn)。對(duì)整體點(diǎn)云數(shù)據(jù)進(jìn)行分析與處理,構(gòu)建一個(gè)規(guī)則化的格網(wǎng),并選取每個(gè)格網(wǎng)中數(shù)據(jù)的最低點(diǎn),建立為地面點(diǎn)。
(2)腐蝕運(yùn)算。選取一個(gè)點(diǎn)作為濾波的中心點(diǎn),提取窗口內(nèi)高程值最小的數(shù)值為腐蝕后的數(shù)值。
(3)膨脹運(yùn)算。將每一個(gè)規(guī)則化的格網(wǎng)遍歷,重復(fù)步驟(1)~步驟(2)兩個(gè)過程,膨脹后的數(shù)值就是窗口內(nèi)高程值最高的數(shù)值。
(4)分離操作。進(jìn)行開運(yùn)算,將開運(yùn)算后結(jié)果的高程值與運(yùn)算前的高程值相對(duì)比,若高于此閾值,則判定為非地面點(diǎn),改變窗口尺寸與大小,直至遍歷所有點(diǎn)云。
1.3.2 坡度值濾波
基于坡度值的點(diǎn)云濾波,用坡度差值信息將非地面點(diǎn)和地面點(diǎn)加以區(qū)分[8]。隨后在2001 年,Sithole[9]對(duì)基于坡度值濾波加以改進(jìn),提出一種自適應(yīng)坡度濾波計(jì)算方法。在此前提出理論的基礎(chǔ)上,Sithole 等人[10]于2005 年提出了基于掃描線來計(jì)算坡度和斜率的方法,為學(xué)者們研究坡度濾波算法提供了強(qiáng)大的理論基礎(chǔ)。
基于坡度值的點(diǎn)云濾波算法是通過計(jì)算坡度差值來分離地面點(diǎn)和非地面點(diǎn),從而為地物點(diǎn)云提取奠定基礎(chǔ)。該算法的關(guān)鍵在于利用坡度之間的差值來檢測(cè)掃描線剖面內(nèi)的相鄰點(diǎn)間分布關(guān)系。起始點(diǎn)為每條掃描線上左起第一個(gè)點(diǎn),依次對(duì)掃描線內(nèi)所有點(diǎn)進(jìn)行處理,將掃描線分割為許多小線段。相鄰兩點(diǎn)組成的小線段坡度值μ的計(jì)算公式為:

其中:
式中,(Xn,Yn,Zn)和(Xn-1,Yn-1,Zn-1)為相鄰兩點(diǎn)的三維坐標(biāo),因此可得出相鄰兩點(diǎn)坡度值的公式為:
通過上述公式即可求出兩點(diǎn)間的坡度值,因此對(duì)原始點(diǎn)云進(jìn)行坡度值濾波操作時(shí),還需根據(jù)不同的地形特征選擇不同鄰域大小與坡度閾值,來分離出地面與非地面點(diǎn)。對(duì)于坡度閾值較大的地形應(yīng)設(shè)置較小的鄰域尺度和較大的坡度閾值,對(duì)于地形變化較為平緩的區(qū)域應(yīng)設(shè)置較小的坡度和較大的鄰域,在保證其余參數(shù)不變的情況下實(shí)現(xiàn)坡度閾值和鄰域尺度自適應(yīng)的坡度濾波將會(huì)有效地提高坡度濾波的準(zhǔn)確度。
1.3.3 布料模擬濾波
傳統(tǒng)濾波算法大多以點(diǎn)云高程值以及坡度等因素來對(duì)地面點(diǎn)云數(shù)據(jù)與非地面點(diǎn)云數(shù)據(jù)加以區(qū)分,而基于布料模擬點(diǎn)云濾波算法(Cloth Simulation Filtering,CSF)則是以一個(gè)全新的角度來對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行濾波[11]。該算法采用3D 計(jì)算機(jī)中的布料圖形模擬算法,為一種簡(jiǎn)單的模擬物理過程。將一塊布料放在一個(gè)地形上面,然后這塊布由于重力的作用開始下降,假設(shè)該布料足夠柔軟可以貼附在地形表面上,最終成型的布料將被制作成數(shù)字表面模型(Digital Surface Model,DSM),如果先將地形顛倒,并定義布料的剛度,那么最終的布料形狀就是數(shù)字地面模型。圖5 為基于布料模擬濾波過程圖,下方藍(lán)色圖形為原始測(cè)量值,對(duì)其進(jìn)行翻轉(zhuǎn),上方為翻轉(zhuǎn)后的點(diǎn)云,紅色的虛線代表布料,可以反映地形的起伏情況。

圖5 布料模擬濾波算法模擬圖
布料模擬算法是計(jì)算機(jī)圖形學(xué)中的一個(gè)方向,在進(jìn)行模擬過程中可參考Mass-Spring 模型去解決和分析問題。將布料分割為具有相同大小且質(zhì)量相等的質(zhì)點(diǎn),質(zhì)點(diǎn)間的連線組成了粒子格網(wǎng),每個(gè)質(zhì)點(diǎn)都可以儲(chǔ)存位置信息、速度信息和力等信息,該格網(wǎng)模型如圖6 所示。網(wǎng)格上每個(gè)點(diǎn)沒有大小,但被指定為恒定質(zhì)量,質(zhì)點(diǎn)之間的連線被稱為“虛擬彈簧”,粒子在三維空間中的位置確定了布料的位置和形狀。質(zhì)點(diǎn)之間的運(yùn)動(dòng)遵循牛頓第二定律,位置和力之間的關(guān)系如下:

圖6 格網(wǎng)模型圖
式中,X為粒子在時(shí)間為t時(shí)的位置;Fext(X,t)代表外力,由質(zhì)子運(yùn)動(dòng)方向上受到障礙物產(chǎn)生的碰撞力和重力決定;Fint(X,t)代表粒子在X位置且時(shí)間為t時(shí)內(nèi)聯(lián)產(chǎn)生的內(nèi)力。由于隨著時(shí)間的變化,內(nèi)力與外力均發(fā)生改變,所以對(duì)其進(jìn)行數(shù)值積分來實(shí)現(xiàn)傳統(tǒng)的布料模擬。
為將布料模擬算法應(yīng)用在點(diǎn)云數(shù)據(jù)濾波中,對(duì)傳統(tǒng)布料模擬算法進(jìn)行了一些修改。首先將粒子的運(yùn)動(dòng)方向定為垂直方向,因此可以通過粒子和地形的高度值相比較來實(shí)現(xiàn)碰撞檢測(cè)。然后當(dāng)粒子落在地面時(shí),即“正確位置”,則設(shè)置此粒子為不可移動(dòng)粒子。具體過程如圖7 所示,圖7(a)為初始狀態(tài),假設(shè)布料放在已翻轉(zhuǎn)點(diǎn)云上方,黑色點(diǎn)為翻轉(zhuǎn)后點(diǎn)云待測(cè)表面,紅色點(diǎn)為可移動(dòng)粒子;圖7(b)為過程中計(jì)算重力影響下粒子所發(fā)生的位移,所以粒子可能會(huì)出現(xiàn)在黑色點(diǎn)下方,粉色點(diǎn)代表可移動(dòng)粒子的舊位置;圖7(c)過程檢查可移動(dòng)粒子是否到達(dá)地面點(diǎn)位置,若到達(dá)則設(shè)置為不可移動(dòng)粒子,用黃色粒子表示;圖7(d)過程考慮到內(nèi)部驅(qū)動(dòng)力的作用,對(duì)現(xiàn)有可移動(dòng)粒子根據(jù)臨近粒子間的力來產(chǎn)生新的位移。

圖7 布料模擬濾波算法流程圖
綜上所述,布料模擬濾波算法的主要步驟為:
(1)使用一些第三方軟件(如cloudcompare)自動(dòng)或手動(dòng)處理離群值。
(2)將原始車載激光雷達(dá)點(diǎn)云數(shù)據(jù)進(jìn)行反轉(zhuǎn)。
(3)初始化網(wǎng)格。根據(jù)定義的網(wǎng)格分辨率確定粒子數(shù),布的初始位置通常設(shè)置在最高點(diǎn)的上方。
(4)將所有的點(diǎn)和網(wǎng)格粒子投影到同一個(gè)水平面上,并在這個(gè)平面上找到每個(gè)網(wǎng)格粒子的對(duì)應(yīng)點(diǎn),記為“CP”。然后記錄投影前的高度,記為“IHV”。
(5)對(duì)于每個(gè)網(wǎng)格粒子,計(jì)算該粒子受重力影響移動(dòng)時(shí)的位置,并將該高度與IHV 進(jìn)行比較。如果粒子高度小于或等于IHV,則將該粒子放置在IHV 高度處,設(shè)置為“不可移動(dòng)”。
(6)對(duì)于每個(gè)網(wǎng)格質(zhì)點(diǎn),計(jì)算受內(nèi)力影響的位移。
(7)重復(fù)步驟(5)~步驟(6),直至所有粒子的最大高度變化足夠小或超過指定的迭代次數(shù)時(shí),停止模擬操作。
(8)計(jì)算激光雷達(dá)點(diǎn)云與格網(wǎng)粒子間的高度差異。
(9)區(qū)分地面點(diǎn)與非地面點(diǎn)。如果激光雷達(dá)點(diǎn)云與模擬粒子間的距離小于或等于預(yù)先設(shè)置的閾值時(shí),則將此類點(diǎn)歸為地面點(diǎn)。如果大于預(yù)先設(shè)定的閾值,則將此類點(diǎn)判定為非地面點(diǎn)。
由于布料模擬算法是基于機(jī)載激光雷達(dá)數(shù)據(jù)對(duì)建筑物頂面以及地面點(diǎn)濾波操作的,雖對(duì)建筑物立面點(diǎn)云與地面點(diǎn)云濾波操作處理不是很理想,但對(duì)于地面與非建筑物的其他地物等進(jìn)行布料模擬濾波操作效果十分顯著。
基于以上算法的原理,現(xiàn)對(duì)原始車載激光雷達(dá)點(diǎn)云數(shù)據(jù)(圖8)進(jìn)行濾波實(shí)驗(yàn),圖9、圖10 和圖11 分別為基于形態(tài)學(xué)點(diǎn)云濾波、基于坡度值濾波和基于布料模擬點(diǎn)云數(shù)據(jù)濾波結(jié)果。

圖8 截取后街景點(diǎn)云

圖9 基于形態(tài)學(xué)的街景點(diǎn)云濾波

圖10 基于坡度值濾波

圖11 基于布料模擬濾波
由實(shí)驗(yàn)結(jié)果很明顯看出,基于坡度值濾波在圖10 中紅框圈中部分,局部坡度值變換較為平緩時(shí),基于坡度值濾波并沒有把地面點(diǎn)與樹木根部進(jìn)行有效分開,因此不適合對(duì)其他地物與地面點(diǎn)進(jìn)行分類,反而對(duì)建筑物立面進(jìn)行濾波操作有良好效果。經(jīng)手工篩選后,此街景中地面點(diǎn)為95 359 個(gè),非地面點(diǎn)為83 494 個(gè),將基于形態(tài)學(xué)濾波與布料模擬濾波相比較。基于形態(tài)學(xué)濾波交叉表如表1 所示。

表1 數(shù)字形態(tài)學(xué)濾波交叉表
由表1 以及圖10 可以明顯看出,基于形態(tài)學(xué)濾波的Ⅱ類誤差較大,較為明顯的把非地面點(diǎn)判定為地面點(diǎn)。
基于布料模擬濾波的交叉表如表2 所示。

表2 布料模擬濾波交叉表
由表2 可以看出布料模擬濾波算法比數(shù)字形態(tài)學(xué)濾波算法的Ⅱ類誤差小很多,雖然Ⅰ類誤差要比數(shù)字形態(tài)學(xué)誤差大,但Ⅱ類誤差是將非地面點(diǎn)誤認(rèn)為地面點(diǎn),影響點(diǎn)云濾波后歸一化的結(jié)果,而且布料模擬濾波要比形態(tài)學(xué)濾波參數(shù)設(shè)置更簡(jiǎn)單一些,因此布料模擬濾波算法要優(yōu)于其余兩種算法。
故采用布料模擬濾波算法對(duì)原始街景點(diǎn)云數(shù)據(jù)進(jìn)行濾波,通過布料模擬數(shù)據(jù)濾波將原始車載激光雷達(dá)街景點(diǎn)云分為車載激光雷達(dá)地面點(diǎn)云和車載激光雷達(dá)地物點(diǎn)云,如圖12 和圖13所示。

圖12 布料模擬濾波后地物點(diǎn)云

圖13 布料模擬濾波后地面點(diǎn)云
(1)以真實(shí)采集的車載激光雷達(dá)街景點(diǎn)云數(shù)據(jù)為研究對(duì)象,將基于機(jī)載的布料模擬濾波算法應(yīng)用于車載激光雷達(dá)點(diǎn)云數(shù)據(jù)上,由濾波結(jié)果對(duì)比可知,Ⅱ類誤差遠(yuǎn)小于形態(tài)學(xué)與坡度值濾波算法,更有利于濾波后點(diǎn)云歸一化,因此證明了本文所提出算法的適用性與合理性。
(2)統(tǒng)計(jì)實(shí)驗(yàn)數(shù)據(jù),總結(jié)為表格展現(xiàn),布料模擬算法的兩類誤差率均控制在10%以內(nèi),說明在該場(chǎng)景下,布料模擬濾波具有較高的精度。
(3)從點(diǎn)云濾波的參數(shù)設(shè)置上以及所花時(shí)間上來看,布料模擬濾波要更優(yōu)于前兩種算法,尤其是形態(tài)學(xué)濾波的參數(shù)設(shè)置較為麻煩。