柳斌, 李雪梅
(1.吉林化工學院 信息與控制工程學院, 吉林 吉林 132022; 2.白城師范學院 機械與控制工程學院, 吉林 白城 137000)
近年來,智能科技的井噴式發展讓智能化設備融入越來越多的產業中。自動駕駛技術能夠協調出行路線與規劃時間,提升駕駛安全性和交通系統運行效率。由于激光雷達優異的感知性能[1],國內外汽車產商將激光雷達廣泛應用于自動駕駛汽車領域[2]。由于大氣環境干擾和光電接收器件的性能差異影響,激光雷達所獲取的點云數據不可避免地摻雜噪聲。這些噪聲直接影響點云成像的精度、特征信息提取及后續點云處理[3],因此對含噪點云進行去噪處理是點云數據預處理的關鍵。
目前,對點云去噪處理的方法較多。Rusu等[4]對家庭環境等真實場景下的復雜點云消除噪聲,并用統計濾波在不刪除重要細節的情況下對點云數據進行了重新采樣。李朋超等[5]采用一種設置“基準面”和最少點數約束的體素濾波方法對點云數據進行預處理,使其滿足特定位置處的處理需求。Julie等[6]設計了一種并行實現的雙邊濾波器,此濾波器不僅考慮了從相鄰點到點的距離,而且考慮了沿法線方向的距離,以此更好地保留鋒利的邊緣。
Tiziana等[7]提出了一種視覺驅動點云去噪算法,該方法通過對被高斯噪聲破壞的合成數據和真實數據的數值模擬來去噪。霍健等[8]提出了基于數學形態學的點云聚類算法,將去除地面后的點云分割為相互獨立的點云簇,并使用自適應閾值的分布直方圖去噪算法,去除點云簇周圍的離群噪點。Liu等[9]提出多尺度形態與漸進式三角化不規則網絡致密化相結合的分層濾波方法,具有較高的運行效率和精度。焦亞男等[10]提出基于噪聲尺度變化的點云并行去噪方法,在去除不同尺度噪聲的同時,模型的幾何特征和點云數據的損失均較小。趙鵬等[11]將動態距離閾值與統計濾波相結合,逐漸縮小統計范圍,最后采用改進雙邊濾波算法使數據點聚集于法向方向,從而進行光順去噪。韓東升等[12]提出以激光點云為基準并考慮多尺度噪聲濾波方法,密集匹配點云中的變形點得到了有效去除,有效提高了點云數據質量。
綜上所述,現有的點云去噪算法中,傳統算法僅對某一尺度的噪聲去除有效[13-14],對于多尺度噪聲去除需要結合多種去噪算法,勢必導致運行時間相對較長,且大多算法需要人為設定濾波參數。相比之下,半徑濾波運行速度快。因此本文提出一種基于自適應雙半徑的多尺度噪聲濾波算法。通過構建自適應大、小濾波半徑模型,克服半徑濾波無法識別小尺度噪聲的缺陷,實現自適應濾除多尺度噪聲,以極大地利用半徑濾波的高效性。將本文算法與各算法作對比,在去噪精確率、噪聲召回率、原點保留率和運行時間等性能指標上[15],本文算法的綜合性能優異。
體素濾波是指在輸入的激光雷達點云模型中建立大小可調的三維體素柵格,每個體素柵格內所有的點都被替換成它們的重心點[16],從而將激光雷達采集的密集點云在不破壞幾何結構的條件下進行精簡處理,同時濾除漂移噪聲體素。
體素濾波的計算步驟如下:1)根據點云數據坐標集合建立三維坐標系OXYZ,分別計算X軸、Y軸、Z軸上的最大值和最小值;2)設置柵格大小Vg;3)計算能夠囊括點云的最小包圍盒的三維邊長nx、ny、nz;4)計算體素網格的邊長;5)計算每個體素柵格內點云的索引h;6)把h中的元素升序排列后計算重心點;7)用重心點代替體素柵格內的所有點。
半徑濾波的濾波思想是在設定的半徑區域內,目標點的近鄰點不少于設定的閾值,若小于則認為是孤立的離群噪聲,將其濾除[17]。以某點為圓心,假設濾波半徑為R,在R區域內包含的點數閾值為NT。
如圖1所示,若NT=1,則A、B、C三點在各自的半徑R內包含的近鄰點均不少于1個,三點均保留;若NT=2,則只有A點在半徑R內的近鄰點少于2個,因此將A點濾除,B、C兩點保留;重復上述過程,直至所有點處理完畢。從濾波結果看,經過半徑濾波后保留的部分是相對密集的,由此可見半徑濾波對孤立噪聲點的濾除效果較好。

