張藝真,孫志毅,柏艷紅,王 銀
(太原科技大學(xué) 電子信息工程學(xué)院,太原030024)
基于雷達掃描的三維重構(gòu)技術(shù),可以較好的實現(xiàn)工程裝備作業(yè)場景的恢復(fù),對工程應(yīng)用施工過程中周圍環(huán)境信息的分析、工程裝備的自主作業(yè)都具有很大的意義[1]。但在掃描獲取點云數(shù)據(jù)時,往往由于被測物體表面復(fù)雜的拓撲結(jié)構(gòu)或者外部遮擋等因素,導(dǎo)致采集回來的點云數(shù)據(jù)含有孔洞,影響后續(xù)重構(gòu)效果[2]。因此,為了能夠準(zhǔn)確的恢復(fù)出所需物體的形貌特征,需要對點云孔洞進行修補。目前點云孔洞修補基本為兩種思路:一種是在三角網(wǎng)格模型的基礎(chǔ)上。例如基于變形法的點云孔洞修補方法[3],基于邊界特征增長的孔洞修補算法[4],基于泊松方程的三角形網(wǎng)格無縫拼接方法[5]。這些方法通過對散亂點云的三角化處理,完成孔洞數(shù)據(jù)補測。但是當(dāng)遇到點云數(shù)據(jù)量較大且分布不均勻的情況時,往往會出現(xiàn)計算量大,修復(fù)效果較差的問題。另一種則是在散亂點云模型的基礎(chǔ)上進行修復(fù)。例如基于前饋神經(jīng)網(wǎng)絡(luò)的孔洞修補算法[6],基于徑向基函數(shù)的殘缺點云數(shù)據(jù)修復(fù)[7],基于徑向基函數(shù)的三角網(wǎng)格曲面孔洞修補算法[8],文獻[7]通過基于徑向基函數(shù)的插值曲面實現(xiàn)殘缺點云修補,但逼近二次曲面點列的誤差難以控制[9],文獻[8]通過對孔洞區(qū)域內(nèi)不斷三角化,來增加孔洞數(shù)據(jù)填充點,但較為復(fù)雜,計算量大。通過對已有補洞算法進行分析,發(fā)現(xiàn)徑向基函數(shù)能夠取得較好的補洞效果。
本文以散亂點云模型為基礎(chǔ),在孔洞二維特征平面生成孔洞填充數(shù)據(jù)點,然后用訓(xùn)練好的RBF網(wǎng)絡(luò),預(yù)測孔洞區(qū)域二維平面填充數(shù)據(jù)點在三維隱式曲面上的數(shù)值,實現(xiàn)孔洞區(qū)域的數(shù)據(jù)修復(fù)。通過算例,驗證了該方法的實用性。
邊緣點的提取需要滿足兩個條件,其一是判斷在某處法向量是否發(fā)生突變,另外還需要判斷該點周圍的鄰域點是否均勻分布。如圖1所示,首先需要尋找某點的k鄰域點S0,S1,S2,…,Sk-1,S0為采樣點自身,分別計算得到S0的法向量n0,及其k鄰域的法向量n1,n2,…,nk-1,若n0與其鄰近點的法向量n1,n2,…,nk-1的夾角θ大于標(biāo)準(zhǔn)偏差,那么說明該點法向量變化劇烈,暫時認定該點為邊緣點。
圖1 S0及其k鄰域點
另外仍需判斷S0周圍的鄰域點是否均勻分布,將S0與其鄰域點的最小二乘特征平面作為投影平面,S0,S1,S2,…,Sk-1在該平面的投影點依次是S′0,S′1,S′2,…,S′k-1,如圖2所示,依次連接S′0S′1,S′0S′2,…,S′0S′6,并且S′0S′1與S′0S′4,…,S′0S′1與S′0S′5之間的夾角依次是φ1,φ2,…,φ6,計算兩兩相鄰夾角之間的夾角差,如果差值大于閾值,則說明S0周圍的鄰域點偏向一側(cè)分布,確認S0是邊緣點。
圖2 S0及其k鄰域點投影圖
文獻[9]利用局部擴張思想,在孔洞區(qū)域內(nèi)不斷三角化增加數(shù)據(jù)填充點,雖然修復(fù)效果穩(wěn)定但計算量大,所以本文提出一種依據(jù)邊緣點信息并結(jié)合蒙特卡羅思想的孔洞數(shù)據(jù)點的填充算法,該算法更易實現(xiàn),填充效果較好。
最早的蒙特卡羅法的基本思想,旨在通過隨機化的方法計算積分,例如,對于式(1)所示的積分,可以將h(x)分解為函數(shù)f(x)與定義在(a,b)上均勻分布的概率密度函數(shù)p(x)的乘積,將求積分的問題轉(zhuǎn)換成求f(x)在p(x)分布上的均值,如式(2)所示。
(1)
(2)
此時,可以通過采集大量符合p(x)分布的樣本點x1,x2,…,xn,對樣本點對應(yīng)的函數(shù)值f(x1),f(x2),…,f(xn)求均值,如式(3)所示,從而解決式(1)的求積分問題。
(3)
本文受蒙特卡羅思想啟發(fā),借助計算機在孔洞二維特征平面內(nèi)均勻投撒大量數(shù)據(jù)點。以孔洞邊界點的分布密度為依據(jù),在平面內(nèi)沿x,y方向構(gòu)造網(wǎng)格,保留投撒在網(wǎng)格交點處的數(shù)據(jù)點,其余數(shù)據(jù)點刪除,完成孔洞區(qū)域的數(shù)據(jù)填充。算法步驟如下:
(1)如圖3所示,通過最小二乘法計算獲得孔洞邊界點的擬合平面π,將提取出來的三維孔洞邊界點投影在π上,多邊形P1P2P3P4P5為三維孔洞在擬合平面的投影。
圖3 孔洞數(shù)據(jù)點填充
(2)利用計算機在擬合平面π上均勻投撒大量數(shù)據(jù)點,孔洞多邊形P1P2P3P4P5內(nèi)外均布滿密集的數(shù)據(jù)點。
(3)在平面π上,沿著x軸分別尋找坐標(biāo)值xmin對應(yīng)的點P1和xmax對應(yīng)的點P3,沿著y軸分別尋找坐標(biāo)值ymin對應(yīng)的點P4和ymax對應(yīng)的點P2.連接點P1、P2、P3,沿孔洞邊界統(tǒng)計邊界線P1P2P3在x軸方向點的數(shù)量xn.連接點P2、P3、P4,沿著孔洞邊界統(tǒng)計邊界線P2P3P4在y軸方向點的數(shù)量yn.
(4)計算孔洞邊界點在x軸上的分布長度Lx,在y軸上的分布長度Ly.
Lx=xmax-xmin
(4)
Ly=ymax-ymin
(5)
(5)在孔洞多邊形P1P2P3P4P5內(nèi)構(gòu)造網(wǎng)格。分別在x軸方向和y軸方向求取相鄰兩點間隔的距離dx和dy.沿著x軸方向,以dx為間隔步長均勻取點。沿著y軸方向,以dy為間隔步長均勻取點,連接成線,相互交叉形成一張網(wǎng)格。
dx=Lx/xn
(6)
dy=Ly/yn
(7)
(6)判斷之前投撒點的合理性。篩選之前計算機投撒的點,如果投撒的數(shù)據(jù)點恰好處于網(wǎng)格的交點位置,那么保留為我們所需要的新增填充數(shù)據(jù)點,否則將剔除。
如圖4所示,是本文設(shè)計的RBF神經(jīng)網(wǎng)絡(luò)的拓撲結(jié)構(gòu)圖,隱層徑向基函數(shù)的基函數(shù)是高斯函數(shù)[10]。
圖4 RBF神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
函數(shù)的表達式為:
(8)
神經(jīng)網(wǎng)絡(luò)輸出為:
(9)
其中,RBF函數(shù)的寬度參數(shù)σi,中心Ci,輸出單元的權(quán)值wki全部從樣本中學(xué)習(xí)獲取。
本文設(shè)計的RBF神經(jīng)網(wǎng)絡(luò),包含2個輸入神經(jīng)元,1個輸出神經(jīng)元,x,y對應(yīng)孔洞邊緣特征點的x,y坐標(biāo)集合,z對應(yīng)孔洞邊緣特征點的z坐標(biāo)集合,以孔洞邊緣點為樣本,訓(xùn)練優(yōu)化RBF神經(jīng)網(wǎng)絡(luò)的參數(shù)。
可以用z=f(x,y)來表示物體孔洞區(qū)域的三維表面,在這里認為,訓(xùn)練好的RBF神經(jīng)網(wǎng)絡(luò)可以精確的映射樣本函數(shù)z=f(x,y),準(zhǔn)確地表示孔洞區(qū)域三維表面的函數(shù)形式[11]。
之前已經(jīng)在孔洞多邊形的二維特征平面內(nèi),獲得了與孔洞邊界周圍密度相一致的新的填充的數(shù)據(jù)點。訓(xùn)練好的RBF神經(jīng)網(wǎng)絡(luò),在特定誤差允許的情況下,認為可以準(zhǔn)確的反映孔洞殘缺區(qū)域的三維表面。因此,借助RBF神經(jīng)網(wǎng)絡(luò),將孔洞二維特征平面內(nèi)填充的數(shù)據(jù)點,調(diào)整到孔洞殘缺區(qū)域三維表面上對應(yīng)的位置,如圖5所示。分別將填充的數(shù)據(jù)點的x,y坐標(biāo)集合輸入到RBF神經(jīng)網(wǎng)絡(luò)的2個輸入神經(jīng)元中,網(wǎng)絡(luò)輸出則為殘缺區(qū)域內(nèi)補測數(shù)據(jù)點所對應(yīng)的三維表面上的z值,完成孔洞區(qū)域數(shù)據(jù)的修復(fù)。
圖5 填充點調(diào)整至三維表面
本文在64位windows系統(tǒng)下,以Visual Studio為平臺,結(jié)合PCL1.8.0點云庫以及MATLAB工具完成程序編寫。為了驗證上述算法的實用性,首先利用16線激光雷達采集工程裝備作業(yè)環(huán)境中具有真實孔洞的土堆、石塊點云模型,并以此為例進行修補。
對土堆、石塊點云模型的孔洞修復(fù)效果分別見圖6、圖7.
從圖6、圖7可見,修復(fù)后的孔洞區(qū)域真實有效的恢復(fù)了原有的形貌特征,并且孔洞區(qū)域點的密度與邊界周圍原有點云數(shù)據(jù)的密度基本保持一致,具有較好的修補效果。
圖6 土堆模型孔洞的修復(fù)
圖7 石塊模型孔洞的修復(fù)
然后,以斯坦福大學(xué)標(biāo)準(zhǔn)庫點云模型刀柄和兔子為例,分別對缺失面積較小和較大的孔洞進行修補,修復(fù)效果分別見圖8、圖9.另外以兔子模型為例將本文的修補效果與文獻[9]算法的修補效果進行比較。以上算例孔洞修補過程中的相關(guān)數(shù)據(jù)見表1.
表1 RBF修復(fù)孔洞的相關(guān)數(shù)據(jù)
由圖8、圖9可以看到,無論對于缺失面積較大的孔洞還是缺失面積較小的孔洞,本文算法均具有較好的修復(fù)效果,能夠反映孔洞區(qū)域原有的實際形狀。并且與文獻[9]算法相比,本文算法在孔洞區(qū)域新增的填充點分布更加均勻,補測生成的數(shù)據(jù)點無論密度還是形狀與孔洞周邊原有數(shù)據(jù)更能較好的
圖8 刀柄模型仿真孔洞的修復(fù)
圖9 兔子模型仿真孔洞的修復(fù)
保持一致,過渡平滑自然,修補效果較好。另外,由表1可知,與文獻[9]算法相比,本文算法還縮短了三角化填充修復(fù)孔洞的時間。通過均勻投撒大量數(shù)據(jù)點的方法,省去了不斷計算填充三角片之間邊長和內(nèi)角關(guān)系的過程,減小了運算量。算例結(jié)果表明,本文算法在具備較好修復(fù)效果的同時,可以提高修復(fù)速度,對于流形曲面具有較好的孔洞修復(fù)效率。
本文提出了一種基于蒙特卡羅法的RBF孔洞修復(fù)算法?;诿商乜_法,在孔洞二維特征平面投撒數(shù)據(jù)填充點,把采集所得孔洞邊緣點當(dāng)作樣本點訓(xùn)練RBF,利用訓(xùn)練好的RBF網(wǎng)絡(luò)將二維特征平面內(nèi)填充的數(shù)據(jù)點調(diào)整至孔洞區(qū)域的三維表面,實現(xiàn)孔洞區(qū)域數(shù)據(jù)的修復(fù)。并通過實例驗證,該算法可真實有效的恢復(fù)孔洞區(qū)域原有的形狀,并在保障高精度修復(fù)效果的同時,提高修復(fù)速度,較好的實現(xiàn)孔洞區(qū)域的修復(fù)。