何昕諭,秦麗娟(通迅作者)
(沈陽理工大學(xué)信息與科學(xué)工程學(xué)院 遼寧 沈陽 110159)
如何使三維重建準(zhǔn)確對(duì)目標(biāo)點(diǎn)云進(jìn)行濾波處理一直是國內(nèi)外研究的主要方向,傳統(tǒng)方法一般是確定搜索點(diǎn)云體素重心將其他點(diǎn)云進(jìn)行濾除。近年來,基于三維重建技術(shù)的點(diǎn)云數(shù)據(jù)處理有了很大進(jìn)展,本文提出用原始點(diǎn)云信息中的體素網(wǎng)格中心點(diǎn)代替體素重心點(diǎn),這樣可進(jìn)一步提高點(diǎn)云信息的表達(dá)準(zhǔn)確度,再采用高斯濾波增加目標(biāo)點(diǎn)云平滑特征。
通過Kinect深度相機(jī)傳感器獲取目標(biāo)物體三維點(diǎn)云數(shù)據(jù),三維點(diǎn)云數(shù)據(jù)能夠?qū)?yīng)二維圖像之間的像素點(diǎn)。在三維圖像里,能夠通過目標(biāo)物體信息表面得到點(diǎn)云信息,對(duì)應(yīng)二維圖像里物體表面的像素點(diǎn)。實(shí)際上,點(diǎn)云是指在同一個(gè)坐標(biāo)空間下,來展示出目標(biāo)表面物體的特征信息和存在空間分布的點(diǎn)集。三維點(diǎn)云的數(shù)據(jù)不僅僅包含了空間點(diǎn)的坐標(biāo),而且也涵蓋了一些色彩和強(qiáng)度等物理相關(guān)信息,通過RGB相機(jī)得到的彩色圖片內(nèi)的像素與數(shù)據(jù)內(nèi)的色彩對(duì)應(yīng)到賦予的點(diǎn)而獲得的。通過三維激光掃描儀采集到的回波強(qiáng)度被稱之為強(qiáng)度信息,利用強(qiáng)度信息可以區(qū)分不同表面的材質(zhì)、粗糙度等。點(diǎn)云主要有以下4種常見分類方式[1]。
如圖1(a)所示,無規(guī)則點(diǎn)云在空間分布中是雜亂無序的,每個(gè)點(diǎn)云之間毫無特殊的聯(lián)系和結(jié)構(gòu)規(guī)律,這種點(diǎn)云一般在采集過程中很容易出現(xiàn),因此被研究的也比較多,通過深度視覺相機(jī)一般得到此類點(diǎn)云數(shù)據(jù)。
如圖1(b)所示,掃描線點(diǎn)云主要會(huì)出現(xiàn)在線性掃描儀器設(shè)備中,線性掃描儀器會(huì)發(fā)射一束激光然后掃描一周,此光劃過的平面會(huì)獲取多個(gè)掃描點(diǎn)信息,將這些點(diǎn)進(jìn)行結(jié)合得到一條掃描線,最終構(gòu)成掃描線點(diǎn)云。
如圖1(c)所示,為網(wǎng)格化點(diǎn)云,此類點(diǎn)云的數(shù)據(jù)中,點(diǎn)和點(diǎn)之間有著明顯的拓?fù)浣Y(jié)構(gòu),將每個(gè)點(diǎn)連接起來就得到了網(wǎng)格化點(diǎn)云。
如圖1(d)所示,為多邊形的點(diǎn)云,但這種點(diǎn)云是無法直接在設(shè)備采集中進(jìn)行提取而得到,通常是在經(jīng)過大數(shù)據(jù)分析之后才獲得,它的特征主要是點(diǎn)云集合的點(diǎn)在不同的平面上,每個(gè)平面且彼此平行。
PCL是指吸取了從近代以來對(duì)點(diǎn)云研發(fā)技術(shù)基礎(chǔ)上發(fā)展得到的大規(guī)模開發(fā)平臺(tái)以及C++編程庫支持的各種操作系統(tǒng),平臺(tái)如Windows、Android、Mac OS X、Linux。PCL在3D信息獲取中,與Opencv在2D信息獲取中具有同樣重要的地位,并且用于測(cè)繪技術(shù)、無人駕駛技術(shù)、人工智能領(lǐng)域、人機(jī)交互鄰域、逆向設(shè)計(jì)以及一些工程自動(dòng)化技術(shù)領(lǐng)域中。點(diǎn)云的處理流程一般是通過對(duì)點(diǎn)云信息加以提煉,點(diǎn)云濾波,點(diǎn)云數(shù)據(jù)處理,點(diǎn)云分割,點(diǎn)云配準(zhǔn),點(diǎn)云特征值的獲取,點(diǎn)云跟蹤,點(diǎn)云三維重建以及可視化等技術(shù),PCL點(diǎn)云也可以結(jié)合機(jī)器學(xué)習(xí)、模式識(shí)別、深度學(xué)習(xí)等AI智能化算法解決實(shí)際問題。在點(diǎn)云進(jìn)行大數(shù)據(jù)分析領(lǐng)域里,PCL也是開源的重要工具。PCL官方把PCL分類為一個(gè)很詳細(xì)的代碼庫目的是為了實(shí)現(xiàn)模塊化使用,因?yàn)檫@樣提高了代碼的可讀性,也提高了代碼配置性,從而極大地簡化了開發(fā)的工作過程。具體代碼編譯如下。
(1)libpclfilters:可以實(shí)現(xiàn)采樣并且剔除離散點(diǎn)、進(jìn)行特征提取和擬合估計(jì)濾波器。
(2)libpclsurface:能夠進(jìn)行節(jié)點(diǎn)云的三維表面重構(gòu)技術(shù)包括了網(wǎng)格重構(gòu)和凸包重構(gòu)。
(3)libpclI/O:能夠?qū)崿F(xiàn)點(diǎn)云數(shù)據(jù)進(jìn)行輸入和輸出操做。
(4)libpclsurface:可以實(shí)現(xiàn)點(diǎn)云的三維表面重建技術(shù)比如網(wǎng)格重建和凸包重建。
(5)libpclregisteration:能夠?qū)崿F(xiàn)三維點(diǎn)云配準(zhǔn)功能。
(6)libpclkeypoints:能夠?qū)崿F(xiàn)不同的三維點(diǎn)云,關(guān)鍵點(diǎn)特征提取。
(7)libpclrangeimage:將三維點(diǎn)云數(shù)據(jù)集變成深度圖像。
由于通過Kinect相機(jī)收集到大量的點(diǎn)云數(shù)據(jù),同時(shí)又因?yàn)樯疃认鄼C(jī)設(shè)備精良,使用深度相機(jī)操作者經(jīng)驗(yàn)有限以及電磁波的強(qiáng)放射性對(duì)于被測(cè)量目標(biāo)物的表面數(shù)據(jù)性質(zhì)產(chǎn)生變化,以及在對(duì)點(diǎn)云數(shù)據(jù)處理進(jìn)行操作配準(zhǔn)過程中產(chǎn)生影響會(huì)對(duì)點(diǎn)云數(shù)據(jù)處理產(chǎn)生噪聲點(diǎn)云。因此對(duì)點(diǎn)云進(jìn)行濾波預(yù)先處理,對(duì)噪聲點(diǎn)和離散點(diǎn)、數(shù)據(jù)壓縮、空洞等進(jìn)行后續(xù)處理,才能有效地進(jìn)行點(diǎn)云配準(zhǔn)和點(diǎn)云特征值提取,最后進(jìn)行點(diǎn)云的三維重建以及可視化。其結(jié)構(gòu)原理與信號(hào)處理中濾波方法類似。
體素濾波法可以不損害點(diǎn)云本身的結(jié)構(gòu)性功能,而且可以實(shí)現(xiàn)下采樣,但可能會(huì)移動(dòng)點(diǎn)云的位置,使用此方法能夠消除離散點(diǎn)和噪聲的點(diǎn)云。它的工作原理是先通過對(duì)點(diǎn)云信號(hào)進(jìn)行運(yùn)算得出一個(gè)完全覆蓋住了該點(diǎn)云的小正方體,再按照我們所得的分辨率將點(diǎn)云劃分為若干個(gè)的小立方體,而后求得小立方體的質(zhì)心,再使用質(zhì)心位置近似求得在此正方形內(nèi)的一個(gè)點(diǎn)。而ApproximateVoxelGrid的方法和這種方式有所不同的地方是將每個(gè)小立方體重心點(diǎn)近似為該正方體的若干點(diǎn)[2]。
體素濾波法過程[2-3]如下。
(1)通過點(diǎn)云坐標(biāo)值可以得到X、Y、Z在3個(gè)方向坐標(biāo)系上的最大值Xmax、Ymax、Zmax,最小值Xmin、Ymin、Zmin。然后利用最大值減去最小值算出包圍盒邊長lx、ly、lz,見公式(1)。
(2)設(shè)置體素小立方體邊長cell3個(gè)方向X、Y、Z坐標(biāo)軸切割成M、N、L份,因此一共得到SUM=M*N*L體素小立方體,其中表示向下方向取整。
(3)將每個(gè)體素小立方體進(jìn)行標(biāo)號(hào)為(x,y,z),得到每個(gè)對(duì)應(yīng)數(shù)據(jù)點(diǎn)的體素小立方體。
(4)計(jì)算每個(gè)點(diǎn)云的重心,只保留每個(gè)體素立方體的重心點(diǎn)云,將其他點(diǎn)云去除。cijk為體素立方體重心,點(diǎn)云信息,k 為點(diǎn)云點(diǎn)數(shù)。
在對(duì)傳統(tǒng)點(diǎn)云濾波過程中,高斯濾波是比較常用的濾波方法之一。高斯濾波即噪聲的概率密度服從高斯正態(tài)分布。高斯無論是在opencv、圖像處理和各種領(lǐng)域都有著相當(dāng)廣泛應(yīng)用[4]。高斯濾波點(diǎn)云的優(yōu)勢(shì)如下。
(1)在進(jìn)行點(diǎn)云濾波過程中,噪聲點(diǎn)云邊緣并不明確。為了使PCL點(diǎn)云有著更好的濾波效果,在每個(gè)邊緣特征處理中做到均勻化,但高斯濾波具有均衡的濾波特性,而且高斯正態(tài)分布函數(shù)性質(zhì)也能滿足這個(gè)要求。所以,這是高斯濾波過程優(yōu)勢(shì)之一。
(2)因?yàn)楦咚篂V波是單值函數(shù),所以經(jīng)過高斯濾波處理后的信噪比通常都采用加權(quán)平均方式加以表示,各個(gè)點(diǎn)的大小根據(jù)點(diǎn)與中心點(diǎn)相互之間的遠(yuǎn)近而單調(diào)改變,確保了在低濾波區(qū)域中的有效性能。對(duì)鄰域曲線上的點(diǎn)具有不同的過濾作用,提高了對(duì)點(diǎn)云過濾的準(zhǔn)確性。
(3)利用高斯濾波達(dá)到的濾波效果是由標(biāo)準(zhǔn)差σ進(jìn)行決定,曲線的平滑程度和σ有著密切的聯(lián)系,σ的值越大表示高斯濾波效果越好。
高斯濾波相當(dāng)于一個(gè)具有平滑特性的低通濾波器(LPF),經(jīng)過此類方法處理后的點(diǎn)云比較平滑。標(biāo)準(zhǔn)差和均值見公式(6)、公式(7)。
體素濾波方法一般為了保持目標(biāo)點(diǎn)云的原有特征,在這樣前提下減少目標(biāo)點(diǎn)云的三維數(shù)據(jù)量,但是由于本文內(nèi)容豬的點(diǎn)云數(shù)量比較多。因此,為了提升對(duì)點(diǎn)云的后續(xù)處理速率,而且該重心點(diǎn)不一定是原始點(diǎn)云中的點(diǎn),有失原始點(diǎn)云的細(xì)小特征。我們采樣將體素網(wǎng)格的重心替換成小立方體的重心鄰近點(diǎn)來實(shí)現(xiàn)下采樣濾波方法,使用改進(jìn)體素濾波法,實(shí)現(xiàn)了下采樣濾波法,而且保持了原始點(diǎn)云之間的數(shù)據(jù)特征[5]。
改進(jìn)體素濾波法結(jié)合高斯濾波算法主要步驟如下。
(1)先用高斯濾波法對(duì)目標(biāo)點(diǎn)云進(jìn)行濾波處理。
(2)首先對(duì)豬點(diǎn)云集合P實(shí)現(xiàn)kd-tree,統(tǒng)計(jì)目標(biāo)點(diǎn)云的總體數(shù)量,得到目標(biāo)點(diǎn)云的實(shí)現(xiàn)最小包圍盒,并且算出包圍盒的體積V,把包圍盒的3個(gè)方向x、y、z上的長度分別用Lx、Ly、Lz來進(jìn)行表示。
(4)算出每個(gè)體素小立方體的重心p0(x0,y0,z0),構(gòu)建新的豬點(diǎn)云集合{Pc,c=1,2......,n}。其中
(5)使用Kdtree用循環(huán)語句遍歷點(diǎn)云P,尋找與Pc重心點(diǎn)最鄰近的點(diǎn),最后構(gòu)成新的集合Pe。
依據(jù)上述步驟設(shè)計(jì)改進(jìn)體素濾波算法模型。基于改進(jìn)體素算法設(shè)計(jì)思路如下,通過Kinect深度視覺相機(jī)獲取點(diǎn)云就可以根據(jù)下面流程圖2進(jìn)行操作。
(1)首先輸入待處理點(diǎn)云信息圖像,將其點(diǎn)云圖像進(jìn)行高斯濾波,濾除服從高斯正態(tài)分布噪聲點(diǎn)云,將點(diǎn)云圖像中不屬于真實(shí)圖像的點(diǎn)進(jìn)行平滑。
(2)采用改進(jìn)體素濾波法進(jìn)行點(diǎn)云濾波,搜索進(jìn)鄰近下采樣點(diǎn)把點(diǎn)云重心點(diǎn)換成體素中心鄰近點(diǎn),目的是減少點(diǎn)云數(shù)據(jù)數(shù)量并且保留點(diǎn)云特征,為后續(xù)點(diǎn)云配準(zhǔn)提升速率[5]。
改進(jìn)體素濾波法濾波結(jié)合高斯濾波方法與體素濾波法效果相比,濾波效果更加精確,并且輪廓比較明顯,仿真圖可見圖3、圖4。
高斯濾波和改進(jìn)體素濾波法結(jié)合,目標(biāo)點(diǎn)云通過高斯濾波,適合正態(tài)分布函數(shù)點(diǎn)云數(shù)據(jù)。由于離群點(diǎn)的特征,可以把某處的點(diǎn)云數(shù)據(jù)小于此密度,則點(diǎn)云即為無效點(diǎn)云。算出每個(gè)點(diǎn)和最近的K個(gè)點(diǎn)之間平均距離。點(diǎn)云中點(diǎn)呈現(xiàn)高斯分布,設(shè)定好均值方程來移除3∑之外的點(diǎn),通過高斯濾波可以讓點(diǎn)云數(shù)據(jù)更加平滑。然后采樣改進(jìn)體素濾波法,保留體素濾波法的特點(diǎn),將目標(biāo)點(diǎn)云數(shù)目減少,方便后續(xù)處理。同時(shí),將點(diǎn)云的鄰近點(diǎn)代替點(diǎn)云的重心點(diǎn),使目標(biāo)點(diǎn)云信息輪廓更加完整。通過改進(jìn)體素濾波法和高斯濾波法結(jié)合,目標(biāo)點(diǎn)云信息預(yù)處理的效果對(duì)比傳統(tǒng)濾波方法濾波效果更好。通過二種濾波方法的結(jié)合,方便了后續(xù)點(diǎn)云信息的處理。