樊景超 周國民
摘要:采用微軟空間掃描設(shè)備kinect的測距數(shù)據(jù)會產(chǎn)生隨機跳變誤差現(xiàn)象。通過分析誤差原因及實驗驗證了跳變誤差隨距離增加曲線上升的特點。為修正該誤差設(shè)計了一個基于像素濾波技術(shù)的誤差修正算法。在kinect有效距離內(nèi)連續(xù)觀測三個待測物的空間深度數(shù)據(jù)和濾波數(shù)據(jù)。經(jīng)實驗驗證在使用10幀深度數(shù)據(jù)可以將跳變誤差在1.5m以內(nèi)的跳變誤差控制在5mm以內(nèi);1.5~3m以內(nèi)的隨機跳變誤差控制大部分在10mm以內(nèi);超過3m的隨機誤差均勻分布在25mm以內(nèi)。
關(guān)鍵詞:隨機跳變;深度數(shù)據(jù);濾波;kinect
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)22-5328-05
1 概述
三維空間深度數(shù)據(jù)在監(jiān)控,機器人技術(shù)和醫(yī)學(xué)等應(yīng)用領(lǐng)域有很大潛力。目前阻礙這一應(yīng)用的主要原因?qū)I(yè)設(shè)備價格昂貴,入門級的低成本空間傳感技術(shù)設(shè)備的引入是推廣這一應(yīng)用的關(guān)鍵[1]。微軟于2010年推出體感設(shè)備kinect,該設(shè)備主要用于Xbox游戲中與用戶進(jìn)行自然交互,而不需要任何輔助設(shè)備[2]。然而 Kinect的數(shù)據(jù)捕獲特性吸引了國外研究人員從其他領(lǐng)域[3-11]進(jìn)行研究。國內(nèi)研究人員也對kinect在醫(yī)療、教育、人體識別和空間建模等領(lǐng)域進(jìn)行了相關(guān)研究[16-28]。
Kinect感應(yīng)器能夠同時捕捉深度和彩色圖像在高達(dá)30 fps的幀速率的深度和顏色數(shù)據(jù),其中包含約30萬點的點云數(shù)據(jù)整合在每一幀。入門級設(shè)備低成本的代價是降低對空間數(shù)據(jù)精度的控制。Kinect設(shè)備的成功主要歸功于其對空間深度數(shù)據(jù)的測量,然而其空間測量的主要設(shè)備發(fā)射器和接收器由于沒有重合在一起導(dǎo)致獲取的深度圖像會產(chǎn)生兩方面的誤差一個是由于物體遮擋而無法令接受器接收反射數(shù)據(jù)而產(chǎn)生的深度圖像黑洞即“偽影”現(xiàn)象;另一個是對于物體測距不穩(wěn)定而產(chǎn)生隨機跳變現(xiàn)象。前人的研究大多主要針對“偽影”的消除進(jìn)行了很好的研究,而對于隨機跳變現(xiàn)象的研究相對較少。為了實現(xiàn)傳感器在應(yīng)用程序中基于深度數(shù)據(jù)進(jìn)行高精度控制,對隨機跳變的誤差分析和濾波研究是必要的。
本文首先介紹kinect深度測距的原理及其誤差產(chǎn)生的原因,并對誤差進(jìn)行了測試,然后對跳變誤差進(jìn)行濾波研究,使得深度數(shù)據(jù)的誤差可以控制在一定的精度范圍內(nèi)。
2 Kinect隨機跳變誤差現(xiàn)象及分析
Kinect是微軟在2010年6月14日對XBOX360體感周邊外設(shè)正式發(fā)布的名字,其設(shè)備如圖1所示。Kinect一共有三個攝像頭,中間一個是RGB攝像頭用來獲取640*480的彩色圖像,每秒鐘最多獲取30幀圖像;兩邊的是深度傳感器,左側(cè)的是紅外線發(fā)射器,右側(cè)的是紅外線接收器,用來檢測玩家的相對位置。Kinect的兩側(cè)是一組四元麥克風(fēng)陣列,用于生源定位和語音識別;下方還有一個內(nèi)置馬達(dá)的底座,可以調(diào)整俯仰角。
Kinect采集三維圖像的光學(xué)部分主要包括兩個部件:紅外線發(fā)射器和紅外線/VGA攝像頭組。其工作原理[14]是,紅外線發(fā)射器發(fā)出紅外線覆蓋整個Kinect的可視范圍,攝像頭組接收反射回光線來識別玩家的距離和特征。紅外攝像頭可以識別到的是物體的“深度場”(Depth Field),其中每一像素的顏色代表了那一點物體到攝像頭平面的距離。如圖2所示,是實驗室內(nèi)不同空間距離的物體的空間深度圖。離攝像頭近的物體呈淺色等,而離攝像頭遠(yuǎn)的物體則呈暗灰色。
然而kinect獲取的空間深度數(shù)據(jù)并不穩(wěn)定,使用幀差法即將當(dāng)前幀與前一幀深度數(shù)據(jù)在在有效取值(0.8~4米)的數(shù)據(jù)進(jìn)行等值判斷:如果深度數(shù)據(jù)沒有變化在改坐標(biāo)點使用藍(lán)色顯示,如果不等則用白色顯示,其他區(qū)域用原值進(jìn)行顯示。如圖3所示kinect的室內(nèi)場景的空間深度數(shù)據(jù)出現(xiàn)了大量的白色噪聲點,而這些白色噪聲隨著時序變換在不同位置隨機出現(xiàn),在連續(xù)觀測下呈現(xiàn)跳動的視覺效果,這就是隨機跳變現(xiàn)象。
Kinect的三角測量原理[12]如圖4所示。圖中b為基線距離,即紅外投影儀與紅外相機之問的距離,f為紅外相機的焦距,Z為kinect光軸的方向。參考平面距離kinect平面的距離Zo為已知的,當(dāng)紅外投影儀將敗斑投射到參考平面附近的平面,該散斑在紅外相機成像的時候相對于參考散斑在基線方向上會存在一定位置的漂移,所有散斑的漂移都可以通過一個簡單的圖像相關(guān)過程測得,這樣就可以得到一幅視差圖,然后對于空間中的任一點,其與kinect之間的距離就可以通過對應(yīng)的視差獲得。
以圖中的目標(biāo)點k為例,假設(shè)在參考平面上有一個物體,其表面上的O點處的散斑會被紅外相機捕獲,當(dāng)該物體稍微位移一段距離后,紅外相機中的散斑也會在基線方向位移一段距離d,這段距離就是k點對應(yīng)的視差距離,從三角形的相似性,可以得出:
Kinect深度測量的精度指的是其空間分辨率,也就是其沿著光軸方向能夠分辨出不同等級視差所需要的距離,其精度越高,所需要的距離越低。設(shè)分辨不同等級視差所需要的空間距離為[ΔZ],Z(do)是以量化視差測量值do為參數(shù)的深度函數(shù),那么這個空間距離[ΔZ],就可以簡單的用以相鄰等級的量化視差測量值為參數(shù)的兩個深度函數(shù)相互作差得到,結(jié)果如公式4所示。
式4中, [ΔZ]越小,說明kinect的精度越高,從式4中可以看出kinect的精度也是物體和kinect之間的距離的平方成反比的。kinect在工作的時候會存在深度測量值偏離平均值且空間分辨率越來越低的情況,這就是造成深度圖像中深度值隨時間跳變的主要原因[15]。
3 基于像素濾波的誤差修正算法
3.1 基本原理
根據(jù)kinect深度數(shù)據(jù)隨機跳變的特點,該文使用像素濾波進(jìn)行去噪處理并檢驗去噪效果。像素濾波是典型的線性濾波算法,該算法將同一坐標(biāo)位置的時序數(shù)據(jù)進(jìn)行加權(quán)濾波并作為當(dāng)前修正數(shù)據(jù)。該算法的實現(xiàn)方式是使用不同時刻的前后數(shù)據(jù)幀作為STL隊列的一個元素,當(dāng)隊列元素個數(shù)少于設(shè)定值時數(shù)據(jù)幀只裝入隊列不進(jìn)行運算,當(dāng)元素個數(shù)大于設(shè)定值時則進(jìn)行出棧入棧操作。由于同一幀深度數(shù)據(jù)包含的30萬個數(shù)據(jù)點之間相互獨立,因此使用多線程對30萬個數(shù)據(jù)點進(jìn)行并行計算。并行計算的內(nèi)容是將不同數(shù)據(jù)幀在同一坐標(biāo)位置的深度數(shù)據(jù)進(jìn)行依次加權(quán)平均,最新的數(shù)據(jù)幀獲得的權(quán)值最大。
3.2 實驗方法與材料
實驗材料有:Kinect for windows 設(shè)備一臺,聯(lián)系 Thinkstation 工作站一臺(3.7G雙核CPU,6GB內(nèi)存),卷尺一個。在實驗室內(nèi)準(zhǔn)備了使用果樹樹枝和防止蘋果樹葉和蘋果果實(直徑9cm)組裝了一個觀測目標(biāo),如圖5所示。主要將蘋果的中心點作為跟蹤測量點,以5cm為間隔,不斷拉大待測物體和kinect感應(yīng)器之間的距離,從0.9m~3.9m連續(xù)記錄待測目標(biāo)的深度圖像和深度數(shù)據(jù)。
實驗方法:普通深度數(shù)據(jù)是一個只有深度值按坐標(biāo)順序排列的數(shù)據(jù)序列。為了便于程序查找,實驗將坐標(biāo)和深度值形成一個(X,Y,D)的字符串保持在文本文件中。根據(jù)蘋果的深度圖像的坐標(biāo)點形成一個反向查找的坐標(biāo)文件。程序根據(jù)反向查找的坐標(biāo)文件讀取到三個待測物的坐標(biāo)值字符串,然后遍歷文件夾中的文件,依次查找坐標(biāo)的空間深度值,然后導(dǎo)入到excel文件中,再進(jìn)行分析。
3.3 實驗結(jié)果與分析
3.3.1 隨機跳變誤差
實驗首先檢測kinect測距數(shù)據(jù)是否正確,圖6是三個待測物的空間測距隨實驗距離變化的統(tǒng)計表。從圖中可以看出,三個待測物的kinect深度數(shù)據(jù)隨著基座距離的不斷增加呈線性增長,說明了kinect在0.8~4m這個有效區(qū)間內(nèi)的深度值還是相對可靠的。
圖7是三個待測物在不同測距上跳變誤差的統(tǒng)計圖表。通過采集10幀數(shù)據(jù),然后獲取最大、最小值的差值作為該待測物在當(dāng)前距離下的跳變誤差。通過圖7可以直觀的看出,三個待測物的隨機跳變誤差主要分布在三個區(qū)域:一個是X坐標(biāo)軸上誤差為0;第二個區(qū)域是中間隨距離變化呈曲線上升態(tài)勢。第三個區(qū)域是離散誤差區(qū)域,誤差相對較大,隨著距離增加也成曲線上升態(tài)勢。從統(tǒng)計圖中可以看出:當(dāng)距離在1m附近相對集中10mm以內(nèi);距離在1~2m范圍內(nèi)的誤差主要集中在10mm上下的范圍;在2m~3m范圍的隨機跳變誤差主要集中10~20mm以內(nèi),但是零星的大誤差開始出現(xiàn);當(dāng)距離超過3m時隨機跳變誤差已經(jīng)超過30mm。整個統(tǒng)計圖也體現(xiàn)了隨機跳變的特點,說明kinect所采用的三角測量法可以保證深度數(shù)據(jù)一部分的測距穩(wěn)定。
3.3.2 濾波效果
圖8是統(tǒng)計像素濾波在不同距離(0,9~3,9m,間隔5cm)和不同幀數(shù)(4~18,間隔2) 情況下的隨機跳變誤差統(tǒng)計圖表。圖中X軸方向是基座到kinect平面的距離值,Y軸方向是像素濾波法參與運算的數(shù)據(jù)幀個數(shù),Z軸方向是跳變誤差的統(tǒng)計值,統(tǒng)計方法同上。通過圖表可以直觀的看出沿X軸方向隨機跳變誤差在濾波情況下誤差緩慢增加,而沿Y軸方向隨著幀數(shù)的增加,隨機跳變誤差不斷降低,而且超過20mm的誤差基本被過濾掉了。從統(tǒng)計圖可以看出在使用10~14幀像素濾波對隨機跳變誤差過濾效果最好。
圖9是三個待測物在不同測距上對跳變誤差使用像素濾波(10幀數(shù)據(jù))的統(tǒng)計圖表。通過采集10幀數(shù)據(jù),然后獲取最大、最小值的差值作為該待測物在當(dāng)前距離下的跳變誤差。通過圖9可以直觀的看出:在1.5m以內(nèi)的跳變誤差控制在5mm以內(nèi);1.5~3m以內(nèi)的隨機跳變誤差控制大部分在10mm以內(nèi);超過3m的隨機誤差均勻分布在25mm以內(nèi)。
4 結(jié)束語
本文介紹了Kinect感應(yīng)器獲取的深度數(shù)據(jù)隨機跳變現(xiàn)象的理論和實驗驗證,最后進(jìn)行了濾波研究。實驗證明kinect空間深度數(shù)據(jù)的隨機跳變誤差隨著距離的增加呈曲線上升態(tài)勢且誤差較大。通過運用像素濾波法,參與運算的數(shù)據(jù)幀數(shù)在10~14幀時的濾波效果最好。
參考文獻(xiàn):
[1] Microsoft. Kinect. Available online: http://www.xbox.com/en-us/kinect/ (accessed on 14 December 2011).
[2] PrimeSense. Available online: http://www.primesense.com/ (accessed on 14 december 2011).
[3] Amit, B.Dagan, E. Gershom, K.Alon, L. Yinon, O.; Yaron, Y. Enhanced interactive gaming by blending full-body tracking and gesture animation. In roceedings of the ACM SIGGRAPH ASIA 2010 Sketches, Seoul, Korea, 15-18 December 2010.
[4] Andrew, D.W. Using a depth camera as a touch sensor. In Proceedings of the ACM International Conference on Interactive Tabletops and Surfaces, Saarbrucken, Germany, 7-10 November 2010.
[5] Chang, Y.J.;Chen, S.F. Huang, J.D. A Kinect-based system for physical habilitation: A pilot study for young adults with motor disabilities. Res. Dev. Disabil. 2011, 32, 2566-2570.
[6] Gottfried, J.M.;Fehr, J. Garbe, C.S. Computing range flow from multi-modal Kinect data. In Proceedings of the 7th International Symposium on Visual Computing, ISVC 2011, Las Vegas, NV, USA, 26-28 September 2011; Volume 6938, pp. 758-767.
[7] Stowers, J.; Hayes, M.; Bainbridge-Smith, A. Altitude control of a quadrotor helicopter using depth map from Microsoft Kinect sensor. In Proceedings of the IEEE International Conference on Mechatronics, ICM 2011, Istanbul, Turkey, 13-15 April 2011; pp. 358-362.
[8] Walker, B. Caroline, P. William, D.S. Using depth information to improve face detection. In Proceedings of the 6th International Conference on Human-Robot Interaction, Lausanne, Switzerland, 6-9 March 2011.
[9] Benavidez, P. Jamshidi, M. Mobile robot navigation and target tracking system. In Proceedings of the 6th International Conference on System of Systems Engineering: SoSE in Cloud Computing, Smart Grid, and Cyber Security, SoSE 2011, Albuquerque, NM, USA, 2011; pp. 299-304.
[10] Raptis, M.Kirovski, D. Hoppe, H. Real-time classification of dance gestures from skeleton animation. In Proceedings of the 10th Annual ACM SIGGRAPH/Eurographics Symposium on Computer Animation, SCA 2011, Vancouver, BC, Canada, 5-7 August 2011. pp. 147-156.
[11] Riche, N.; Mancas, M.; Gosselin, B.; Dutoit, T. 3D Saliency for abnormal motion selection: The role of the depth map. In Proceedings of the 8th International Conference on Computer Vision Systems, ICVS 2011, Sophia Antipolis, France, 20-22 September 2011; Volume 6962, pp. 143-152.
[12] Kourosh Khoshelham. Accuracy and Resolution of Kinect Depth Data for Indoor Mapping Applications. Sensors 2012, 12, 1437-1454.
[13] 吳國斌.Kinect人機交互開發(fā)實踐[M].北京:人民郵電出版社,2013:4-5.
[14] 余濤.kinect應(yīng)用開發(fā)實踐[M].北京:機械工業(yè)出版社,2012:41-45.
[15] 趙旭.kinect深度圖像修復(fù)技術(shù)研究[D].大連:大連理工大學(xué),2013.
[16] 宋宏泉.虛擬現(xiàn)實技術(shù)在現(xiàn)代醫(yī)學(xué)教育中的應(yīng)用[J].齊齊哈爾醫(yī)學(xué)院學(xué)報,2006,8(27):984-985.
[17] 陳晨,王亞平,劉小鴻,等.基于kinect體感系統(tǒng)的虛擬現(xiàn)實技術(shù)在醫(yī)學(xué)教育中的可行性初探[J].中國醫(yī)學(xué)教育技術(shù),2012,6(26):667-670.
[18] 呂開陽.kinect體感技術(shù)在動物外科實驗教學(xué)中的應(yīng)用及展望[J].中國醫(yī)學(xué)教育技術(shù),2012,2(26):171-173.
[19] 黃康全,陳碧金,等.kinect在視頻會議系統(tǒng)中的應(yīng)用[J].廣西大學(xué)學(xué)報:自然科學(xué)版,2011,36:308-314. (下轉(zhuǎn)第5349頁)
(上接第5332頁)
[20] 韓旭.應(yīng)用kinect的人體行為識別方法研究與系統(tǒng)設(shè)計[D].濟南:山東大學(xué),2013.
[21] 鄧小園.基于kinect運動捕捉的高爾夫揮桿分析與輔助訓(xùn)練系統(tǒng)的研制[D].北京:北京郵電大學(xué),2013:7-9.
[22] 楊林.基于kinect的人體目標(biāo)檢測與跟蹤[D].大連:大連海事大學(xué),2013:8-15.
[23] 馬慶.基于Kinect的實時人體動畫合成及重定向技術(shù)研究[D].杭州:浙江工業(yè)大學(xué),2012:11-15.
[24] 楊曉敏,張奇志,周亞麗.基于kinect深度信息的人體運動跟蹤算法[J].北京信息科技大學(xué)學(xué)報,2013,1(28):33-36.
[25] 魏尚.基于kinect深度圖像的三維人臉識別技術(shù)研究[D].天津:天津師范大學(xué),2012.
[26] 楊景旭.利用kinect估計人體頭部姿態(tài)[D].南京:南京理工大學(xué),2012.
[27] 丁友東,吳學(xué)純.基于kinect的人體對象視頻自動分割[J].電子測量技術(shù),2013(4):48-50.
[28] 黃露丹,嚴(yán)利民.基于kinect深度數(shù)據(jù)的人物檢測[J].計算機技術(shù)與發(fā)展,2013,4(23):121-124.