李務(wù)軍,吳斌
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng) 621000)
摘要:隨著機(jī)器視覺(jué)理論的發(fā)展和硬件技術(shù)的進(jìn)步,三維重建在生產(chǎn)、生活中的應(yīng)用越來(lái)越廣泛,基于Kinect傳感器的三維重建得到廣泛的應(yīng)用。針對(duì)于現(xiàn)有的Kinect傳感器獲得的深度圖像深度信息丟失的問(wèn)題,提出了一種新的基于均值濾波的方法對(duì)深度圖像進(jìn)行去噪,并對(duì)深度圖像進(jìn)行預(yù)處理,獲取三維點(diǎn)云,用迭代最近點(diǎn)(Iterative Closest Point, ICP)算法完成點(diǎn)云的精確配準(zhǔn),從而得到配準(zhǔn)后物體表面三維點(diǎn)云,并完成物體的三維重建。
關(guān)鍵詞:Kinect傳感器; 點(diǎn)云配準(zhǔn);ICP算法;三維重建
0引言
三維重建技術(shù)是人工智能、機(jī)器視覺(jué)和虛擬現(xiàn)實(shí)等領(lǐng)域的熱點(diǎn)和難點(diǎn),也是人類目前研究?jī)?nèi)容的重大難題之一。三維重建技術(shù)已經(jīng)廣泛用于生物醫(yī)學(xué)成像、機(jī)器人遙操作系統(tǒng)、人機(jī)交互等領(lǐng)域。三維重建主要針對(duì)人機(jī)交互界面中重構(gòu)出的虛擬場(chǎng)景,目前國(guó)內(nèi)外對(duì)于現(xiàn)實(shí)場(chǎng)景的三維重建也有所研究[12]。
三維重建工作可以分為3個(gè)步驟。首先,通過(guò)對(duì)待構(gòu)建物體的大量信息點(diǎn)坐標(biāo)的檢測(cè)來(lái)獲取點(diǎn)云信息;其次,對(duì)于已獲取的散亂點(diǎn)云進(jìn)行預(yù)處理;最后,對(duì)于由不同方向得到的點(diǎn)云進(jìn)行配準(zhǔn)[3],使它們同處于同一世界坐標(biāo)下。通過(guò)融合這些點(diǎn)云信息,就可對(duì)實(shí)際場(chǎng)景進(jìn)行三維重構(gòu)。
現(xiàn)有的三維重建技術(shù)可分為被動(dòng)式技術(shù)和主動(dòng)式技術(shù)。被動(dòng)式技術(shù)利用自然光反射拍攝的圖片,通過(guò)一系列算法計(jì)算得到物體的三維坐標(biāo),如structure from motion[4]和multi-view stereo[5]。主動(dòng)式技術(shù)是直接測(cè)量物體的深度信息,如采用結(jié)構(gòu)光的Kinect[6]和采用time of fliht技術(shù)的CamCube[7]。在本文中,將會(huì)根據(jù)Kinect傳感器得到的深度圖像,并以用戶的視角來(lái)對(duì)真實(shí)場(chǎng)景進(jìn)行三維重構(gòu)。通過(guò)三維重建技術(shù),可以在計(jì)算機(jī)中生成一個(gè)可交互的可視化系統(tǒng),當(dāng)用戶在一個(gè)固定的攝像機(jī)前面移動(dòng)時(shí),就可以通過(guò)可視化系統(tǒng)觀看到重構(gòu)的三維場(chǎng)景,并且可以看到其自身所處的環(huán)境情況。這也是三維重構(gòu)研究所要達(dá)到的效果。
1Kinect工作原理
1.1Kienct標(biāo)定
Kinect是一種主動(dòng)傳感器,有3個(gè)鏡頭,中間鏡頭是RGB彩色攝像機(jī),左右兩邊鏡頭分別是紅外線發(fā)射器和紅外線CMOS攝像機(jī)所構(gòu)成的3D結(jié)構(gòu)光深度信息感應(yīng)器。
在使用Kinect的攝像頭之前,需要先對(duì)其進(jìn)行標(biāo)定,包括對(duì)彩色攝像頭和紅外攝像頭。通過(guò)標(biāo)定可以獲取Kinect攝像頭的內(nèi)外參數(shù)。在此次標(biāo)定實(shí)驗(yàn)中,獲取10幅標(biāo)定所需要的圖像數(shù)目,以獲取更高的精度和更好的穩(wěn)定性,拍攝到的深度圖像和RGB圖像如圖1所示(此處只顯示1幅)。
1.2圖像坐標(biāo)轉(zhuǎn)換
真實(shí)世界坐標(biāo)系與深度圖像坐標(biāo)系的示意圖如圖2所示。真實(shí)世界坐標(biāo)系是以Kinect為坐標(biāo)原點(diǎn)的右手坐標(biāo)系。而在深度圖像坐標(biāo)系中,是以深度圖像的原點(diǎn)作為坐標(biāo)系原點(diǎn)的。因此,需要進(jìn)行坐標(biāo)轉(zhuǎn)換,將深度圖像的坐標(biāo)系轉(zhuǎn)換為以Kinect深度攝像機(jī)中心為原點(diǎn)的真實(shí)世界坐標(biāo)系。
標(biāo)定之后的Kinect攝像機(jī),可以看做理想的針孔成像模型。根據(jù)Kinect的參數(shù)以及本文需要,設(shè)定彩色圖像和深度圖像的分辨率均為640×480。根據(jù)簡(jiǎn)單的相似三角形原理,得到轉(zhuǎn)換之后的X、Y坐標(biāo)分別為:
式中,X、Y分別為世界坐標(biāo)中的橫坐標(biāo)和縱坐標(biāo),u、v分別為深度圖像中的橫坐標(biāo)和縱坐標(biāo),Z為深度信息,f為標(biāo)定后獲取的焦距。
2三維重建
Kinect深度攝像頭可以獲取周?chē)鷪?chǎng)景的深度信息,同時(shí)也可以得到三維場(chǎng)景的點(diǎn)云信息,繼而重建出物體的三維表面模型,而不必接觸物體。三維場(chǎng)景重構(gòu)的流程如圖3所示。
2.1噪聲處理
在Kinect獲取的深度圖像中,有些像素值為0的點(diǎn),是深度無(wú)法確定的點(diǎn)。這些點(diǎn)的存在會(huì)使得到的三維場(chǎng)景產(chǎn)生很大的空洞。所以為了避免大部分的空洞出現(xiàn),需要對(duì)像素值為0的點(diǎn)進(jìn)行處理。本文采用的方法為拍攝獲取同一視角下的n幅圖像Ii,對(duì)這些圖像Ii(x,y)的相同像素點(diǎn)(x, y)取均值再取整,得到處理后的圖像I(x,y),如式(3)所示,同時(shí),在處理的過(guò)程中,如發(fā)現(xiàn)深度值為0(即深度值為隨機(jī)值)的點(diǎn)數(shù)多于深度值不為0的點(diǎn)數(shù),則視此點(diǎn)的深度值為隨機(jī)值。
I(x,y)=avgi=1,2…nIi(x,y)(3)
本文選取n的值為10,即獲取10幅相同視角下的深度圖像進(jìn)行處理,其結(jié)果如圖4所示。
2.2預(yù)處理
由于Kinect設(shè)備本身原因或測(cè)量環(huán)境等帶來(lái)的影響,Kinect攝像機(jī)獲取的深度圖像通常會(huì)產(chǎn)生一定的噪聲,而這些噪聲會(huì)對(duì)后面的計(jì)算有著較大的不利影響,因此首先需要對(duì)原始的深度圖像進(jìn)行去噪。
一般圖像濾波可以用式(4)表示:
I′(x,y)=1wp∑i,j∈Ωw(i,j)*I(i,j)(4)
其中,I′(x,y)為濾波噪聲后的圖像;Ω為像素(x,y)的鄰域范圍;w(i,j)為濾波器在(x,y)點(diǎn)處的權(quán)值;wp是唯一化參數(shù);I(i,j)是原圖像。
對(duì)于雙邊濾波[8],其權(quán)值系數(shù)由空間域權(quán)值ws和圖像灰度域權(quán)值wr組成,即w=ws×wr,其中:
式中,σs、σr為基于高斯函數(shù)的標(biāo)準(zhǔn)差,決定了雙邊濾波器的效果,限定了像素點(diǎn)的相對(duì)空間位置和灰度變化范圍。
2.3點(diǎn)云配準(zhǔn)
由于Kinect攝像頭的視角不同,因此可獲得不同視角下的深度圖像,這時(shí)就需要對(duì)這些深度圖像進(jìn)行配準(zhǔn),使其能匹配到同一坐標(biāo)系下。常用的配準(zhǔn)方法為ICP算法[911],其可提高配準(zhǔn)精度。
ICP算法為基于最小二乘法的最優(yōu)匹配方法,通過(guò)不斷迭代變換找到目標(biāo)點(diǎn)集和參考點(diǎn)集的旋轉(zhuǎn)矩陣R和平移向量t,使兩片點(diǎn)云滿足某種條件下的最優(yōu)匹配。假設(shè)待匹配點(diǎn)云為P={pi}Npi=1和X={xi}Nxi=1,對(duì)點(diǎn)集P中的每個(gè)點(diǎn)pi,尋找其在點(diǎn)集X上的最近鄰點(diǎn)作為對(duì)應(yīng)點(diǎn),假設(shè)P={pi}Npi=1的對(duì)應(yīng)點(diǎn)集為Y={yi}Npi=1,點(diǎn)云配準(zhǔn)就是尋找P和Y之間的最優(yōu)變換關(guān)系,即尋找最小的旋轉(zhuǎn)矩陣R和平移向量t,使目標(biāo)函數(shù)f最小。
2.4點(diǎn)云精簡(jiǎn)
在完成上述步驟之后,會(huì)產(chǎn)生大量多余的點(diǎn)云特征點(diǎn),直接對(duì)其操作進(jìn)行三角化會(huì)消耗大量?jī)?nèi)存和時(shí)間,因此需要對(duì)點(diǎn)云信息進(jìn)行精簡(jiǎn)。
本文采用降采樣濾波器對(duì)點(diǎn)云進(jìn)行濾波。通過(guò)一個(gè)邊長(zhǎng)約為1 cm的小立方格,將點(diǎn)云空間劃分成多個(gè)等體積的小立方體。然后,將這些立方體中的點(diǎn)用該立方體的重心來(lái)取代,如式(8)所示:
x=1n∑xi
y=1n∑yi
z=1n∑zi (8)
如下圖5所示,在立方體內(nèi)部,所有點(diǎn)的信息都會(huì)被中間的黑色的點(diǎn)所代替。
3實(shí)驗(yàn)結(jié)果
本文使用C++編程和PCL庫(kù)實(shí)現(xiàn)了依靠點(diǎn)云信息的三維場(chǎng)景重構(gòu)。本文的實(shí)驗(yàn)環(huán)境為Kinect傳感器及相關(guān)設(shè)備;操作系統(tǒng)為32位Microsoft Window7的臺(tái)式計(jì)算機(jī)一臺(tái),處理器為Intel酷睿i53470M,主頻為3.2 GHz,內(nèi)存為4 GB,硬盤(pán)為1 TB。
在本文所述的實(shí)驗(yàn)中,用Kinect傳感器獲取周?chē)鷪?chǎng)景的彩色圖像和深度圖像,對(duì)深度圖像進(jìn)行處理并修補(bǔ)孔洞。根據(jù)Kinect傳感器標(biāo)定結(jié)果得到三維點(diǎn)云信息,并通過(guò)ICP算法對(duì)點(diǎn)云信息進(jìn)行精確配準(zhǔn),然后對(duì)其進(jìn)行三角化從而得到三維場(chǎng)景,結(jié)果如圖6所示。
4結(jié)論
本文基于Kinect傳感器進(jìn)行物體三維重建,通過(guò)Kinect傳感器獲取場(chǎng)景的彩色和深度圖像,通過(guò)對(duì)深度圖像去噪并進(jìn)行預(yù)處理以及點(diǎn)云匹配等捕捉得到場(chǎng)景的精確三維點(diǎn)云,從而重建出場(chǎng)景的三維模型。實(shí)驗(yàn)表明,本文提出的方法得到的虛擬三維場(chǎng)景比較精確,可以看到其細(xì)節(jié)信息。但是,本文方法還需要進(jìn)一步優(yōu)化,以在提高精確性的同時(shí)降低處理時(shí)間,從而達(dá)到更好的實(shí)時(shí)效果。
參考文獻(xiàn)
[1] CHU J, NIE C M.Multiview point clouds registration and stitching based on SIFT feature[C]. In Proc. Int. Conf. Computer Research and Development, Shanghai, China, 2011:274278.
[2] HENRY P, KRAININ M, HERBST E, et al. RGBD mapping: using depth cameras for dense 3D modeling of indoor environments[C]. In Proc. Int. Symp. Experimental Robotics, New Delhi, India, 2010,477491.
[3] 李懷澤.基于旋轉(zhuǎn)平臺(tái)的多視角三維重建[D].杭州:浙江大學(xué),2013.
[4] DELLART F, SEITZ S M, THORPE C E, et al. Structure from motion without correspondence[C]. Proc of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2000:557564.
[5] SEITZ S M, CURLESS B, DIEBEL J, et al. A comparison and evaluation of multi-view stereo reconstruction algorithms[C]. Proc of IEEE Conference on Computer Vision and Pattern Recognition,2006:519526.
[6] NEWCOMBE R A, IZADI S, HILLIGES O, et al. KinectFusion: realtime dense surface mapping and tracking[C]. Proc of the 2011 10th IEEE Int. Symposium on Mixed and Augmented Reality, ISMAR ’11, Washington, DC, USA, 2011: 127136.
[7] LEJEUNE A, PIERARD S, VAN DROOGENBROECK M. A new jump edge detection method for 3D camera[C]. Proc of the 2011 International Conference on 3D Imaging(IC3D),2011:17.
[8] TOMASI C, MANDUCHI R. Bilateral filtering for gray and color images[C]. Proceedings of the Sixth International Conference on Computer Vision, 1998:839846.
[9] 賀永興, 歐新良, 匡小蘭. 鄰域特征在點(diǎn)云配準(zhǔn)中的應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用, 2012, 32(3): 762765.
[10] 蔣成成, 胡同森, 周維. 一種改進(jìn)的迭代最近點(diǎn)算法[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2009, 18(8):8487.
[11] 郭連朋, 陳向?qū)? 徐萬(wàn)鵬, 等. 基于kinect傳感器的物體三維重建[J]. 四川兵工學(xué)報(bào), 2014(11):119123.