圖1 半徑濾波計算
統計濾波是指對每個點云的鄰域進行統計分析,濾除分布在設定區間之外的點云。
設定每個點的近鄰點數為Nsf,且點云之間的距離呈高斯分布,其分布狀況由均值μ和標準差σ確定。設n和m分別為點云P中任意一點和該點鄰域內任意一點的索引,計算點Pn到Pm的歐式距離S[12]:
(1)
式中:(Xn,Yn,Zn)、(Xm,Ym,Zm)分別為點Pn和Pm的三維坐標。則每個點與其鄰域內所有點的歐氏距離平均值μs為
(2)
式中:n為鄰域內包含的點云個數。
標準差為
(3)
為控制濾波范圍,設參數k為標準差倍數,在任意點的鄰域內,若近鄰點與該點的歐式距離在(μs-k·σ,μs+k·σ)內則予以保留,否則剔除,k為標準差倍數。使用統計濾波方法需人工設置Nsf和k,這兩個參數值選擇過大會增加算法計算量和運行時間,選擇過小則不能較好地體現點與近鄰點之間的位置關系,導致去噪效果不佳,故選取合適的Nsf和k參數值是濾波的關鍵。
中值濾波的去噪思想非常直接,即目標點的三維坐標由鄰域內所有點的三維坐標的中值代替[18]。
確定目標點P0(x0,y0,z0)的鄰域,該鄰域由目標點的Nmf個近鄰點組成,鄰域U:
U={(x0,y0,z0)|(x-x0)2+(y-y0)2+
(z-z0)2≤d2}
(4)
式中:d為P0與第Nmf個點的距離值。
對鄰域內點的三維坐標分別進行升序排列:
(5)
式中:X0、Y0、Z0分別為P0鄰域內點云三維坐標的集合。
用X0、Y0、Z0的中值xm、ym、zm分別替換P0的三維坐標:
(xm,ym,zm)→(x1,y1,z1)
(6)
式中:x1、y1、z1為濾波后的Po三維坐標。
從濾波思想上看,中值濾波只進行點的替換而不刪除點,且能讓邊緣突出的噪聲移到點云較密集處,因此該方法能在不損失點云數據處理精度的情況下對離群噪聲點有較好的抑制作用。若中值和噪聲點之間的差距較小,則中值替換的作用不明顯,因此中值濾波對離群噪聲簇和緊密漂移噪聲濾除效果不佳。
應用場景和噪聲類型的寬泛性要求濾波算法的泛用性良好。濾波對象數量少且形狀單一,為簡單場景,如某一動物、一個車體或地面路燈等;對象數量多且形狀大小不一的為復雜場景,如田間作物和雜草、車載激光雷達掃描的道路和水下物體等。傳統的濾波方法大多只對某一類噪聲有較好的濾除效果,或只能達到某單一性能的要求。
半徑濾波作為一種離群點消除方法,遠比其他濾波算法迅捷高效。但半徑濾波往往因不能準確識別小尺度噪聲,適用性嚴重受限;且需要人為設定半徑范圍R和近鄰點數NT,確定合適的參數需要大量重復測試,大大增加了處理數據的工作量。因此,若解決了適用性窄和參數設定難的問題,就能極大地利用半徑濾波的高效性。
為彌補半徑濾波算法的不足,本文提出構建大、小半徑濾波,使之能夠識別小尺度噪聲;通過融合點云的密度特征,將參數設定優化為自適應調整;基于改進的體素濾波,提高運行速率。方案具體內容如圖2所示。

圖2 去噪方案流程
本文濾波算法的濾除對象是多類型噪聲,包括離群孤立噪聲點和離群噪聲簇等大尺度噪聲,也包括緊密漂移噪聲等小尺度噪聲。大尺度噪聲的主要特點為偏移主體點云較遠,易于成簇;小尺度噪聲則是與關鍵點糅雜在一起,不易分辨。點云經改進的體素濾波精簡處理后,通過計算點云密度,構建自適應大、小半徑濾波模型,以分別去除大、小尺度噪聲。
算法設計程序包括三大部分,分別為加噪、本文算法和對比實驗。具體程序流程圖如圖3所示。

