任彬,崔健源,李剛,宋海麗
(1 石家莊鐵道大學(xué)機械工程學(xué)院,石家莊050043)
(2 中國人民解放軍陸軍工程大學(xué),石家莊050043)
近年來,無人駕駛、智能駕駛技術(shù)正快速發(fā)展?,F(xiàn)階段,車輛對外部信息的獲取主要是依靠激光雷達、毫米波雷達和攝像頭等三類傳感器。與另外兩者相比,激光雷達具有高精度、高分辨率的優(yōu)點,用其探測行車環(huán)境成為了一種趨勢。作為車輛上的一種重要傳感器,激光雷達可以直接獲取與周圍物體的距離和方位角等信息,即點云數(shù)據(jù)。由于受到天氣、裝配誤差等因素的影響,點云中常含有一定數(shù)量的噪聲點。噪聲點的存在會對點云配準(zhǔn)、語義分割等步驟產(chǎn)生嚴(yán)重影響,導(dǎo)致配準(zhǔn)誤差大、分割精度低、耗時長等問題。因此,對點云數(shù)據(jù)進行去噪成為了點云處理的重要研究方向之一。
點云去噪既要求快速高效地去除噪聲點,又要求盡可能地保留點云的細節(jié)特征,比如邊緣、尖角、孔洞等。針對以上問題,國內(nèi)外研究人員提出了許多點云去噪算法。魏碩等[1]采用了結(jié)合基于密度的噪聲空間聚類應(yīng)用算法和統(tǒng)計濾波算法的單光子點云去噪方法,其性能優(yōu)于經(jīng)典的半徑濾波算法。劉利恒等[2]提出了一種幾何特征保持的點云去噪算法,首先通過柵格化去除大尺度噪聲,再通過模糊C 均值聚類算法刪除小尺度噪聲。程知等[3]為了提高差分光柱像運動激光雷達探測信噪比,提出了一種基于集合經(jīng)驗?zāi)B(tài)分解和奇異值分解的混合降噪法,有效地識別和濾除了噪聲。WANG W 等[4]提出一種基于Laplace 分布的去噪算法,可以有效保留原始數(shù)據(jù)中有用細節(jié)信息。CRUZ C 等[5]提出一種基于非局域增強卷積神經(jīng)網(wǎng)絡(luò)的去噪算法,通過結(jié)合卷積神經(jīng)網(wǎng)絡(luò)和非局部濾波器實現(xiàn)了圖像的有效去噪。CENTIN M 等[6]提出一種幾何保真的Signoroni網(wǎng)格去噪算法,該算法不依賴于點云規(guī)模,對目標(biāo)應(yīng)用領(lǐng)域具有挑戰(zhàn)性的情況去噪效果良好。李凱等[7]對初步去噪后的點云使用改進后的統(tǒng)計濾波方法,設(shè)定閾值進行去噪,但參數(shù)的設(shè)定比較依賴經(jīng)驗,對結(jié)果也有著較大的影響。楊秀芳[8]等采用提升小波變換和改進型閾值函數(shù)去噪技術(shù)對強噪聲干擾的雷達生命信號進行去噪處理,取得了的良好效果。吳俊威等[9]結(jié)合混合增采樣策略和領(lǐng)域自適應(yīng)選擇策略提出了一種新的點云濾波算法,并取得了良好的效果。JANKE P 等[10]將貝葉斯統(tǒng)計第一次用于點云去噪鄰域,其主要思想是將測量和重構(gòu)都定義為點云,并用這種有限維的表示來描述所有統(tǒng)計假設(shè)。SCHALL O 等[11]提出了一種基于核密度估計函數(shù)的聚類去噪方法,其具有效率高、魯棒性強的優(yōu)點,但無法準(zhǔn)確處理點云中的尖銳特征。為了解決城市點云的去噪問題,楊鵬等[12]設(shè)計了一種基于最小二乘密度聚類的城市點云去噪算法,其利用最小二乘法求解各維度的密度擬合曲線,再利用密度擬合曲線設(shè)置閾值并提取各維度合限點集的交集作為最終結(jié)果。實驗表明其對噪聲點具有較好的剔除效果,滿足城市點云去噪任務(wù)的要求。CASTILLO E 等[13]將主成分分析法與約束非線性最小二乘問題相結(jié)合,與傳統(tǒng)PCA 相比,新方法自動為相鄰點分配適當(dāng)?shù)臋?quán)重,以最大程度地減少跨奇異點的貢獻,并在實驗中取得了良好的結(jié)果。ORTS-ESCOLANO S 等[14-16]提出利用Growing Neural Gas 神經(jīng)網(wǎng)絡(luò)進行點云去噪,并結(jié)合三維濾波器和下采樣技術(shù),在實驗中取得了良好的效果。MATTEI E 等[17]提出了一種移動魯棒主成分分析法,該算法通過計算局部平均值進行去噪,且無需提前知道法線方向。ZHANG Y 等[18]提出了一種三維擴散濾波降噪算法,實現(xiàn)了自適應(yīng)去噪。WANG J 等[19]使用均值漂移聚類算法對點云中的離群噪聲點進行去除。為了在點云去噪中既保持尖銳區(qū)域的特征又使平滑區(qū)域高度光順,王曉輝等[20]提出了一種基于法向量距離分類的去噪方法,其采用加權(quán)局部最優(yōu)投影算法和雙邊濾波算法分別對平滑區(qū)域和尖銳區(qū)域進行濾波去噪,有效去除了點云中的孤點。
根據(jù)噪聲點與非噪聲點之間的歐式距離,劃分為遠信號噪聲點和近信號噪聲點兩類,依據(jù)各自不同的特征,本文提出了一種基于自適應(yīng)閾值的三維點云分段式去噪方法,即首先利用基于非線性函數(shù)的閾值自適應(yīng)去噪算法進行遠信號噪聲的去除,再利用基于曲率中值的去噪算法進行近信號噪聲的去除?;诜蔷€性函數(shù)的閾值自適應(yīng)去噪算法首先對輸入點云進行柵格化處理,將柵格到激光雷達的距離作為輸入,通過調(diào)用設(shè)定的非線性函數(shù)計算閾值,去除柵格內(nèi)點云數(shù)量小于閾值的柵格;其次對剩余柵格進行聚類,將聚類集內(nèi)的柵格數(shù)量小于閾值的聚類集去除?;谇手兄档娜ピ胨惴ㄍㄟ^比較某一點曲率與該點鄰域內(nèi)所有點的曲率中值,進行是否為噪聲點的判斷。
點云數(shù)據(jù)中的噪聲可以分為兩大類:近信號噪聲和遠信號噪聲等,其中,遠信號噪聲又可分為孤立噪聲點和孤立噪聲簇兩類。其具體關(guān)系如圖1所示。
圖1 數(shù)據(jù)點的分類Fig.1 Classification of data points
各類型噪聲特點為:1)孤立噪聲點的點云密度低且鄰域內(nèi)無信號點;2)孤立噪聲簇的點云密度高,鄰域內(nèi)無信號點,且領(lǐng)域內(nèi)大部分為噪聲點;3)近信號噪聲點的點云密度高,領(lǐng)域內(nèi)大部分為信號點。遠信號噪聲點距離信號點較遠,鄰域內(nèi)無信號點,易于分離去除;而近信號噪聲點距離信號點較近,鄰域內(nèi)有信號點,不易去除。綜合考慮去噪時間和去噪效果,本文提出一種基于自適應(yīng)閾值的三維點云分段式去噪方法,即利用基于非線性函數(shù)的閾值自適應(yīng)去噪算法和基于曲率的去噪算法,分別對近信號噪聲點和遠信號噪聲點進行處理,流程圖如圖2所示。
圖2 去噪算法流程圖Fig.2 Flow chart of the proposed method
基于非線性函數(shù)的閾值自適應(yīng)去噪算法主要目的是去除輸入點云數(shù)據(jù)中的遠信號噪聲,包括孤立噪聲點和孤立噪聲簇,這可以減少后續(xù)細去噪階段的計算量。步驟為1)對輸入的點云數(shù)據(jù)進行柵格化處理,將整個點云空間劃分為有序的柵格,并計算柵格的平均點云密度,設(shè)為初始閾值;2)將柵格到原點的距離作為輸入,調(diào)用設(shè)定的非線性函數(shù)計算閾值,達到動態(tài)調(diào)整閾值的效果,若該柵格達到閾值,則保留;否則,則刪去;3)對剩余柵格進行聚類,若某一聚類集中柵格的數(shù)量小于設(shè)定閾值,則判斷該聚類集內(nèi)的點為孤立噪聲簇,刪除該聚類集。具體細節(jié)將在1.1 節(jié)詳細說明。
基于曲率的去噪算法主要目的是去除近信號噪聲。本文選用鄰域曲率比較的方法,通過比較選定點與鄰域內(nèi)所有點的曲率的中值來判斷其是否為噪聲點。在比較時選用中值而不是均值,可以有效抵御野值的干擾,避免信息點被誤刪除。具體細節(jié)將在1.2 節(jié)詳細說明。
基于非線性函數(shù)的閾值自適應(yīng)去噪算法的目的是去除遠信號噪聲。其中,孤立噪聲點鄰域內(nèi)的點數(shù)少,可通過比較柵格點云密度進行去除。孤立噪聲簇是由多個噪聲點組成,其柵格點云密度可能與信號點所在柵格相近,但信號點所在柵格大多相互連接,而孤立噪聲簇所在柵格大多較為孤立,鄰域柵格數(shù)量少。
第一階段是去除孤立噪聲點,其流程圖如圖3(a)所示。輸入點云一般是無序的,首先選擇柵格建立點云拓?fù)浣Y(jié)構(gòu),該步驟可視為柵格中值下采樣。然后根據(jù)閾值進行孤立噪聲點刪除,由于點云隨著與傳感器間距離的增加,會逐漸變得稀疏,所以在設(shè)定點云密度閾值時,根據(jù)距離對閾值進行動態(tài)調(diào)整。本文提出一種自適應(yīng)點云密度閾值去噪策略,根據(jù)式(1)計算整體點云密度d0。
圖3 基于非線性函數(shù)的閾值自適應(yīng)去噪算法流程圖Fig.3 Flow charts of the threshold adaptive denoising algorithm based on nonlinear function
式中,num_of_points 為輸入點云中的數(shù)據(jù)點數(shù)量,num_of_vaild_grids 為有效柵格數(shù)量,有效柵格是指至少含有一個數(shù)據(jù)點的柵格。得到整體點云密度d0后,由式(2)計算單個柵格的密度閾值,即
式中,l為柵格中心到原點的歐式距離。由式(2)可知,距離原點越遠的柵格,其點云密度閾值也會越小,未達到閾值的柵格內(nèi)的點即為噪聲點。通過距離對閾值動態(tài)調(diào)整,可以避免點云數(shù)據(jù)本身近密遠疏的性質(zhì)對去噪產(chǎn)生影響。
第二階段是去除孤立噪聲簇,其流程圖如圖3(b)所示。孤立噪聲簇是多個噪聲點的聚集,其所在柵格能夠達到第一階段的密度閾值,無法去除。但孤立噪聲簇所在柵格大多孤立存在,柵格集中的柵格數(shù)量少,而信號點和近信號噪聲所在柵格大多相互連接,柵格集中的柵格數(shù)量多。因此,采用柵格集中的柵格數(shù)量對孤立噪聲簇進行判斷,將柵格集中柵格數(shù)量小于設(shè)定閾值的柵格集視為孤立噪聲簇所在柵格。將柵格數(shù)量閾值設(shè)定為3,具體步驟為:
步驟1,對任一柵格gi,統(tǒng)計其緊密相鄰的柵格的數(shù)量Ni,緊密相鄰意為該鄰域柵格與gi有一個共用面。假設(shè)gi的坐標(biāo)為(xi,yi,zi),只需統(tǒng)計(xi-1,yi,zi)、(xi+1,yi,zi)、(xi,yi-1,zi)、(xi,yi+1,zi)、(xi,yi,zi-1)和(xi,yi,zi+1)等6 個坐標(biāo)處是否存在有效柵格即可。
步驟2,若Ni大于等于2,則gi不是噪聲簇所在柵格,移動至下一柵格并重復(fù)步驟1。若Ni為1,即gi只有1 個緊密相鄰的柵格gi+1,則對gi+1進行步驟1 并得到Ni+1,此時不將gi計入Ni+1中。若Ni+1大于1,則gi不是孤立噪聲簇所在的柵格,否則gi即為孤立噪聲簇所在的柵格。若Ni為0,則可直接判斷得出gi是孤立噪聲簇所在的柵格。
步驟3,移動到下一個柵格,重復(fù)步驟1 和步驟2,直至所有柵格都被遍歷。
基于曲率的去噪算法的目的是去除近信號噪聲,其離信號點的距離較近。本文通過提取曲率幾何特征來實現(xiàn)近信號噪聲的去除,核心思路為采用鄰域內(nèi)的曲率中值來調(diào)整噪聲點的判斷閾值,因為相比于鄰域內(nèi)平均值,野值對中值的影響更小,所以利用曲率中值來調(diào)整判斷閾值能夠降低誤判概率。點云中數(shù)據(jù)點的曲率可利用移動最小二乘法[21]計算得到
對于點云中的任意一點pi(xi,yi,zi),設(shè)其切平面方程為
利用點pi到其切平面的距離,構(gòu)建k鄰域點集的觀測方程,為
式中,(xi,j,yi,j,zi,j)為點pi的第j個鄰近點的坐標(biāo);di是點pi到切平面的距離;di,j為點pi的第j個鄰近點到切平面的距離。利用高斯函數(shù)計算點pi及其鄰域內(nèi)任意一點pj的權(quán)w,為
式中,h為距離常數(shù)。建立如式(7)所示的約束準(zhǔn)則,即
由約束準(zhǔn)則可得
由式(8)可解得Y,進而求得點pi的法向量ni=[a,b,c]T,最終根據(jù)法向量與曲率的關(guān)系,任意一點pi的曲率ci可由式(10)計算
式中,nj為點pi的第j個鄰近點的法向量。得到所有點的曲率后,即可進行中值比較,完成近信號噪聲點的去除。其流程圖如圖4所示。具體步驟為:
圖4 基于曲率的去噪算法流程圖Fig.4 Flow chart of the denoising algorithm based on curvature
步驟2:計算P內(nèi)所有點的曲率。
步驟3:對某一點pi,通過K-D 樹[22]找到其k個最近鄰,記為p1,p2,p3,…,pk。
步驟4:將pi和p1,p2,p3,…,pk各自的曲率進行排序,選出其中值c作為初始閾值。
步驟5:若pi的曲率ci不在[0.5c,1.5c]的范圍內(nèi),則pi為噪聲點;反之則不是噪聲點。
步驟6:取下一個點,重復(fù)執(zhí)行步驟3~5,直到點云P中的所有點都被判斷為止。
當(dāng)點云數(shù)量較大時,步驟3 中尋找pi的k個最近鄰域點的時間較長。為此,預(yù)先在步驟1 中采用K-D 樹建立已經(jīng)去除了遠信號噪聲的輸入點云的拓?fù)浣Y(jié)構(gòu),以快速且準(zhǔn)確地找到鄰域點。
為驗證方法有效性,本節(jié)采用公共數(shù)據(jù)集進行實驗。實驗數(shù)據(jù)來自斯坦福大學(xué)三維掃描庫(The Stanford 3D Scanning Repository),該數(shù)據(jù)庫中包含從多個角度掃描得到兔子模型(Bunny)和龍模型(Dragon)的點云圖,被掃描模型如圖5所示。本文選用其中的bun000、bun180、dragonStandRight_0 和dragonStandRight_120 等四組點云數(shù)據(jù),如圖6所示。
新時期下,隨著我國電廠企業(yè)的持續(xù)深化改革,雖然其整體競爭力不斷提升,但是依然存在諸多問題。同時,在以往國有企業(yè)管理模式下,電廠企業(yè)內(nèi)部組織結(jié)構(gòu)存在重疊和交叉的情況,對企業(yè)的長遠發(fā)展形成了制約。因此,電廠企業(yè)要對內(nèi)部組織結(jié)構(gòu)進行優(yōu)化,通過扁平化管理方式,提升組織結(jié)構(gòu)的合理性,在招聘員工過程中,也要遵循人盡其才的原則,按照員工能力分配工作崗位,保證員工在適合的崗位中充分發(fā)揮其能力和才智。
圖5 被掃描模型Fig.5 The scanned models
圖6 原始公共點云Fig.6 Origin point clouds
原始數(shù)據(jù)全部視為信號點,即原始數(shù)據(jù)中無任何噪聲點,通過對其進行加入高斯噪聲點得到帶噪點云,噪聲點數(shù)約為原始數(shù)據(jù)點數(shù)的10%,帶噪點云如圖7所示。
對于圖7所示的帶噪點云,采用本文提出的基于自適應(yīng)閾值的三維點云分段式去噪方法進行去噪,首先采用基于非線性函數(shù)的自適應(yīng)去噪算法進行遠信號噪聲的去除;然后采用基于曲率的去噪算法進行近信號噪聲的去除,最終的去噪結(jié)果如圖8所示。
圖7 帶噪點云Fig.7 The point clouds with noise
由圖8 可知,去噪后,消除了大部分的噪聲點,并且有效地保留了原始點云中的尖銳、邊緣特征及細節(jié)特征,是一種有效的點云去噪方法。從圖8(a)中可以看到,兔耳周圍的噪聲被去除,保留的兔耳邊緣細膩。在圖8(c)中,龍的腰身附近的極大部分噪聲點已被去除,且腰身上的凸起細節(jié)均被完整保留下來,為后續(xù)的三維重建提供了豐富的細節(jié)。
圖8 本文算法的去噪結(jié)果Fig.8 The results of the proposed method
為進一步分析本文去噪算法的性能,通過統(tǒng)計四組數(shù)據(jù)下的點云大小、去噪精確度和耗時等數(shù)據(jù),得出了四組去噪精確度均在95%以上,如表1所示。其中,去噪精確度P為
式中,Nc表示去除的噪聲點數(shù)目,Nt表示噪聲點總數(shù)。
由表1 可知,當(dāng)點云大小為40 000 個點左右時,耗時約為13 s,耗時與輸入點云大小滿足正線性關(guān)系,并具有較好的并行性,即對任意柵格或數(shù)據(jù)點進行判定時不會影響其它柵格或數(shù)據(jù)點的處理,有效縮短了去噪時間,且不影響去噪精確度,也符合目前計算機的多線程的發(fā)展趨勢。
表1 本文方法實驗結(jié)果Table 1 The result of the proposed method
為進一步驗證本文方法的去噪性能,對圖7(a)和圖7(c)的帶噪點云再分別采用半徑濾波算法、文獻[17]和文獻[18]的算法進行去噪實驗。去噪結(jié)果對比圖分別見圖9、10。
圖9 Bunny 去噪結(jié)果對比Fig.9 Comparison graph of Bunny
從結(jié)果對比圖中可以看出,與采用半徑濾波算法、文獻[17]算法和文獻[18]算法等進行比較,本文算法能夠在較大范圍內(nèi)、較高噪聲的情況下,進行大規(guī)模散亂點云去噪,去噪效果明顯,細節(jié)特征保留。
為更準(zhǔn)確地進行對比,在表2 中分別統(tǒng)計了四種算法在相同輸入下的去噪精確度和耗時。從中可以看出,與半徑濾波算法、文獻[17]算法和文獻[18]算法等相比,本文算法針對不同類型噪聲的特點,有針對性地分別采取了基于非線性函數(shù)的閾值自適應(yīng)去噪算法和基于曲率中值的去噪算法,故而去噪精確率最高。
圖10 Dragon 去噪結(jié)果對比Fig.10 Comparison graph of Dragon
在耗時方面,通過保證算法良好的并行性,引入多線程并行化處理技術(shù),在去噪精確率高于文獻[17]算法和文獻[18]算法高的情況下,耗時減少1 s 左右。與半徑濾波算法相比,在兩種場景下,雖然耗時較長,但去噪精確度提高了約15%。這是因為半徑濾波算法僅依靠點云密度對數(shù)據(jù)點進行判斷,算法簡單,只需計算待判斷點的指定領(lǐng)域范圍內(nèi)的點數(shù)即可,所以運行速度較快,但無法很好地去除與信號點的點云密度相近的近信號噪聲點,導(dǎo)致去噪精確率較低,兩種場景下分別低于比本文方法14.6%和14.9%,本文算法則通過曲率中值算法完成了該類噪聲點的濾除。因此可以證明,本文提出的基于自適應(yīng)閾值的三維點云分段式去噪方法是一種更加有效的點云去噪方法。
點云去噪是點云處理中的一個重要環(huán)節(jié),針對點云去噪問題,本文提出了一種基于自適應(yīng)閾值的三維點云分段式去噪方法,分別采用了基于非線性函數(shù)的閾值自適應(yīng)去噪算法進行遠信號噪聲的去除,基于曲率的去噪算法進行近信號噪聲的去除。通過對斯坦福大學(xué)公共點云數(shù)據(jù)進行去噪實驗,實驗結(jié)果表明本文方法在保持物體點云數(shù)據(jù)的結(jié)構(gòu)特征的同時,能夠有效刪除噪聲點,達到了95%以上的去噪精確度,為后期三維重建提供了可靠的數(shù)據(jù)源。
但本文方法也尚有不足之處,例如需要自行調(diào)整的參數(shù)較多,包括柵格大小、鄰域點數(shù)量等,本文除了柵格大小外,只是固定地采用了一套參數(shù)。如何減少參數(shù)的數(shù)量、如何調(diào)整參數(shù)范圍以及如何更快地搜索鄰域等是下一步研究重點。