駱 磊,馬榮貴,馬 園
(長(zhǎng)安大學(xué) 信息工程學(xué)院,陜西 西安 710064)
三維光學(xué)掃描技術(shù)能快速獲取復(fù)雜曲面的點(diǎn)云模型[1-2],應(yīng)用廣泛。目前車輛輪廓檢測(cè)主要使用激光掃描技術(shù)[3],其過程為車輛低速通過龍門架,由安裝在龍門架兩端的測(cè)距雷達(dá)掃描車輛,獲取三維點(diǎn)云數(shù)據(jù)。由于兩端測(cè)距雷達(dá)水平方向距離車輛較近,并且高度較高,導(dǎo)致激光對(duì)車窗掃描時(shí)的入射角過大,測(cè)量點(diǎn)嚴(yán)重偏離反射面,在車窗處產(chǎn)生特殊噪聲點(diǎn)。文中針對(duì)這類特殊噪聲點(diǎn),提出車窗三維點(diǎn)云數(shù)據(jù)修復(fù)算法。
對(duì)車窗處的點(diǎn)云數(shù)據(jù)重建有兩方面工作,一是去除特殊噪聲點(diǎn),二是點(diǎn)云孔洞修復(fù)。在去除特殊噪聲點(diǎn)方面,因?yàn)檫@種數(shù)據(jù)的獲取方式現(xiàn)階段只用來(lái)獲取車輛的長(zhǎng)寬高數(shù)據(jù),而特殊噪聲點(diǎn)向車體內(nèi)側(cè)凹陷,不影響數(shù)據(jù)的檢測(cè),所以普遍做法是對(duì)特殊噪聲點(diǎn)不做處理。因特殊噪聲點(diǎn)與正常點(diǎn)有著相似的性質(zhì),文中使用點(diǎn)云分割方式去除噪聲點(diǎn),文獻(xiàn)[4]中使用譜聚類方法將點(diǎn)云模型過分割,對(duì)點(diǎn)云數(shù)據(jù)有很好的分割效果,但是存在構(gòu)造相似度矩陣和確定尺度參數(shù)σ等問題,不能很好地適應(yīng)于文中的車輛三維點(diǎn)云數(shù)據(jù)。文獻(xiàn)[5]中采用主成分分析法和局部二次曲面擬合法對(duì)點(diǎn)云模型進(jìn)行微分幾何信息估算,并利用雙閾值檢測(cè)方法對(duì)散亂點(diǎn)云的特征信息進(jìn)行提取,該算法可以將特殊噪聲點(diǎn)分割出來(lái),但是需要確定閾值。文中提出使用聚類算法確定閾值,并用擬合方式分割特殊噪聲點(diǎn)。在點(diǎn)云空洞修復(fù)方面,已有很多算法[6-12],文獻(xiàn)[11]中提出一種基于八鄰域深度差的算法提取點(diǎn)云孔洞邊界,但點(diǎn)云數(shù)據(jù)的獲取方式會(huì)導(dǎo)致車輛的三維點(diǎn)云數(shù)據(jù)上下疏密程度不同,不能有效提取出車窗邊界。文獻(xiàn)[12]中提出了一種基于SFM的三維點(diǎn)云孔洞修補(bǔ)算法,可以準(zhǔn)確地恢復(fù)復(fù)雜曲面形狀,但是需要較高精度的SFM數(shù)據(jù)集。文獻(xiàn)[13]中提出了一種基于徑向基函數(shù)的孔洞修補(bǔ)算法,該算法對(duì)復(fù)雜曲面有很好的修補(bǔ)效果。文中對(duì)八鄰域深度差算法進(jìn)行改進(jìn),提取邊界,用徑向基函數(shù)重建車窗數(shù)據(jù)。
綜上所述,文中根據(jù)文獻(xiàn)[4-5]提出結(jié)合聚類算法和曲面擬合的方法去除特殊噪聲點(diǎn),根據(jù)文獻(xiàn)[11]提出改進(jìn)的八鄰域深度差方法提取車窗邊界,根據(jù)文獻(xiàn)[12-13]使用基于徑向基函數(shù)的方式對(duì)車窗進(jìn)行數(shù)據(jù)修復(fù)。主要?jiǎng)?chuàng)新部分在于結(jié)合了聚類算法和曲面擬合的方法去除特殊噪聲點(diǎn),并改進(jìn)了八鄰域深度差方法提取車窗邊界。具體流程如圖1所示。
圖1 車窗點(diǎn)云數(shù)據(jù)修復(fù)流程
文中采用在龍門架裝載測(cè)距雷達(dá)的方式,對(duì)通過的車輛進(jìn)行掃描,獲得點(diǎn)云數(shù)據(jù)。雷達(dá)測(cè)距數(shù)據(jù)經(jīng)過初步提取,去噪,獲得車輛點(diǎn)云數(shù)據(jù),記點(diǎn)云數(shù)據(jù)集合為P,其中x軸方向?yàn)檐囕v寬度方向,車輛的最右端為0,最左端為最大值;y軸方向?yàn)檐囕v長(zhǎng)度方向,車輛的最前端為0,最后端為最大值;z軸方向?yàn)檐囕v高度方向,車輛的最低點(diǎn)為0,最頂點(diǎn)為最大值;坐標(biāo)系原點(diǎn)為車輛的右前底點(diǎn),其中所有數(shù)據(jù)的單位均為cm。這里以圖2所示的面包車為例,可以看出車窗處有許多噪聲點(diǎn),緊鄰著車窗分布,另外點(diǎn)云數(shù)據(jù)由上到下,成密度由稠密逐漸變稀疏:
圖2 汽車三維點(diǎn)云圖
車輛的點(diǎn)云數(shù)據(jù)信息量較小,只有三維坐標(biāo)信息,為后續(xù)對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行處理,豐富點(diǎn)云數(shù)據(jù)的信息,對(duì)數(shù)據(jù)點(diǎn)進(jìn)行法矢計(jì)算,這里用PCA(principal component analysis)算法[9-13]計(jì)算數(shù)據(jù)點(diǎn)的法矢。
PCA即主成分分析法,用來(lái)計(jì)算點(diǎn)云數(shù)據(jù)的法矢。對(duì)于道路的點(diǎn)云數(shù)據(jù)集合P,由于它是無(wú)序的,所以在對(duì)集合P進(jìn)行處理之前,需要為其建立拓?fù)潢P(guān)系,文中使用k-d樹(k-dimensional樹的簡(jiǎn)稱)[14-16]數(shù)據(jù)結(jié)構(gòu)建立點(diǎn)云之間的拓?fù)潢P(guān)系。之后用PCA計(jì)算法矢,計(jì)算方式如下:
設(shè)集合P中的點(diǎn)pi的k鄰域點(diǎn)集為Nk(pi),構(gòu)造關(guān)于點(diǎn)pi的3×3協(xié)方差矩陣,如式(1)所示:
(1)
其中,p為數(shù)據(jù)點(diǎn)pi及其k鄰域所構(gòu)成集合的質(zhì)心,矩陣C表示點(diǎn)集Nk(pi)的點(diǎn)的分布情況,即鄰域點(diǎn)與質(zhì)心點(diǎn)p的偏離程度。矩陣C為對(duì)稱半正定矩陣,所以有3個(gè)非負(fù)實(shí)數(shù)特征值,設(shè)為λ0,λ1,λ2,且λ0≤λ1≤λ2,其對(duì)應(yīng)的特征向量分別為v0,v1,v2。最小特征值λ0對(duì)應(yīng)的特征向量v0即可近似為點(diǎn)pi的法矢ni。
對(duì)含有特殊噪聲點(diǎn)的車窗單獨(dú)進(jìn)行處理,為更加清晰地說明特殊噪聲點(diǎn),這里將車輛側(cè)面與特殊噪聲點(diǎn)分割出來(lái),如圖3(a)所示,其橫坐標(biāo)為車輛三維數(shù)據(jù)的y軸,其縱坐標(biāo)為車輛三維數(shù)據(jù)的z軸,通過側(cè)視圖可以看到車窗下方的點(diǎn)云密度較大,是因?yàn)楸緫?yīng)在車窗處的點(diǎn)由于光學(xué)原因,投射到車窗下方。通過車側(cè)面的正視圖如圖3(b)所示,灰圈中的點(diǎn)云數(shù)據(jù)即為特殊噪聲點(diǎn),這類噪聲點(diǎn)很多,而且連續(xù),如果不去除非常影響車輛三維重建,具體的噪聲點(diǎn)形式可以通過車輛點(diǎn)云數(shù)據(jù)的一個(gè)斷面進(jìn)行展示,結(jié)果如圖3(c)所示,兩個(gè)灰圈中的點(diǎn)則為前面敘述中的特殊噪聲點(diǎn),呈現(xiàn)向內(nèi)側(cè)下方凹陷的形狀,其距離車輛側(cè)面間隔一小段距離,文中利用這一點(diǎn),使用聚類提取,擬合曲面的方法,將車輛側(cè)面與特殊噪聲點(diǎn)分割開來(lái)。
圖3 車窗處噪聲點(diǎn)說明圖
通常情況下,大貨車、鉤車以及半掛等大型車輛,不像小車整體都有車窗,而是僅車頭部分有車窗,所以在進(jìn)行數(shù)據(jù)處理的時(shí)候,像小車這樣前中后都有車窗的車輛,對(duì)其整體進(jìn)行處理,而特殊大型車輛僅處理車頭部分。聚類算法可以很好地將擁有同一類特性的點(diǎn)進(jìn)行提取,經(jīng)過分析,車輛側(cè)面擁有相近的x值和相近的法矢,利用x值和法矢即可聚類提取車輛側(cè)面。進(jìn)一步,對(duì)于車輛側(cè)面,如圖3(b)所示,為中間向外微凸的拱形,因?yàn)樾毕蛏系姆ㄊ负托毕蛳碌姆ㄊ钢g的差異會(huì)比較大,所以僅僅使用法矢不能將整個(gè)側(cè)面提取[17-21],但是這類差異又不是希望考慮的,又因?yàn)檐囕v側(cè)面與其他面相比法矢的x方向差異最為明顯,所以僅用法矢的x方向作為聚類時(shí)的數(shù)據(jù)即可。記車輛點(diǎn)云數(shù)據(jù)的x值為聚類數(shù)據(jù)集合的u值,法矢的x方向的值為聚類數(shù)據(jù)集合的v值,即集合Qcluster={(u,v)|u∈P,v∈n}。另外因?yàn)閤信息與法矢的信息比例不同,所以要對(duì)x數(shù)據(jù)進(jìn)行歸一化,將范圍限定在0到1,則u值的計(jì)算公式如式(2)所示:
(2)
其中,X為點(diǎn)云所有x方向數(shù)據(jù)的集合,x為集合X中的一個(gè)值。得到標(biāo)準(zhǔn)化的數(shù)據(jù)集合Qcluster后,使用多滑動(dòng)窗口的均值漂移算法[22-24]確定中心點(diǎn),其算法如下:
(1)在集合Qcluster中隨機(jī)選取n個(gè)點(diǎn)作為初始中心點(diǎn)C1,C2,…,Cn,其半徑為r的圓球作為滑動(dòng)窗口。
(3)計(jì)算密度變化量與新密度的比值,如果小于額定值則認(rèn)為沒有變化,執(zhí)行步驟4,否則再執(zhí)行步驟2。
(4)將所有的窗口作比較,選擇出密度最大的不重疊窗口,將其中心點(diǎn)作為結(jié)果。
因?yàn)閷?duì)數(shù)據(jù)進(jìn)行了歸一化,所以滑動(dòng)窗口的半徑可以確定下來(lái),半徑r的取值越大則對(duì)車輛側(cè)面數(shù)據(jù)的要求越寬泛,越小則越嚴(yán)格。文中r依據(jù)數(shù)據(jù)點(diǎn)的分布密度來(lái)確定,即數(shù)據(jù)點(diǎn)到距離其最近的四個(gè)點(diǎn)的距離來(lái)確定r值,公式如式(3)所示:
(3)
其中,X為點(diǎn)云數(shù)據(jù)中所有x值的集合,Di為數(shù)據(jù)點(diǎn)pi的最近鄰4個(gè)點(diǎn)距離的集合。
對(duì)中心點(diǎn)數(shù)量的選取,過小則有可能無(wú)法確定到真正的高密度中心,過大則影響計(jì)算速度。通常情況下n取6到10就可以將密度最大的中心點(diǎn)確定下來(lái),這里為了使結(jié)果準(zhǔn)確穩(wěn)定,取n=10。通過確定的聚類中心,可以得到車輛側(cè)面的數(shù)據(jù)范圍,其中Umax表示車輛側(cè)面數(shù)據(jù)的x值上限,Umin表示車輛側(cè)面數(shù)據(jù)的x值下限,Vmax表示道路數(shù)據(jù)法矢的x值上限,Vmin表示道路數(shù)據(jù)法矢的x值下限,計(jì)算公式如式(4)所示:
其中,r即為式(4)中確定的聚類窗口半徑,利用上述約束條件,對(duì)車輛點(diǎn)云數(shù)據(jù)進(jìn)行約束,提取出車輛側(cè)面的數(shù)據(jù)信息。
但是通過聚類算法提取出的只是部分車輛側(cè)面數(shù)據(jù),仍有一些點(diǎn)受噪聲干擾,其法矢的方向并不同于大部分點(diǎn),所以不會(huì)被聚類算法提取,這里使用曲面擬合的方式,對(duì)現(xiàn)有的準(zhǔn)確的車輛側(cè)面點(diǎn)云數(shù)據(jù)進(jìn)行數(shù)據(jù)擬合。曲面擬合[25-27]既可以將車輛側(cè)面全部提取出來(lái),也可以避免一些噪聲點(diǎn)的干擾。根據(jù)實(shí)際觀察,所有車輛側(cè)面在豎直方向都有一定的彎曲,而水平方向基本較小,所以,這里做擬合函數(shù)x=f(y,z),其中y、z均為2次擬合,此時(shí)R-square=0.873 7,擬合效果符合要求,如果再向上增加擬合次數(shù),不僅R-square增長(zhǎng)較小,而且有可能會(huì)出現(xiàn)過擬合情況,所以選用x與y均為2次的曲面擬合。為確認(rèn)曲面擬合的效果,對(duì)多種車輛側(cè)面進(jìn)行曲面擬合,其擬合結(jié)果如表1所示。
表1 車輛側(cè)面擬合效果對(duì)比
使用曲面擬合的方式對(duì)車窗進(jìn)行修復(fù),為驗(yàn)證曲面擬合的可行性,擬合的效果用R-square和RMSE作為判斷標(biāo)準(zhǔn),則四種車輛側(cè)面的擬合效果如表1所示。從表1可以看出,四種車輛左右側(cè)面擬合的R-square均大于0.8,而左右側(cè)面擬合的RMSE均小于20 mm,說明使用的擬合函數(shù)可以很好地對(duì)車輛側(cè)面進(jìn)行擬合,且誤差較小。
圖4 車窗處噪聲點(diǎn)說明圖
利用擬合出的曲面,對(duì)車輛點(diǎn)云數(shù)據(jù)進(jìn)行處理,同樣以面包車為例,得到如圖4所示的車輛側(cè)面。如圖4(a)所示,灰色的點(diǎn)為噪聲點(diǎn),黑色的點(diǎn)為車輛側(cè)面的點(diǎn),利用曲面擬合的方式,不僅能夠把車窗處的噪聲點(diǎn)去除,而且能夠把在提取車輛數(shù)據(jù)時(shí),摻入的地面點(diǎn)去除,去除效果如圖4(b)所示,可以看出,車輛側(cè)面效果很好,車窗處特殊噪聲點(diǎn)都已經(jīng)去除了。
8鄰域深度差的方式在提取車窗邊界時(shí)存在兩個(gè)問題,因?yàn)檐囕v的點(diǎn)云數(shù)據(jù)由左右兩側(cè)龍門架上的測(cè)距雷達(dá)掃描獲取,所以點(diǎn)云數(shù)據(jù)由上到下的疏密程度是不一樣的,簡(jiǎn)單地使用8鄰域深度差的話,會(huì)將密度稀疏的點(diǎn)云數(shù)據(jù)作為孔洞邊界提取,所以這里需要將8鄰域深度差算法進(jìn)行改進(jìn)。
改進(jìn)的八鄰域深度差算法首先對(duì)點(diǎn)云沿深度方向進(jìn)行垂直投影,即對(duì)三維點(diǎn)云數(shù)據(jù)的yoz平面投影,對(duì)投影點(diǎn)進(jìn)行柵格數(shù)據(jù)組織,統(tǒng)計(jì)投影點(diǎn)坐標(biāo)的最大最小值ymin,ymax,zmin,zmax,根據(jù)柵格的劃分次數(shù)m,計(jì)算每個(gè)柵格的大小為a*b,其中a,b的計(jì)算公式如式(5)、式(6)所示:
(5)
(6)
將各投影點(diǎn)分配到各個(gè)柵格并且對(duì)其進(jìn)行編號(hào):首先利用當(dāng)前投影點(diǎn)的坐標(biāo)(y,z)和柵格的大小a、b計(jì)算該點(diǎn)所在柵格的行r和列c,記該點(diǎn)所在柵格的編號(hào)為G(r,c),其中r,c的計(jì)算公式如式(7)、式(8)所示:
(7)
(8)
對(duì)于任意柵格G(i,j),統(tǒng)計(jì)柵格內(nèi)投影點(diǎn)的數(shù)目,若投影點(diǎn)數(shù)目為零,則將該柵格的深度值設(shè)定為h=0;若柵格內(nèi)投影點(diǎn)數(shù)目大于0,則將該柵格的深度設(shè)定為h=1。對(duì)于任意深度值不為0的柵格G(i,j),計(jì)算其8鄰域的深度值與其延伸方向的深度值的和s,如果存在結(jié)果s為0,則說明該柵格為邊緣柵格,反之則不是。其中s的計(jì)算公式如式(9)所示:
s=h(i+c1,j+c2)+h(i+2c1,j+2c2),c1,c2∈{-1,0,1}
(9)
其中,h(i,j)表示柵格G(i,j)的深度值。
文中利用孔洞邊界點(diǎn)和它的鄰域信息,建立基于徑向基函數(shù)的隱式曲面,空間點(diǎn)云集合Q={q1,q2,…,qn},分別對(duì)應(yīng)約束值為{h1,h2,…,hn},如果能構(gòu)造函數(shù)f(r)使得每個(gè)點(diǎn)均滿足等式F(qi)=hi,那么方程F(qi)=0就可以表示一個(gè)隱式曲面。該隱式曲面要求通過的點(diǎn)稱為插值約束點(diǎn),而不要求通過的點(diǎn)稱為附件約束點(diǎn),這里以車窗邊界點(diǎn)及車窗邊界點(diǎn)的5個(gè)鄰域車窗點(diǎn)作為插值約束點(diǎn),記為Q={q1,q2,…,qn},在插值約束點(diǎn)處沿插值約束點(diǎn)的法矢方向0.3長(zhǎng)度處,計(jì)算附加約束點(diǎn)Q={qn+1,qn+2,…,q2n},則表達(dá)式如式(10)、式(11)所示:
F(qi)=hi=0,i=1,2,…,n
(10)
F(qi)=hi(i=n+1,n+2,…,2n)(取hi=1)
(11)
結(jié)合式(10)、式(11)構(gòu)建基于徑向基函數(shù)的隱式曲面:
(12)
其中,qj表示建立曲面所需的采樣點(diǎn),r表示建立曲面時(shí)通過的任意散亂點(diǎn),ωi為對(duì)應(yīng)每個(gè)采樣點(diǎn)的權(quán)值,P(r)表示P(r)=p0+p1x+p2y+p3z,φ(r-qi)的徑向基函數(shù),一般情況下,在對(duì)空間散亂點(diǎn)進(jìn)行插值時(shí)經(jīng)常用的基函數(shù)形式φ(r)=|r|3。對(duì)于三維空間中的任意兩個(gè)散亂點(diǎn),表達(dá)式如式(13)所示:
φ(qi-qj)=|qi-qj|3=((qix-qjx)2+(qiy-qjy)2+(qiz-qjz)2)3/2
(13)
為求解權(quán)值和一階多項(xiàng)式的系數(shù)值,除有兩類約束點(diǎn)所給定的約束值條件,還需要滿足正交條件:
(14)
由此建立線性方程組AX=B。因?yàn)橄∈杈仃嘇是插值約束點(diǎn)和附加約束點(diǎn)的插值條件決定的半正定矩陣,所以該方程有唯一解,X是要求的權(quán)值ωi和一階多項(xiàng)式的稀疏矩陣(p0,p1,p2,p3),B是約束值為hj的列向量,通過高斯消元法可以求出方程的解。
聯(lián)立式(12)~式(14),采用高斯消元法解方程組,求解出插值約束點(diǎn)的權(quán)值和一階多項(xiàng)式的系數(shù),從而到曲面的隱式方程。
(z-qjz)2)3/2+p0+p1x+p2y+p3z
(15)
之后采用梯度下降法對(duì)車窗點(diǎn)云數(shù)據(jù)進(jìn)行填充,梯度下降法的一半形式為:
R1=R0-γ·F
(16)
對(duì)四種車輛車窗重建的效果如圖5所示,其中灰色部分為重建后車窗的數(shù)據(jù)點(diǎn),黑色部分為車輛的數(shù)據(jù)點(diǎn),所在坐標(biāo)系的單位均為mm。圖5(a)為面包車,一個(gè)側(cè)面有三個(gè)車窗分別為前中后,這里以前車窗為例進(jìn)行放大,通過放大圖可以看到,車窗處已經(jīng)沒有特殊噪聲點(diǎn),且修復(fù)效果較好,車窗整體沒有空白處,達(dá)到車窗重建的目的;圖5(b)為半掛,可以看到修復(fù)效果較好,只是右上角有小塊缺損,因?yàn)槿睋p處有兩個(gè)點(diǎn)被提取為車窗邊界點(diǎn),所以會(huì)以此為邊界,而將兩個(gè)點(diǎn)上面的部分作為車輛點(diǎn)云數(shù)據(jù)不做處理;圖5(c)為小型鉤車,對(duì)于比較方正的車窗,車窗的修復(fù)效果很好;圖5(d)為大貨車,有兩個(gè)車窗,兩個(gè)車窗之間的部分和前方車窗部分,其點(diǎn)云數(shù)據(jù)部分缺損,但仍不影響車窗數(shù)據(jù)的重建且修復(fù)效果較好。
圖5 四種車輛車窗修復(fù)結(jié)果
通過上述實(shí)驗(yàn)結(jié)果,可以得到結(jié)論:聚類算法結(jié)合曲面擬合的方法可以很好地去除車窗處由于光學(xué)原因產(chǎn)生的特殊噪聲點(diǎn),改進(jìn)的8鄰域算法能夠?qū)吔缣崛∮幸欢ǖ目垢蓴_能力,基于徑向基函數(shù)的孔洞修補(bǔ)算法可以很好地重建車窗數(shù)據(jù)。綜上所述,該算法可以對(duì)不同類型車輛的車窗進(jìn)行數(shù)據(jù)重建,且效果良好。但仍有可以改進(jìn)之處,比如為提高精度,可以先提取出車窗邊框,以車窗周圍點(diǎn)作為擬合點(diǎn),進(jìn)行曲面擬合去除噪聲點(diǎn),理論上可以提高擬合精度,需要后續(xù)進(jìn)行實(shí)驗(yàn)驗(yàn)證。