圖3 自適應雙半徑濾波程序流程
由圖3可知,算法的代碼程序分為7個步驟,具體如下:1)讀取原始點云數據;2)加入均值和數量不同的高斯噪聲;3)用最少點數約束的體素濾波方法來精簡點云;4)計算點云平均密度;5)構建自適應大、小半徑濾波模型;6)算法的性能評價;7)原始點云、加噪點云和濾波后點云的可視化。
體素濾波可以有效地精簡點云數量,同時保留點云的形狀特征,從而提高算法的運行速度,防止海量的點云數據影響后續工作。最少點約束的體素濾波在體素濾波之上添加了最少點數的限定條件,即每個體素柵格內的點數必須達到最小限定值MP,否則就擴大體素柵格范圍,直至點數不少于MP。與傳統體素濾波相比,在點云稀疏處的柵格內有更多的點云,因此降采樣精度更高,同時濾除部分邊緣離群噪聲。
通過融合點云密度特征,將半徑濾波優化為參數自適應調整。點云的密度定義為點云中任意點與其他點之間歐氏距離的最小值,再取所有點距離最小值的平均值[19]。設點云Q中有NQ個點,其歐氏距離的最小值L為
L=min(d(p,q)),q=1,2,…,NQ-1,q≠p
(7)
式中:d(p,q)為點云Q內一點p和任意點q的歐式距離。
在不同的點云數據中,點云密度是不同的。引入可調的密度倍數參數,根據密度倍數自適應地選取合適的濾波半徑。為此,構建的大半徑濾波模型為
(8)


由于不同點云數據其點云密度也不同,在以點云密度為半徑的圓內,每個點應有α·ML個近鄰點,若沒有,則說明該點的密度小于平均值,應判斷為孤立噪聲點。因此近鄰點NL取值原則應為
(9)
式中:N+表示正整數集。
經過最少點數約束和自適應大半徑濾波后,離群孤立噪聲點和離群噪聲簇會被大幅度剔除掉,之后再加入自適應小半徑濾波來去除小尺度噪聲。經過降采樣處理后,點云數量被精簡,將原點云數據中不易分辨的漂移噪聲點暴露成為“新”的離群孤立點,此時采用小半徑濾波即可濾除。因此,構建的小半徑濾波模型為
(10)
式中:F(RS,NS)為小濾波半徑和近鄰點的一組數值對,RS為濾波小半徑,NS為近鄰點數;β為小濾波系數;MS為密度倍數。
近鄰點NS與大半徑濾波模型原理相同,取值原則應為
(11)
至此,雙半徑濾波模型構建及參數選取完成,算法可根據不同點云數據的疏密程度自適應調整大、小濾波半徑進行去噪。
各算法的仿真實驗采用的處理器均為Intel(R)Core(TM)i5-7300HQ CPU@2.50GHz、RAM為8 G、操作系統為Windos10的計算機測試,程序運行環境為Visual Studio 2022+PCL(Point Cloud Library)點云庫1.12.0[20]。
實驗采用斯坦福數據庫中的Bunny模型進行仿真分析,如圖4所示。圖4(a)為Bunny模型的可視化圖,點云數量為35 947;圖4(b)為在原始點云上加入高斯噪聲(均值為0.002 m、數量占比為25%)的可視化圖,此噪聲大部分為緊密的漂移噪聲。

圖4 Bunny模型下各濾波算法可視化圖
如圖4所示,體素濾波讓模型的幾何特征損失較小,但仍有較多離群噪聲和漂移體素;半徑濾波剔除了大部分噪聲,但識別并不準確,破壞了一些部位的形狀,導致精度損失不小;統計和中值濾波效果相近,均未能識別相當部分的噪聲,中值濾波的模型背部毛刺明顯較多;文獻[11]算法、文獻[12]算法與本文算法去噪效果相近,幾何特征幾乎無損失,表面光滑均無明顯毛刺,絕大部分噪聲被濾除,但文獻[11]算法仍存在零星散落點,且模型耳朵和腿處的形狀略有變化。
Bunny模型中的噪聲類型較為單一,在此環境不能充分地體現各算法的優劣勢。KITTI數據集是目前國際上最大的自動駕駛場景下的計算機視覺算法評測數據集[21],為進一步驗證算法在復雜場景下的去噪效果,選取KITTI數據集內一段T型路口的真實場景數據,如圖5所示,其中圖5(a)為Road場景的可視化圖,點云數量為110 090;圖5(b)為加入高斯噪聲(均值為0.16 m、數量占比為25%)的可視化圖,圖5(b)中的噪聲數量較多,且類型復雜。

