李晉儒,宋成航,林景峰
(山東科技大學(xué)測(cè)繪與空間信息學(xué)院,山東 青島 266590)
隨著近些年來三維激光掃描儀的出現(xiàn)和數(shù)字化計(jì)算機(jī)水平的不斷提高,三維點(diǎn)云處理技術(shù)發(fā)展前景更為廣闊,人們利用測(cè)量手段采集到的物體點(diǎn)云數(shù)據(jù)也變得更加簡(jiǎn)單,準(zhǔn)確。近些年來,隨著數(shù)字城市的快速發(fā)展,激光點(diǎn)云數(shù)據(jù)也越來越多地被應(yīng)用在重要的工程當(dāng)中,如各種逆向的工程實(shí)際、移動(dòng)測(cè)繪、數(shù)字孿生等各類領(lǐng)域,基于三維激光點(diǎn)云的曲面重建技術(shù)就是利用三維激光掃描儀中物鏡里發(fā)射出的激光脈沖信號(hào)傳輸?shù)奖粶y(cè)物體的表面,然后到信號(hào)反射回到掃描儀中的時(shí)間差,從而得到三維激光點(diǎn)云信息,三維掃描儀所獲得的數(shù)據(jù),具有非接觸測(cè)量、精確度高、方便獲取等優(yōu)點(diǎn)[1]。目前可以將點(diǎn)云曲面重建技術(shù)大致分為兩大類:插值法和逼近法。插值法是利用在原始數(shù)據(jù)的基礎(chǔ)上對(duì)點(diǎn)云進(jìn)行插值而構(gòu)建出的重建曲面;逼近法是通過構(gòu)建出一個(gè)分片的線性曲面去與原始的點(diǎn)云數(shù)據(jù)進(jìn)行逼近,使得產(chǎn)生的重構(gòu)曲面與原始點(diǎn)云的結(jié)構(gòu)較為貼切。
根據(jù)重建曲面的表現(xiàn)形式可以大致分為五類,即參數(shù)曲面重建、隱式曲面重建、變形曲面重建、細(xì)分曲面重建和分片線性曲面重建[2]。姜龍飛等[3]針對(duì)點(diǎn)云數(shù)據(jù)量大的特點(diǎn),提出了基于定位、掃描、重建一體化顯示巷道數(shù)據(jù)實(shí)時(shí)更新,能夠利用少量的點(diǎn)云去獲取三維空間信息??祩骼萚4]針對(duì)點(diǎn)云數(shù)據(jù)在經(jīng)過配準(zhǔn)處理后會(huì)產(chǎn)生一些無序的噪聲,同時(shí)會(huì)使得部分點(diǎn)云區(qū)域造成重疊,提出基于移動(dòng)最小二乘重采樣算法,對(duì)空間點(diǎn)云數(shù)據(jù)構(gòu)建起鄰域,建立擬合函數(shù),選擇合適的權(quán)函數(shù)和基函數(shù),利用體素化下采樣對(duì)空間點(diǎn)云數(shù)據(jù)進(jìn)行點(diǎn)云重采樣,利用Crust算法和Geomagic studio軟件進(jìn)行重建,從而解決了由于點(diǎn)云配準(zhǔn)而造成的重疊區(qū)域和數(shù)據(jù)量大的問題,提高重建效率。曹詩卉等[5]針對(duì)散亂點(diǎn)云數(shù)據(jù),去求解出內(nèi)表面指示函數(shù)的最小化問題,對(duì)經(jīng)典泊松算子進(jìn)行改進(jìn),實(shí)驗(yàn)?zāi)軌驅(qū)⑽矬w表面上曲率較高的地方或者尖角處實(shí)現(xiàn)平滑效果,避免了最小二乘法收縮差,構(gòu)成的曲面光滑性較好,但是對(duì)一些細(xì)節(jié)部分的處理,描述得不夠清晰。彭文博等人[6]是利用Geomagic、3ds Max等技術(shù)對(duì)獲取的一個(gè)建筑物數(shù)據(jù)進(jìn)行三維建模,建模質(zhì)量的好壞與掃描數(shù)據(jù)的成果有很大關(guān)系,需要設(shè)置合理的設(shè)站數(shù)及其位置關(guān)系,完整地表達(dá)出了建筑物的三維模型。紀(jì)志浩等[7]針對(duì)點(diǎn)云數(shù)據(jù)分辨率有限,提出了用Delaunay三角化方法構(gòu)造網(wǎng)格來逼近物體的三維表面模型,生成表面模擬場(chǎng)景,用Geomagic studio12對(duì)點(diǎn)云進(jìn)行三角剖分,證明該方法具有一定的實(shí)用性。賈軍輝等[8]人在曲面重建時(shí)的細(xì)節(jié)紋理和重建的質(zhì)量問題上進(jìn)行了探討,通過構(gòu)建三維Delaunay三角網(wǎng),根據(jù)曲面生長(zhǎng)貪心算法,選擇出最優(yōu)的三角形,添加到生長(zhǎng)曲面上,最后形成顯式三角形的曲面。羅秋等[9]人針對(duì)三維重建物不可直接接觸,提高建筑物監(jiān)測(cè)精度,運(yùn)用3ds Max建模軟件精確地給出了物體的三維模型和紋理信息,實(shí)用性比較強(qiáng)。
針對(duì)上述散亂點(diǎn)云數(shù)據(jù)在噪聲方面難以統(tǒng)計(jì)分析以及數(shù)據(jù)冗余程度從而影響隧道曲面重建的質(zhì)量問題,本文利用了基于隧道的點(diǎn)云數(shù)據(jù)進(jìn)行去噪后,分別利用傳統(tǒng)的經(jīng)典重建算法和Crust算法對(duì)去噪處理后的點(diǎn)進(jìn)行曲面重建,實(shí)驗(yàn)結(jié)果表明利用Crust算法重建后的隧道表面光順性好,質(zhì)量和效率比其他方法要好。
本文的主要思想是由于原始點(diǎn)云數(shù)據(jù)是雜亂無序的,數(shù)據(jù)量龐大,受周圍環(huán)境的影響存在許多噪點(diǎn),噪點(diǎn)的存在會(huì)使得重建出的隧道表面不光滑,需要通過體素下采樣來使點(diǎn)云密度變得較為稀疏;通過統(tǒng)計(jì)濾波器對(duì)點(diǎn)云進(jìn)一步簡(jiǎn)化去噪,移除離群點(diǎn)。使得原始數(shù)據(jù)不受周圍噪點(diǎn)影響;其次通過對(duì)點(diǎn)云構(gòu)建k-d樹的拓?fù)渌饕Y(jié)構(gòu),然后利用PCL中的法向量估計(jì)NormalEstimationdui對(duì)濾波后的點(diǎn)云進(jìn)行估計(jì),重新確定點(diǎn)云的方向,為曲面重建做進(jìn)一步準(zhǔn)備;最后根據(jù)法向量利用貪婪三角化和移動(dòng)立方體算法對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行曲面重建?;赩TK的點(diǎn)云數(shù)據(jù)也是同樣簡(jiǎn)單的數(shù)據(jù)處理,利用Delaunay來進(jìn)行三角剖分,計(jì)算采樣的極點(diǎn),將輸出的內(nèi)外極點(diǎn)的power圖平面,平面就是物體重建后的表面,圖1為整個(gè)實(shí)驗(yàn)流程。
圖1 實(shí)驗(yàn)流程
原始點(diǎn)云數(shù)據(jù)一開始沒有經(jīng)過任何處理,如果直接將原始數(shù)據(jù)用來進(jìn)行曲面重建的話,那么重建后生成的曲面表面不可避免地產(chǎn)生孔洞、表面起伏不平,突起等不平滑的現(xiàn)象,為避免上述情況的發(fā)生,就需要對(duì)海量的點(diǎn)云數(shù)據(jù)進(jìn)行去噪處理。在本實(shí)驗(yàn)中是通過體素化網(wǎng)格方法來對(duì)點(diǎn)云進(jìn)行采樣,用體素濾波對(duì)原始數(shù)據(jù)進(jìn)行采樣,一方面是不會(huì)改變?cè)键c(diǎn)云的空間結(jié)構(gòu),同時(shí)降低了點(diǎn)云數(shù)據(jù)的空間密度,可以看到點(diǎn)云數(shù)據(jù)的空間結(jié)構(gòu)成線性排列,另一方面對(duì)前期的提高點(diǎn)云配準(zhǔn)、曲面重建、算法速度變得更有效。
在PCL點(diǎn)云庫中可以利用VoxelGrid類來對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行體素濾波處理,考慮到用體素濾波處理的原因,正是因?yàn)槠淠軌蚴裹c(diǎn)云數(shù)據(jù)的密度變得均勻,整齊,也就是將點(diǎn)云數(shù)據(jù)包圍在一個(gè)立體的包圍盒中,盒子的大小長(zhǎng)度可以由所給定的坐標(biāo)可知,然后將包圍盒劃分成為若干的小立方體,形成小的體素柵格,選擇每一個(gè)體素柵格的中心點(diǎn)來表示每個(gè)小柵格中的周圍點(diǎn),從而就將包圍盒里的點(diǎn)云數(shù)據(jù)用體素柵格的中心點(diǎn)表示出來,經(jīng)過遍歷搜尋查找,得到一個(gè)精簡(jiǎn)后的點(diǎn)云數(shù)據(jù)[10]。
由于被測(cè)的數(shù)據(jù)本身密度不均勻,有些還會(huì)附帶一些噪聲或者多余的噪點(diǎn),在測(cè)量過程中不可避免地會(huì)有一些誤差,不規(guī)則的點(diǎn)云會(huì)使效果更差,就需要通過對(duì)每個(gè)點(diǎn)的領(lǐng)域進(jìn)行統(tǒng)計(jì)分析,修剪掉不符合的點(diǎn),就需要調(diào)用Statistical Outiler Removal濾波器移除周圍的離群點(diǎn)。
首先可以先求出最小包圍盒的體積大小,根據(jù)體積大小來判斷柵格的長(zhǎng)度L:
(1)
這里的α表示的是從點(diǎn)云數(shù)據(jù)到體素柵格的系數(shù)因子,ε為比例系數(shù),n為小柵格中點(diǎn)云的數(shù)量。每個(gè)小柵格里包含的點(diǎn)云數(shù)量為:
n=N/V
(2)
其中,N為小柵格中點(diǎn)云總個(gè)數(shù),V為體素柵格立方體的體積。
V=LxLyLz
(3)
其中,LX表示的是x方向上最大長(zhǎng)度,Ly表示為y方向上最大長(zhǎng)度,Lz表示為z方向上最大長(zhǎng)度。
將柵格數(shù)據(jù)分成I×J×K個(gè)小立方體柵格,對(duì)于任一點(diǎn)pi,其小立方體的編號(hào)如下:
(4)
Pi的柵格編碼為(Ip,Jp,Kp),轉(zhuǎn)換成編碼為:VPi=Ipi×J×K+Jpi×J×Kpi
由此可以求出每個(gè)點(diǎn)云柵格數(shù)據(jù)本身的編碼信息,從而去構(gòu)建點(diǎn)云之間的拓?fù)潢P(guān)系,然后選擇周圍的具有代表性的點(diǎn),算出每個(gè)小立方體的重心點(diǎn)的坐標(biāo)位置:
(5)
然后選取實(shí)現(xiàn)部分?jǐn)?shù)據(jù),如圖2所示,該數(shù)據(jù)表示的為代表整個(gè)最小包圍盒中的數(shù)據(jù)點(diǎn),可以利用PCL庫中的VoxelGrid類對(duì)隧道數(shù)據(jù)進(jìn)行體素濾波,實(shí)現(xiàn)下采樣,原始實(shí)驗(yàn)數(shù)據(jù)共包含了 116 228個(gè)數(shù)據(jù)點(diǎn),分別設(shè)置了體素化網(wǎng)格邊長(zhǎng)為 0.05 m、0.1 m、 0.25 m、 0.5 m,下采樣后的點(diǎn)分別為 99 732、 44 992、 9 564、 2 614。
圖2 體素下采樣分別為0.05 m、0.1 m、0.25 m、0.5 m的點(diǎn)云數(shù)據(jù)
由圖2可知,通過設(shè)置體素邊長(zhǎng),點(diǎn)云數(shù)據(jù)都有一定程度上的精簡(jiǎn),在三維空間的整體結(jié)構(gòu)上有一定的拓?fù)潢P(guān)系,下采樣后的點(diǎn)云密度在表面特征區(qū)域較大。
經(jīng)過體素濾波和統(tǒng)計(jì)濾波的處理后,原始點(diǎn)云數(shù)據(jù)從空間結(jié)構(gòu)上來看已經(jīng)得到了消減,消除了離群點(diǎn),在此基礎(chǔ)上就需要對(duì)其進(jìn)行法線估計(jì),法向量是一個(gè)物體表面最重要的屬性信息,法向量就是指一個(gè)物體的方向,給定了一個(gè)方向后,才能夠?qū)c(diǎn)云數(shù)據(jù)進(jìn)行曲面重建。
由于在曲面重建時(shí),需要輸入的點(diǎn)云為有向點(diǎn)云,所以就需要先對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行法線估計(jì),計(jì)算出每個(gè)點(diǎn)的法線。
確定表面上一個(gè)點(diǎn)的法線問題近似估計(jì)表面的一個(gè)相切面法線的問題,一般利用主成分分析法(PCA)就可以來表示這一問題,主成分分析法是一種統(tǒng)計(jì)類方法,就是將眾多的有一定相關(guān)性的指標(biāo)聯(lián)系在一起,重新組合成為互相不相關(guān)的一個(gè)指標(biāo)去替代原來的指標(biāo),用主成分分析去估計(jì)表面法線主要就是分析協(xié)方差矩陣的特征值與特征向量。對(duì)于每一個(gè)點(diǎn)Pi,對(duì)應(yīng)的協(xié)方差矩陣B為:
(6)
(7)
圖3是實(shí)現(xiàn)表面法線估計(jì)效果的隧道數(shù)據(jù)圖:
圖3 法向量估計(jì)的隧道圖
在對(duì)隧道數(shù)據(jù)進(jìn)行預(yù)處理之后,就可以對(duì)隧道進(jìn)行曲面重建,本實(shí)驗(yàn)分別利用了貪婪三角化算法、移動(dòng)立方體算法以及基于VTK的Crust算法,對(duì)隧道進(jìn)行重建,并對(duì)幾種算法的重建效率進(jìn)行對(duì)比分析,以研究隧道對(duì)重建算法的適應(yīng)性。
(1)貪婪三角化算法
貪婪三角化算法首先是針對(duì)帶有法向量的點(diǎn)云數(shù)據(jù)進(jìn)行三角化處理,對(duì)一些邊緣點(diǎn)能夠使得整個(gè)網(wǎng)格變得生長(zhǎng)擴(kuò)大,讓這些擴(kuò)大后的點(diǎn)能夠與符合在空間幾何上的點(diǎn)和構(gòu)成拓?fù)潢P(guān)系上的點(diǎn)能夠形成聯(lián)系,貪婪三角化是將點(diǎn)云數(shù)據(jù)通過法向量投影在某一平面上,在此基礎(chǔ)上對(duì)點(diǎn)云進(jìn)行Delaunay的空間區(qū)域增長(zhǎng)剖分,實(shí)現(xiàn)三角化過程,最后通過三角化后構(gòu)成的空間拓?fù)溥B接關(guān)系,得到一個(gè)三角網(wǎng)格模型[12]。
(2)移動(dòng)立方體算法
移動(dòng)立方體算法是目前三維重建中基于等值面提取的常見方法,目的就是為了尋找到和等值面相交的體素,每個(gè)體素會(huì)和等值面相交,相交而形成的交面連接在一起后最終形成了所求的等值面。首先也是將整個(gè)點(diǎn)云數(shù)據(jù)利用濾波處理分為每一小塊,然后在所求的等值面上規(guī)定一個(gè)極限值,對(duì)每個(gè)體素小塊上的頂點(diǎn)進(jìn)行分類,判斷頂點(diǎn)是否在這個(gè)等值面上,如果其中一個(gè)頂點(diǎn)是屬于目標(biāo)物體的內(nèi)部就取值為0,在目標(biāo)物體的外部時(shí),取值為1,取值的每種情況都能夠在立方體內(nèi)生成等值面,一般通過插值的方式來生成,一個(gè)立方體里的等值面分布一共有256種組合方式,每種組合對(duì)應(yīng)一種剖分方式,根據(jù)各個(gè)頂點(diǎn)的對(duì)稱關(guān)系,可以簡(jiǎn)化為大致15種組合。
(3)PowerCrust算法
PowerCrust重建算法開始是由Amenta[13]在2001年提出針對(duì)散亂點(diǎn)云重建算法的,該方法是基于VTK庫的一種重建算法,是通過中心軸向變換得到物體的表面,物體表面是通過模型的內(nèi)外極點(diǎn)的子集來確定的,由極點(diǎn)將空間劃分為多面柵格,內(nèi)部柵格與邊界相結(jié)合就構(gòu)成多邊形表面,由內(nèi)部點(diǎn)構(gòu)成的物體表面能凸出在外部,外部點(diǎn)構(gòu)成的物體表面能凸出在內(nèi)部,用PowerCrust生成的曲面模型,可以看出密閉性能要好,聚集性要強(qiáng)[14]。PowerCrust重建算法主要是通過中心軸的變換來近似地去得出物體的重建表面的,因?yàn)楣烙?jì)物體的中心軸不容易計(jì)算出來,就首先利用Voronoi圖來生成一個(gè)power圖,再利用power圖上生成的極點(diǎn)去判斷該點(diǎn)是在物體的哪個(gè)部分,是在其里面還是外面,根據(jù)中心軸向變換得出內(nèi)外極點(diǎn)的近似曲面,該曲面即為重建的曲面圖[15]。
本文實(shí)驗(yàn)的算法是在VS2013的環(huán)境下進(jìn)行的,采用PCL1.8.1庫、VTK7.0庫和C++程序來實(shí)現(xiàn)的,對(duì)隧道數(shù)據(jù)進(jìn)行體素濾波處理。實(shí)驗(yàn)的硬件配置為Intel(R) Core(TM)i3-3110M CPU @2.40 GHz,4.00 GB內(nèi)存,Windows7操作系統(tǒng),對(duì)采樣后的點(diǎn)云進(jìn)行曲面重建,重建后的結(jié)果在PCL上實(shí)現(xiàn)了可視化。實(shí)驗(yàn)中的測(cè)試數(shù)據(jù)是來自地面三維激光掃描儀對(duì)某一隧道掃描得到的數(shù)據(jù),分別對(duì)其用經(jīng)典的重建方法進(jìn)行曲面重建,重建效果如圖4所示。
從圖4中可以看到經(jīng)過體素濾波處理后的點(diǎn)云,隨著采樣間隔的增大,點(diǎn)云數(shù)據(jù)在一定程度上均勻地減少,可以提高重建的時(shí)間;由圖4(a)-(d)中可以看到重建后出現(xiàn)大量的孔洞,這可能與三角化時(shí)設(shè)置的參數(shù)有關(guān),通常情況下要考慮到搜索目標(biāo)的鄰域半徑大小和設(shè)置樣本點(diǎn)搜索其鄰近點(diǎn)的最遠(yuǎn)距離大小,提高該算法的自適應(yīng)性。對(duì)于圖4和表1的數(shù)據(jù),根據(jù)點(diǎn)云分布情況和曲面重建后的效果和重建時(shí)間綜合分析可知,隨著采樣點(diǎn)之間的距離增大,點(diǎn)云數(shù)量越少,點(diǎn)云的簡(jiǎn)化效率就會(huì)有所提高,法向量的估計(jì)時(shí)長(zhǎng)也在減小,隧道的表面重建時(shí)間越短。從表1中可以明顯看出來,下采樣 0.5 m點(diǎn)云的簡(jiǎn)化率達(dá)到最值,在滿足重建效果的前提下,孔洞明顯減少,重建時(shí)間極大地縮短,縮短了97%。
圖4 下采樣為0.01 m、0.05 m、0.1 m及0.25 m條件下貪婪三角化重建后的結(jié)果
不同采樣點(diǎn)間的曲面重建參數(shù) 表1
圖5和圖6的實(shí)驗(yàn)結(jié)果表明,使用移動(dòng)立方體對(duì)隧道進(jìn)行重建后,隧道的外表面會(huì)產(chǎn)生一些零碎面片,隨著采樣間隔的增加,零碎面片隨之減少,隧道洞口的部分曲面出現(xiàn)不平整光滑,出現(xiàn)褶皺情況,并且圖5(a)與(b)中間部分出現(xiàn)凸起部分,隨著采樣值的取值大小,凸起的部分明顯減弱,趨于正常曲面,這與設(shè)置的setIsoLevel和setleafsize參數(shù)相關(guān),setIsoLevel指的是在等值面提取時(shí)所使用的水平值,另外就是與設(shè)置的體素大小有關(guān),設(shè)置的體素分辨率越大,重建時(shí)間越長(zhǎng),重建后的曲面越光滑。利用Powercrust方法對(duì)隧道表面重建時(shí)它能夠獲取密封的物體表面,重建出一個(gè)完整的三維模型,在圖6中發(fā)現(xiàn)重建后的隧道曲面與下采樣值并沒多大關(guān)系,重建后的曲面都很光滑且沒有多余的噪點(diǎn),并且曲面更加的光滑,重建后效果明顯優(yōu)于其他兩種重建效果,由圖7可以看出來重建的時(shí)間上明顯要優(yōu)于其他兩種重建方法。
圖5 移動(dòng)立方體算法重建效果
圖6 PowerCrust重建結(jié)果效果
三種重建方法的時(shí)間對(duì)比 表2
圖7 三種重建效率對(duì)比圖
本文針對(duì)隧道中的點(diǎn)云數(shù)據(jù)量大,冗余多、利用率低的特點(diǎn),研究了隧道三維點(diǎn)云數(shù)據(jù)的曲面重建問題,首先將采集到的隧道點(diǎn)云數(shù)據(jù)對(duì)其進(jìn)行了體素濾波處理,分別選取不同的采樣間距,對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行重建,采用體素濾波能夠保持實(shí)際的空間特征沒有被破壞,減少點(diǎn)的數(shù)量,保持點(diǎn)云的形狀特征,從而對(duì)采樣點(diǎn)對(duì)應(yīng)的曲面重建效果來說更加準(zhǔn)確;通過用統(tǒng)計(jì)濾波器對(duì)一些測(cè)量噪聲點(diǎn)進(jìn)行去噪,因?yàn)樵肼朁c(diǎn)的存在會(huì)影響曲面重建的效果;然后分別利用PCL庫里的貪婪三角化算法、移動(dòng)立方體算法及VTK庫的PowerCrust算法對(duì)隧道點(diǎn)云進(jìn)行曲面重建,經(jīng)過對(duì)比分析可知,基于隧道的點(diǎn)云曲面重建,PowerCrust算法無論是從重建時(shí)效性上來說還是從重建效果上來看都要比移動(dòng)立方體算法和貪婪三角化算法要好,曲面的光順性好,可以利用相對(duì)較少的點(diǎn)云來表現(xiàn)隧道的三維空間信息,對(duì)在工程上進(jìn)行數(shù)據(jù)重構(gòu)和空間信息可視化應(yīng)用分析有所幫助。