張匡宇 , 田 慶
(陜西鐵路工程職業(yè)技術(shù)學(xué)院,陜西 渭南 714000)
在地面三維激光掃描儀采集數(shù)據(jù)時(shí),受掃描對(duì)象的表面反射、實(shí)測環(huán)境等的影響,采集得到的點(diǎn)云包含一小部分噪聲,噪聲點(diǎn)混雜在目標(biāo)物體表面點(diǎn)云中,從而導(dǎo)致被測物體細(xì)節(jié)特征丟失[1-3]。另外,通常掃描點(diǎn)云密度大,這些數(shù)據(jù)會(huì)造成處理效率低下。由于以上原因,需要對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行去噪和精簡處理,從而提高模型精度和數(shù)據(jù)處理效率。
在三維激光點(diǎn)云去噪方面,國內(nèi)外學(xué)者進(jìn)行了廣泛的研究,F(xiàn)leishman等[4]提出局部鄰域格網(wǎng)頂點(diǎn)法線向量濾波的去噪算法,先計(jì)算法向量,再由法向量值決定去噪強(qiáng)度,該算法有較好的平滑效果,但運(yùn)算效率較低;蘇志勛等[5]提出了一種基于法向修正的點(diǎn)云平滑算法,此算法適用于少量噪聲點(diǎn)的情況,但當(dāng)模型中噪聲點(diǎn)較多時(shí),法向量修正的偏差會(huì)影響點(diǎn)云平滑效果;曹爽等[6]將改進(jìn)的移動(dòng)最小二乘法去噪擴(kuò)展到三維空間,由鄰域點(diǎn)之間的相關(guān)系數(shù)計(jì)算權(quán)值向量,由向量判別平曲,從而去除噪聲,該方法具有較好的魯棒性;王金志等[7]針對(duì)點(diǎn)云噪聲在尺寸上的特點(diǎn),將其分為大尺寸噪聲和小尺寸噪聲,大尺寸噪聲采用統(tǒng)計(jì)濾波的方法去除,小尺寸噪聲則采用雙邊濾波的方法進(jìn)行平滑。
在三維激光點(diǎn)云精簡方面,相關(guān)的研究有:Martin等[8]提出,將全部點(diǎn)云映射到一網(wǎng)格平面,將點(diǎn)云均勻分配到其中,此時(shí)可將原始數(shù)據(jù)替換為網(wǎng)格中值點(diǎn),但在進(jìn)行精簡的過程中,并沒有分析點(diǎn)云特征,會(huì)導(dǎo)致部分細(xì)節(jié)特征丟失;袁小翠等[9]以高斯映射為依據(jù)實(shí)現(xiàn)點(diǎn)云聚類,把所有聚類劃分為平坦區(qū)域、非平坦區(qū)域,再多次細(xì)劃非平坦區(qū)域,由聚類中心點(diǎn)代替聚類所有點(diǎn);張雨禾等[10]提出基于泊松分布進(jìn)行點(diǎn)云精簡,先判斷每個(gè)點(diǎn)云在等距離上的法向量,再根據(jù)法向量的變化得出因子檢測曲率的大小,對(duì)不同的曲率平面差別進(jìn)行精簡。
常見點(diǎn)云算法中,點(diǎn)云去噪與精簡分開進(jìn)行,運(yùn)算量大。課題組提出一種基于曲率判別的點(diǎn)云去噪與精簡統(tǒng)一的算法,首先估算點(diǎn)云的法向量,依據(jù)曲率對(duì)點(diǎn)云進(jìn)行分類,對(duì)不同區(qū)域采用不同的去噪方法,然后依據(jù)曲率對(duì)點(diǎn)云進(jìn)行不均勻精簡,達(dá)到較高精簡率的同時(shí)保留點(diǎn)云細(xì)節(jié)信息。
主成分分析法(Principal Components Analysis,PCA)估算點(diǎn)云的法向量如下:設(shè)P為所有點(diǎn)云數(shù)據(jù)的集合,P={P1,P2,…,Pn},其中點(diǎn)云總數(shù)為n,任一點(diǎn)Pi的K鄰域的點(diǎn)集合為:Pk={Pk1,Pk2,…,Pkk},G表示鄰域點(diǎn)云的重心,那么:
點(diǎn)Pi的協(xié)方差矩陣C定義為:
協(xié)方差矩陣C是一個(gè)對(duì)稱的半正定矩陣,求解下面方程:
可以得到協(xié)方差矩陣C的三個(gè)特征值λ1,λ2,λ3,以及三個(gè)特征值所對(duì)應(yīng)的三個(gè)特征向量α1,α2,α3。假設(shè)大小λ1<λ2<λ3,那么λ1為最小特征值,λ1所對(duì)應(yīng)的特征向量α1就是點(diǎn)Pi的K鄰域模擬的點(diǎn)云虛擬平面的法向量。
在Matlab中采用PCA計(jì)算出的點(diǎn)云向量如圖1所示:(a)為整體點(diǎn)云中每個(gè)點(diǎn)與所對(duì)應(yīng)法向量;(b)為圖(a)圈中的放大圖。一個(gè)個(gè)點(diǎn)組成點(diǎn)云,點(diǎn)向外的小箭頭是各個(gè)點(diǎn)擬合平面的法向量。整體上看,圖中各點(diǎn)的法向量方向和點(diǎn)所在鄰域平面基本呈垂直狀態(tài),說明PCA對(duì)于點(diǎn)云法向量的估計(jì)有較好的效果。
圖1 點(diǎn)云向量示意圖
為了有效進(jìn)行后續(xù)的去噪與精簡算法,同時(shí)達(dá)到較好的特征保留效果,需要先將三維點(diǎn)云劃分為平緩區(qū)域和特征區(qū)域。課題組采用基于點(diǎn)云平均曲率的方法對(duì)三維點(diǎn)云數(shù)據(jù)進(jìn)行鄰域劃分。假設(shè)任意點(diǎn)Qi處的平均曲率為Hi,則定義采樣點(diǎn)在k近鄰域內(nèi)的局部特征權(quán)值如式(4)所示:
其中H為采樣點(diǎn)鄰域內(nèi)的平均曲率:
根據(jù)點(diǎn)云的實(shí)際情況,首先設(shè)定閾值M,若任意點(diǎn)Q處的局部特征權(quán)值小于設(shè)定閾值M,則判定該點(diǎn)位于平緩區(qū)域;如果若任意點(diǎn)Q處的局部特征權(quán)值大于設(shè)定閾值M,則判定該點(diǎn)位于特征區(qū)域。
對(duì)于平滑區(qū)域,曲率變化較小,采用一種基于采樣點(diǎn)到近鄰點(diǎn)平均距離的統(tǒng)計(jì)濾波算法,可以去除遠(yuǎn)離該區(qū)域的離散點(diǎn)。統(tǒng)計(jì)濾波算法統(tǒng)計(jì)點(diǎn)云數(shù)據(jù)中任一被查詢點(diǎn)在其鄰域內(nèi)所有點(diǎn)集之間的距離并處理,設(shè)三維點(diǎn)云數(shù)據(jù)模型中的任意一點(diǎn)記為,i=1,2,3,…,n(n為點(diǎn)云總數(shù))。P的K鄰域內(nèi)任意點(diǎn) ,j=1,2,3,…,K(K為鄰域內(nèi)點(diǎn)云數(shù)),Pi到Pj的距離為Sj,則:
認(rèn)為得到的結(jié)果滿足正態(tài)分布,均值以及標(biāo)準(zhǔn)差分別為S和σ,Pi到其鄰域每個(gè)點(diǎn)的平均距離S為:
鄰域距離的標(biāo)準(zhǔn)差σ為:
正態(tài)分布形狀由均值S和標(biāo)準(zhǔn)差σ決定,定義S+σ小于標(biāo)準(zhǔn)范圍的點(diǎn)為有效點(diǎn),平均距離在標(biāo)準(zhǔn)范圍之外的點(diǎn)可被定義為離散點(diǎn),并從數(shù)據(jù)集中刪除。
拉普拉斯濾波法是一種優(yōu)秀的點(diǎn)云去噪算法,其原理是對(duì)三維點(diǎn)云的每一個(gè)點(diǎn)采用Laplace算子,Laplace算子定義如下所示:
設(shè)Pi為點(diǎn)云中任意一個(gè)待處理點(diǎn):
對(duì)上式積分后,模型曲面中存在的小的變化特征、鄰點(diǎn)云噪聲數(shù)據(jù)就會(huì)快速發(fā)散到該點(diǎn)的鄰域中,通過這種方法來提高模型曲面平整度。顯式歐拉積分法表達(dá)式:
采用該方法處理每一個(gè)點(diǎn)云數(shù)據(jù),使其逐步移動(dòng)到鄰域的質(zhì)心處:
其中,Qj為Pi的第j個(gè)鄰域點(diǎn),λ為較小的正數(shù),點(diǎn)云濾波中wj為鄰近點(diǎn)至點(diǎn)Pi的距離的倒數(shù)。采樣點(diǎn)進(jìn)行若干次迭代后,使高頻采樣點(diǎn)逐漸向其鄰域范圍內(nèi)擴(kuò)散,從而消除噪聲。
課題組采用不均勻網(wǎng)格法進(jìn)行點(diǎn)云精簡,其思想是在點(diǎn)云平緩區(qū)域采用步長較大的網(wǎng)格,在點(diǎn)云數(shù)據(jù)起伏較大或是特征明顯的地方將網(wǎng)格再次細(xì)分,采用步長較小的網(wǎng)格,每個(gè)網(wǎng)格只保留中心點(diǎn),在特征區(qū)域會(huì)保留更多的點(diǎn)云,以描繪點(diǎn)云的細(xì)節(jié),在平緩區(qū)域可以實(shí)現(xiàn)較高的精簡率。由于已經(jīng)將點(diǎn)云劃分成了平緩區(qū)域和特征區(qū)域,只需要在平緩區(qū)域和特征區(qū)域用不同步長網(wǎng)格進(jìn)行精簡即可。
為了驗(yàn)證本算法,對(duì)兔子點(diǎn)云模型進(jìn)行實(shí)驗(yàn)。首先,在原始點(diǎn)云中加入少量的白噪聲,得到帶有噪聲點(diǎn)的待處理點(diǎn)云,再運(yùn)行算法,得到去噪精簡后的點(diǎn)云數(shù)據(jù),如圖2所示。圖2(a)為原始兔子點(diǎn)云數(shù),圖2(b)為去噪精簡運(yùn)算后的點(diǎn)云,可以很直觀地看到點(diǎn)云數(shù)量的減少,說明有較好的精簡效果。為了更客觀地說明點(diǎn)云的去噪效果,利用Geomagic軟件對(duì)原始點(diǎn)云和去噪精簡后的點(diǎn)云分別進(jìn)行封裝,得到點(diǎn)云立體模型,由軟件可以計(jì)算出兩個(gè)立體模型之間的偏差。從表1的數(shù)據(jù)可以看出,課題組所用的方法誤差較小,很好地保持了原模型的特征,既避免產(chǎn)生過度光滑導(dǎo)致模型失真,又較好地去除了噪聲點(diǎn)云。
圖2 點(diǎn)云對(duì)比
表1 點(diǎn)云模型偏差與精簡效果
課題組提出一種基于曲率判別的點(diǎn)云去噪與精簡統(tǒng)一的算法。首先通過主成分分析法估算點(diǎn)云的法向量,由此對(duì)點(diǎn)云進(jìn)行分類;然后對(duì)于曲率較小的平滑區(qū)域采用統(tǒng)計(jì)濾波算法處理,對(duì)于曲率較大的特征區(qū)域采用拉普拉斯濾波法進(jìn)行濾波;最后依據(jù)曲率對(duì)點(diǎn)云進(jìn)行不均勻精簡,曲率較小的平滑區(qū)精簡率較高,曲率較大的特征區(qū)精簡率較低,達(dá)到較高精簡率的同時(shí)保留點(diǎn)云細(xì)節(jié)信息。對(duì)兔子點(diǎn)云模型用算法進(jìn)行實(shí)驗(yàn),結(jié)果表明:課題組提出的算法有較好的去噪效果,點(diǎn)云誤差較小,精簡效果良好。