圖5 Road場景下各濾波算法可視化圖
圖5(b)中的馬路、車體及人行道紅綠燈等均是重要信息,理應保留;噪聲和遠處的樹等為無效信息,應予濾除。體素濾波后點云大幅減少,車體和噪聲界線已較為模糊,大量緊密漂移體素未被濾除;半徑濾波對非中心區域的云去除較多,車體周邊信息所剩無幾,人行道紅綠燈含有雜糅的漂移噪聲;統計和中值濾波效果接近,重要信息均保留完好,而統計濾波比中值濾波有更多的漂移噪聲,邊緣點簇也更少;文獻[11]算法總體與半徑濾波類似,且更進一步降低了漂移噪聲數量;文獻[12]算法與本文算法相近,點云密集程度均有所降低,車體和人行道紅綠燈輪廓完整,進一步看細節,本文算法車體旁的漂移噪聲更少,但文獻[12]算法保留了更多微觀上的細節。體素濾波、半徑濾波、統計濾波、中值濾波和自適應雙半徑濾波算法的參數設置如表1所示。

表1 各濾波算法參數設置
3.2.1 指標計算
圖4和圖5僅能給出算法的定性評估,下面引入去噪精確率、噪聲召回率、原點保留率和運行時間,來定量對比各濾波算法的優劣。
評價指標去噪精確率Pd、噪聲召回率Rd和原點保留率Ro的計算公式如下:
(12)
式中:Nq為移除的噪聲數量;Ng為噪聲總數;Ny為移除的點數;No為濾后剩余點云中不屬于噪聲的點數;Nf為濾后剩余點數。
由式(12)可知,去噪精確率和噪聲召回率是衡量去噪效果的重要指標,數值越大則去噪越精準;原點保留率體現了算法對關鍵信息和點云精度的影響,數值越大表明精度損失越小。這些評價指標可以直觀地反映算法在去噪方面的優劣程度。高斯噪聲的分布由兩個參數決定:均值μgn和噪聲數量Ngn。μgn越大則噪聲分布越分散,反之越密集。測試時,Bunny模型添加的高斯噪聲均值分別為0.000 5 m、0.001 m、0.002 m、0.004 m和0.008 m,而在Road場景添加的噪聲均值分別為0.06 m、0.08 m、0.12 m、0.16 m和0.18 m。此外,每個模型在固定各均值條件下,分別添加了5%、12%、17%和25%的噪聲點。
3.2.2 去噪精確率
濾波算法的去噪精確率對比如圖6所示。

圖6 去噪精確率對比(橫軸刻度已省略重復的噪聲均值)
在Bunny模型中,當噪聲數量固定時,除中值濾波外其他算法的Pd均與噪聲均值正相關;當噪聲均值相同時,半徑濾波、統計濾波、文獻[11]算法和本文算法的Pd與噪聲數量負相關,體素濾波與文獻[12]算法小幅增大,中值濾波僅在低均值時小幅上升,高均值時反之。在Road場景中,Pd變化與上述情況類似,但變化方式和程度略有不同。噪聲數量會對所有算法產生更大的影響,且能清晰地區分不同算法的Pd值差異,主要原因為Road場景中目標對象和噪聲類型更復雜,當噪聲數量足夠多時易與主體混合。本文算法的Pd值在兩個模型的不同噪聲參數下均達到了最高水平,表明它能夠有效地移除噪聲,同時波動較小,因此在復雜環境中具有更強的穩定性。
3.2.3 噪聲召回率
濾波算法的噪聲召回率對比如圖7所示。兩個測試對象中,除體素濾波外各濾波算法的Rd值均與噪聲均值或數量呈正相關的關系,而體素濾波與均值負相關。兩者之間也有些許區別,Bunny模型的低均值下,中值濾波和文獻[12]算法的Rd值明顯高于文獻[11]算法和本文算法,又明顯高于體素濾波、半徑濾波和統計濾波算法;隨著均值的增大,各算法的Rd值產生分化,至中均值時已能明顯區分;當高均值時統計濾波算法遠高于其他算法。Road場景下各Rd值大小區分較為明顯,且變化趨勢高度相似。本文算法在Bunny模型中的表現在各算法對比排名中處于中下,與文獻[11]算法極為相似;在Road場景中僅高于體素濾波算法。

