周天彤,徐飛林,張旖帆,鄒 凌
(1.常州大學(xué)信息科學(xué)與工程學(xué)院,江蘇 常州 213164;2.常州市生物醫(yī)學(xué)信息技術(shù)重點實驗室,江蘇 常州 213164)
基于unity和kinect的交警手勢識別仿真系統(tǒng)的設(shè)計和實現(xiàn)
周天彤1,2,徐飛林1,張旖帆1,鄒凌1,2
(1.常州大學(xué)信息科學(xué)與工程學(xué)院,江蘇常州213164;2.常州市生物醫(yī)學(xué)信息技術(shù)重點實驗室,江蘇常州213164)
為研究計算機(jī)輔助駕駛系統(tǒng)中交警手勢的識別,搭建了一個虛擬駕駛場景的實驗室研究仿真系統(tǒng);采用了微軟公司的Kinect設(shè)備采集人體骨骼數(shù)據(jù),經(jīng)由經(jīng)驗?zāi)P吞崛√卣鞑⑹褂媚J阶R別對交警手勢信號進(jìn)行信號分類,使用unity公司的unity3D軟件實現(xiàn)虛擬駕駛場景的三維重建;系統(tǒng)測試表明,使用kinect進(jìn)行手勢識別響應(yīng)快,準(zhǔn)確率高,使用unity作為虛擬駕駛場景的開發(fā)平臺方便快捷,兩者組合非常適宜搭建基于視覺的輔助駕駛系統(tǒng)的仿真環(huán)境。
骨骼跟蹤;手勢識別;計算機(jī)輔助駕駛;虛擬現(xiàn)實
無人駕駛自動車輛是先進(jìn)城市公交的一個重要發(fā)展方向,城市交通中與交警的交互是十分關(guān)鍵的。一般而言,交警通過交通手勢來進(jìn)行現(xiàn)場指揮,采集和識別交警的手勢語言就成為了識別交警指令的重要環(huán)節(jié)。國內(nèi)的研究者采用多種方法對交警手勢識別進(jìn)行了研究:Yuan Tao,Wang Ben等設(shè)計了一種交警-信號燈同步系統(tǒng),該系統(tǒng)利用依附于交警雙手手背的三軸加速度傳感器并對所獲得的數(shù)據(jù)進(jìn)行手勢運動學(xué)的加速度特征分析從而識別交警的手勢信號[1];R.Sathyaa,M.Kalaiselvi Geethab等則采用了無隨身設(shè)備的方案,該方案從對準(zhǔn)交警的視頻流中提取差分幀,針對焦點區(qū)域(ROI)提取累積區(qū)域強(qiáng)度特征(CBIV)作為特征進(jìn)行分類和識別,從而提取交警指揮信號[2]。在信號識別方面,安云肖通過靜態(tài)圖像特征提取的方法提取了人體面積特征和骨架特征,針對特定交警手勢進(jìn)行建模,對現(xiàn)場采集到的交警圖像進(jìn)行模式匹配[3];吳巧,霍亮生等提取彩色攝影機(jī)的影像并預(yù)處理,使用圖像的輪廓特征進(jìn)行模式匹配[4]。
微軟新近推出的kinect體感設(shè)備使用CMOS紅外傳感器,以30幀/秒的速度采集景深數(shù)據(jù)流,通過預(yù)置的機(jī)器學(xué)習(xí)系統(tǒng)后可以獲得人體骨骼數(shù)據(jù),從而大大降低了人體動作采集的成本,可以將研究人員的注意力更多地放到問題上來。淦創(chuàng)使用kinect通過追蹤2個距離手部最近的關(guān)節(jié)點,再判斷深度數(shù)據(jù)變化的方法來進(jìn)行手勢識別[5]。劉陽,尚趙偉等通過kinect的關(guān)節(jié)點的運動軌跡,使用特征加權(quán)動態(tài)時間規(guī)整算法(Feature Weighting-Dynamic Time Warping,F(xiàn)W-DTW)進(jìn)行手勢邊界的分割和識別[6]。
虛擬現(xiàn)實是虛擬現(xiàn)實技術(shù)是現(xiàn)代仿真技術(shù)的一個重要發(fā)展方向,隨著技術(shù)的發(fā)展,虛擬現(xiàn)實逐步發(fā)展到想象,交互,沉浸的3I技術(shù)[7]。而構(gòu)建虛擬現(xiàn)實的技術(shù)手段也在與時俱進(jìn)。劉保衛(wèi)使用了3DSMAX作為虛擬現(xiàn)實的開發(fā)工具,對虛擬現(xiàn)實場景進(jìn)行了研究[8];況迎輝等使用OpenGL作為虛擬現(xiàn)實的開發(fā)平臺對虛擬礦道進(jìn)行三維重建[9];趙美榮等使用kinect采集人手?jǐn)?shù)據(jù),在unity平臺上對虛擬抓握的碰撞算法進(jìn)行了研究[10]。
在研究kinect識別交警手勢時,大多數(shù)研究者們采用了離線識別的方式,使用虛擬現(xiàn)實系統(tǒng)進(jìn)行在線識別和三維重建,能直觀地體現(xiàn)手勢識別的效率和準(zhǔn)確性,可以給研究人員以感性認(rèn)識。在unity3D平臺上將三維重建應(yīng)用于kinect的交警手勢識別,這方面的文獻(xiàn)尚不多見。
交警手勢識別仿真系統(tǒng),如圖1,中包含了對應(yīng)于測試者的avatar對象和其他輔助測試對象,例如運動的小車和靜止的交通燈等,這些主要對象處在一個事先定義的場景中,此外還有一些次要對象,例如光源,粒子系統(tǒng)等。仿真系統(tǒng)的原理是通過kinect for windows(2.0)通過紅外景深攝像頭可以獲得景深數(shù)據(jù),將這些深度數(shù)據(jù)轉(zhuǎn)換為人體的空間坐標(biāo),輔以虛擬空間中各個對象進(jìn)行互動,實現(xiàn)三維重建。其主要步驟為個體識別,人體部位分類及關(guān)節(jié)識別。Kinect內(nèi)預(yù)置的機(jī)器學(xué)習(xí)模塊先對人體部位分類,進(jìn)而再推斷出關(guān)節(jié)點的位置,最終將關(guān)節(jié)點坐標(biāo)提供用戶。unity3D和kinect的坐標(biāo)空間并不相同,本設(shè)計采用了第三人稱視角,將kinect獲取的骨骼數(shù)據(jù)進(jìn)行三維重建,然后在屏幕上進(jìn)行反饋,因此需要對坐標(biāo)系統(tǒng)進(jìn)行轉(zhuǎn)換,如圖1。
圖1 手勢識別仿真系統(tǒng)
1.1kinect到unity3D坐標(biāo)系的轉(zhuǎn)換
Kinect包含3種坐標(biāo)系:彩色圖像二維坐標(biāo),深度圖像空間坐標(biāo)以及相機(jī)空間坐標(biāo)系。骨骼跟蹤使用的是相機(jī)空間坐標(biāo)系。
參考卡耐基梅隆大學(xué)的開源項目Kinect Wrapper[7]的方法,要完成關(guān)節(jié)點從Kinect骨骼空間坐標(biāo)系到unity世界坐標(biāo)的轉(zhuǎn)換,可以先假定以下條件:
1)Kinect放置在高度為1 m的地方sensor Height=1。
2)相對于地面Kinect被注冊為0,0,0 KinectCenter=(0,0,2)。
3)相對于Kinect Center,Kinect傳感器朝向的點,look At=(0,1,0,0)。
首先將關(guān)節(jié)點坐標(biāo)變換到unity的世界坐標(biāo)系中。從圖1可以看出unity中世界坐標(biāo)系與Kinect骨骼坐標(biāo)系Z軸的方向剛好相反。所以先對關(guān)節(jié)點沿Z軸進(jìn)行翻轉(zhuǎn)。翻轉(zhuǎn)矩陣為(1)式:
接著 建立平 移矩陣,以(-KinectCenter.x,sensor Height-KinectCenter.y,-KinectCenter.z)即以(0,1,-2)向量進(jìn)行平移,得到平移矩陣(2)。
最后建立旋轉(zhuǎn)矩陣,根據(jù)kinect幫助所提供的計算公式(3)
來計算旋轉(zhuǎn)角度。由圖(1)可以看到,在進(jìn)行了z軸翻轉(zhuǎn)以后,kinect的朝向和unity的朝向一致,得到旋轉(zhuǎn)矩陣(4)式:
最后得到Kinect到世界坐標(biāo)的轉(zhuǎn)換矩陣(5):
通過使用MultiplyPoint3x4方法就可以完成位置變換。如圖2所示A(0,0,0)點經(jīng)矩陣變換為A'(0,1,2),B(1,1,1)經(jīng)矩陣變換為B'(1,2,1)。
圖2 世界坐標(biāo)轉(zhuǎn)換實例
1.2三維模型avatar與關(guān)節(jié)點的綁定
avatar是仿真系統(tǒng)中測試者/操作者的化身,使用kinect所獲得的關(guān)節(jié)點運動數(shù)據(jù)來驅(qū)動虛擬人物模型。在unity3D系統(tǒng)中需要將關(guān)節(jié)點數(shù)據(jù)到綁定到avatar節(jié)點。通過自動適配(Automap)模式,unity3D自動識別人物結(jié)構(gòu)并指定好骨骼結(jié)構(gòu)。這樣就可以快速方便的選中所需要的模型關(guān)節(jié)點。
在物理模型上綁定關(guān)節(jié)點數(shù)據(jù)后,需要在程序邏輯上關(guān)聯(lián)這些關(guān)節(jié)數(shù)據(jù)。將Kinect捕捉獲取到的關(guān)節(jié)點數(shù)據(jù)進(jìn)行重定向處理后將這25個關(guān)節(jié)點的數(shù)據(jù)通過Kinect ModelControlle-r V2中提供的updata方法更新到虛擬角色模型的每一幀畫面。
將關(guān)節(jié)點綁定好后,接下來就可以對其進(jìn)行三維重建操作,圖3介紹了重建流程。在初始化階段,系統(tǒng)保存了avatar的世界坐標(biāo)和狀態(tài)向量,以及虛擬空間中各個對象例如隨機(jī)產(chǎn)生的汽車的世界坐標(biāo),啟動kinect開始獲取互動者骨骼數(shù)據(jù)后,進(jìn)入幀循環(huán),將Kinect骨骼數(shù)據(jù)通過前述公式(5)映射到世界坐標(biāo),然后疊加到avatar的模型關(guān)節(jié)點。
圖3 三維重建流程圖
2.1kinect動作識別
廣義上識別的包含有兩種方式:靜態(tài)姿勢識別和動態(tài)手勢識別,這兩種識別優(yōu)缺點與使用環(huán)境都不盡相同。靜態(tài)識別方式是通過靜態(tài)的圖像幀來分析獲得人體圖像,其優(yōu)點是算法成熟穩(wěn)定性高,但是對于運動情況下的人體姿勢識別率較低,適用場合較??;動態(tài)識別方式則通過連續(xù)的圖像幀或差分幀來進(jìn)行算法分析肢體的連續(xù)動作,其優(yōu)點是適用場合較寬泛,使人更易與計算機(jī)進(jìn)行交互,但是由于算法尚不穩(wěn)定,各人動態(tài)行為具有個體特性較強(qiáng),因此識別的出錯率較高。
在本設(shè)計中,為了實現(xiàn)姿勢識別的穩(wěn)定性,采取對交警的靜態(tài)姿勢識別的方式來識別手勢信號:首先從交警手勢中選取特征姿勢向量,然后把三維空間里的特征姿勢投影到二維計算平面上,最后選取合適的關(guān)節(jié)點,進(jìn)行向量夾角計算,以關(guān)節(jié)角作為特征通過經(jīng)驗?zāi)P瓦M(jìn)行模式識別,識別成功則觸發(fā)預(yù)先定義好的動作事件。
2.2交警手勢信號識別
交警手勢信號識別的依據(jù)是《中華人民共和國道路交通安全法》及其實施條例。實施條例中包含了多個交警手勢規(guī)范,圖4為較典型的左轉(zhuǎn)手勢的識別。
條例規(guī)定了交警左轉(zhuǎn)彎手勢的動作規(guī)范為右臂向前平伸,掌心向前;左臂與手掌平直左轉(zhuǎn)彎信號左轉(zhuǎn)彎信號向右前方擺動,掌心向右。根據(jù)規(guī)定,經(jīng)驗?zāi)P偷脑O(shè)計選取姿勢在YZ面上的投影,以雙肩中央(SpineShoulder)到脊柱中段(Spine-Mid)為向量一,以左肘關(guān)節(jié)(Elbowleft)到(Wristleft)為向量二,計算向量一與向量二之間的夾角,如果夾角在(35,55)之間,且身體右肩(Shoulder Right)與右肘(ElbowRight)的高度差小于0.15,則判斷為左轉(zhuǎn)手勢。
圖4 交警左轉(zhuǎn)手勢及相應(yīng)數(shù)學(xué)模型
本仿真系統(tǒng)中包含了一些互動對象,例如接受交警指揮行進(jìn)的汽車和與交警手勢同步的信號燈等。這些互動對象可分為動作對象和靜止對象,對于動作對象,例如虛擬汽車,unity提供了由NVIDIA設(shè)計的可以執(zhí)行復(fù)雜物理運算的PhysX物理引擎系統(tǒng)。
將物理引擎匹配到虛擬車輛時,需要給車輛添加剛體(Rigidbody)組件,這樣車輛就會擁有質(zhì)量屬性,從而遵循萬有引力定律,給車輛添加一個盒子碰撞器(Box Collider),可以與地面產(chǎn)生碰撞之后確保車輛不會下落。為使車輛產(chǎn)生運動效果,還需要在車輛上附加程控的車輪碰撞器(Wheel Collider)。在腳本程序中,控制車輪碰撞器組件的電機(jī)力矩(motor Torque)和轉(zhuǎn)向角(steer Angle)就可以實現(xiàn)車輛的前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),加速,減速等物理行為。
仿真系統(tǒng)的測試分為兩個步驟,首先是動作測試,其測試目的是測試avatar是否跟隨操作者運動,以及隨動效率。測試的動作選擇動作幅度較大的抬腿動作,當(dāng)測試者抬起右腳,kinect檢測到測試者抬起右腳,虛擬人物模型就會跟隨測試者動作抬起右腳,其響應(yīng)效率極高,基本感覺不到動作延遲,說明微軟的骨骼識別算法具有很高的效率。
仿真系統(tǒng)測試的第二個環(huán)節(jié)是手勢識別有效性測試。測試者模仿交警各種交通指揮手勢,系統(tǒng)檢測到該手勢信號,便控制虛擬場景中的互動元素做相應(yīng)的行為。測試者模仿交警的直行放行手勢時,虛擬場景中的汽車正在通過路口。測試結(jié)果表明當(dāng)測試者動作幅度較緩慢時能夠準(zhǔn)確識別交警信號,然而測試者動作幅度較大時,有誤識別現(xiàn)象。這證明了手勢識別系統(tǒng)中,采用前述靜態(tài)手勢識別具有較好識別靜態(tài)或者緩慢運動的體姿的特點,而在真正的輔助駕駛應(yīng)用中,需要考慮動態(tài)體姿識別作為靜態(tài)體姿識別的補充。
本設(shè)計針對傳統(tǒng)三維重建的方法方式具有成本高昂,結(jié)構(gòu)復(fù)雜,開發(fā)周期長等問題,提出基于Kinect骨骼數(shù)據(jù)進(jìn)行人體三維重建,并使用unity構(gòu)建虛擬現(xiàn)實的手勢識別仿真系統(tǒng)的方案,對該仿真系統(tǒng)的識別有效性,互動有效性和識別效率做了檢驗。構(gòu)建仿真系統(tǒng)和測試實現(xiàn)的結(jié)論是使用kinect作為手勢識別的技術(shù)和性,采用unity 3D作為虛擬現(xiàn)實的場景架構(gòu),具有開發(fā)方便,響應(yīng)快捷,識別準(zhǔn)確的特點,可以用于輔助駕駛或自動駕駛系統(tǒng)的的手勢識別模塊的研究。
[1]Yuan Tao,Wang Ben,et al.Accelerometer-based Chinese Traffic Police Gesture Recognition System[J].電子學(xué)報:英文版,2010:270-274.
[2]Sathya R,Geetha M K.Framework for Traffic Personnel Gesture Recognition[J].Procedia Computer Science,2015:1700-1707.
[3]安云肖.基于視覺靜態(tài)交警手勢識別算法的研究 [D].天津:河北工業(yè)大學(xué),2009.
[4]吳巧,霍亮生.交警手勢的圖像處理與識別[J].北京工商大學(xué)學(xué)報:自然科學(xué)版,2009,27:33-36.
[5]淦創(chuàng).基于3D體感技術(shù)的動態(tài)手勢識別[J].光電技術(shù)應(yīng)用,2012,27(4):55-58.
[6]劉陽,尚趙偉.基于Kinect骨架信息的交通警察手勢識別[J].計算機(jī)工程與應(yīng)用,2015:157-161.
[7]鄒湘軍,孫健,何漢武,等.虛擬現(xiàn)實技術(shù)的演變發(fā)展與展望[J].系統(tǒng)仿真學(xué)報,2004(9):1905-1909.
[8]劉保衛(wèi).虛擬現(xiàn)實場景的建模特點及生成效果[J].,計算機(jī)工程與應(yīng)用,2014:137-141.
[9]況迎輝,王成,姜曉彤.基于虛擬現(xiàn)實技術(shù)的煤礦事故三維重現(xiàn)[J].計算機(jī)測量與控制,2010,18:2885-2887.
[10]趙美榮,田衛(wèi)萍,熊風(fēng)光,等.基于Kinect和Unity的虛擬手抓取碰撞檢測算法[J].計算機(jī)測量與控制,2015(6):2076-2078.
Design and Implementation of Simulation System About Traffic Police Gesture's Recognition Based on Unity and Kinect
Zhou Tiantong1,2,Xu Feilin1,Zhang Yifan1,Zou Ling1,2
(1.Faculty of Information Science&Engineering,Changzhou University,Changzhou213164,China;2.Changzhou Key Laboratory of Biomedical Information Technology,Changzhou213164,China)
In order to study about traffic police gesture's recognition in computer aided driving system,a laboratory system is built to simulate on virtual traffic scene.The device Kinect produced by Microsoft is used to gather the body skeleton data,then features are extracted through experience mode,pattern recognition of traffic police gesture's is used for signal classification,a software Unity 3D produced by Unity is used to realize three-dimensional reconstruction of the virtual traffic scene.The system test shows that using Kinect to recognize gesture can get quickly response and high accuracy rate,and using unity 3D as development platform to realize virtual traffic scene can be convenient and efficient,the combination of both are very suitable for building the computer aided driving system based on visual simulation environment.
skeleton tracking;gesture recognition;computer aided driving;virtual reality
1671-4598(2016)05-0156-04
10.16526/j.cnki.11-4762/tp.2016.05.045
TP3
A
2015-09-25;
2015-12-07。
國家自然基金項目(61201096);常州市科技項目(CE20145055);江蘇省青藍(lán)工程資助。
周天彤(1972-),男,江蘇常州人,講師,主要從事腦-機(jī)接口方向的研究。
鄒凌(1975-),女,遼寧遼陽人,教授,主要從事腦-機(jī)接口方向的研究。