圖7 噪聲召回率對比(橫軸刻度已省略重復的噪聲均值)
圖5(i)中周圍車輛、會車車輛及路口信息燈均保留完整,遠處噪聲和其他干擾信息大量去除,由于將遠處非緊要點云刪除,且采用最少點數約束的體素濾波進行降采樣精簡點云,導致式(12)中Ny過大,從而降低了Rd值。因此,僅對比Rd值并不能將濾波前后精度損失的程度作全面具體的對比,需要引入第3個評價指標原點保留率Ro。
3.2.4 原點保留率
濾波算法的原點保留率對比如圖8所示。
原點保留率定義為濾后點云中的原始點云數量所占比例,反映了點云信息保留的程度,也用于衡量點云處理過程中對原始信息的影響程度。如圖8所示,在Bunny模型和Road場景中,非體素濾波算法的Ro均與噪聲數量負相關,與均值正相關,而體素濾波算法均為負相關。本文算法的原點保留率高,與文獻[11]算法、文獻[12]算法相近;中值濾波算法只是替換噪聲而沒有刪除,因此其Ro值高。本文算法利用最少點約束的體素濾波擴大點間距,因此半徑濾波算法對離群點敏感的優勢得以充分發揮,只損失少部分原有的點。在噪聲占比上升的情況下Ro下降幅度相對較小,反映出本文算法具有廣泛的適用性和較強的魯棒性。
綜合以上3個反映去噪精度的評價指標,本文算法的去噪精度比各傳統算法更高,與文獻[11]算法和文獻[12]算法相比略低,仍能證實本文構建的自適應大、小半徑濾波模型彌補了半徑濾波算法不適用于小尺度噪聲的缺陷,大幅度拓展了算法的適用范圍。
3.2.5 運行時間
面向實際應用場景,算法的運行時間是需要關注的重要性能指標,各濾波算法的運行時間對比如圖9所示。

圖9 運行時間對比(橫軸刻度已省略重復的噪聲均值)
在仿真測試中,通過運行各算法200次,并取算術平均值來獲取圖9中的運行時間數據,以更準確地評估各算法的表現。由圖9可見,對于測試對象,所有算法的運行時間均與噪聲均值和數量呈正相關關系;文獻[11]算法用時明顯高于文獻[12]算法,且大幅高于其他算法;統計、中值、半徑、體素和本文濾波算法在Bunny模型中均低于1.2 s,在Road場景下均低于5 s;本文算法用時略高于半徑和體素濾波算法,而低于統計濾波和中值濾波算法;當噪聲占比升高時,統計和中值濾波算法用時顯著升高,因為它們都需要對鄰近點計算距離,導致它們對噪聲數量敏感。本文算法采用雙半徑濾波而僅比傳統半徑濾波算法用時略高一點,是因為先用最少點數約束的體素濾波精簡了點云數量,并在計算點云密度時先構建了KD-tree,因此需要搜索的近鄰點數量大幅縮小,從而加快了搜索進程,達到近似單半徑濾波的運行速率。
本文將最少點約束條件下的體素濾波和半徑濾波相結合,并融合點云的密度特征,構建了自適應大、小半徑濾波模型,提出一種基于激光雷達點云的自適應雙半徑濾波濾波方法。實驗結果顯示,去噪精確率和原點保留率均在90%以上,且運行時間低于2 s;新算法具有優秀的去噪效果和低的精度損失,同時運行速度也非???。即使面對復雜的噪聲類型和大量的噪聲數量,去噪性能仍然出色,驗證了新算法的有效性和強魯棒性。本文結果為自動駕駛車輛激光雷達點云目標的檢測、識別、定位與跟蹤等方法的點云預處理提供了理論參考。