趙建敏, 許曉偉, 賈慧媛
(1.內(nèi)蒙古科技大學 信息工程學院,內(nèi)蒙古 包頭 014010;2.內(nèi)蒙古科技大學 學工部,內(nèi)蒙古 包頭 014010)
基于Kinect體感傳感器的心理宣泄系統(tǒng)的實現(xiàn)
趙建敏1, 許曉偉1, 賈慧媛2
(1.內(nèi)蒙古科技大學 信息工程學院,內(nèi)蒙古 包頭 014010;2.內(nèi)蒙古科技大學 學工部,內(nèi)蒙古 包頭 014010)
擊打宣泄是心理宣泄療法的主要手段?;贙inect體感傳感器和Direct3D圖形繪制編程接口,設(shè)計并實現(xiàn)了心理宣泄系統(tǒng)。系統(tǒng)利用Kinect體感傳感器采集人體關(guān)節(jié)點坐標信息,控制虛擬拳頭擊打虛擬擊打?qū)ο?,模擬真實拳擊運動,通過擊打?qū)崿F(xiàn)心理宣泄。實驗表明:該系統(tǒng)不僅能獲得良好的心理宣泄效果,而且,可以為健身運動提供新的體驗平臺,其計算出的擊打力還可作為拳擊訓練的重要參考標準。
Direct3D; Kinect; 傳感器; 心理宣泄系統(tǒng); 擊打力
2010年,微軟公司發(fā)布了Kinect體感傳感器,新興的體感交互方式強勢崛起,打破了傳統(tǒng)的人機交互方式,使人機交互的理念更徹底地展現(xiàn)出來,且被廣泛地應(yīng)用于各行各業(yè)。
心理治療中,“宣泄療法”是一種常見的有效的減壓方法。隨著對心理健康的重視和心理健康教育的普及,很多學校甚至企業(yè)都創(chuàng)建了心理宣泄室。然而,傳統(tǒng)的心理宣泄室,場景單一,對象單一,成本投資大,治療效果受限。
本文提出了一種基于Kinect體感傳感器的虛擬心理宣泄系統(tǒng),利用Kinect傳感器追蹤人體骨骼,獲取身體運動關(guān)節(jié)點坐標[1,2],結(jié)合Direct3D圖形繪制接口,模擬拳擊運動,實現(xiàn)心理宣泄,呈現(xiàn)出了良好的擊打宣泄效果。該系統(tǒng)不僅能獲得良好的心理治療效果,而且為拳擊運動愛好者提供了全新的健身體驗平臺。同時,系統(tǒng)中設(shè)計的基于圖像的擊打力量計算算法,可以為專業(yè)拳擊運動員拳擊訓練提供新的輔助手段。此外,也為體感交互技術(shù)開辟了新的應(yīng)用領(lǐng)域。
本文參照真實拳擊運動項目設(shè)計了基于Direct3D和體感交互技術(shù)的心理宣泄系統(tǒng)。該系統(tǒng)通過Kinect體感設(shè)備對人體動作進行采集捕捉,獲得人體的骨骼圖像數(shù)據(jù),篩選出左、右手和手腕關(guān)節(jié)點的坐標。將手的坐標和虛擬拳頭進行綁定,以現(xiàn)實中的人手帶動屏幕中的虛擬拳頭完成擊打動作,并計算出出拳速度和擊打力。參照拳擊訓練人偶,虛擬擊打?qū)ο笤谔摂M拳頭的擊打下,根據(jù)拳速和擊打力搖擺或倒地,體現(xiàn)擊打效果,實現(xiàn)心理宣泄。通過Direct3D圖形繪制接口可進行場景、虛擬擊打?qū)ο竽P秃吞摂M拳頭模型的加載、渲染。系統(tǒng)的總體結(jié)構(gòu)圖如圖1所示。
圖1 心理宣泄系統(tǒng)總體結(jié)構(gòu)圖Fig 1 Overall structure of psychological catharsis system
通過Kinect設(shè)備的骨骼追蹤技術(shù)獲取人體骨骼圖像信息[3],從中取出關(guān)鍵關(guān)節(jié)點坐標,并進行處理,具體實施流程圖如圖2所示。
圖2 圖像信息的獲取和處理流程圖Fig 2 Flow chart of acquiring and processing of image information
首先,進行體感設(shè)備初始化,分為兩部分:檢查Kinect設(shè)備狀態(tài)和創(chuàng)建設(shè)備ID。檢查Kinect設(shè)備的狀態(tài),主要是檢查Kinect設(shè)備是否連接到電腦上和Kinect設(shè)備的驅(qū)動是否安裝成功;若設(shè)備狀態(tài)正常,NuiCreateSensorByIndex函數(shù)創(chuàng)建設(shè)備ID。
其次,檢查是否追蹤到人體骨骼,只有人體和Kinect在一定的距離范圍內(nèi),設(shè)備才能進行骨骼追蹤。完成骨骼追蹤后,檢查獲得的骨骼信息中是否含有關(guān)節(jié)點坐標。Kinect傳感器追蹤到人體后,會有2種追蹤狀態(tài):NUI_SKELETON_POSITION_ONLY狀態(tài),僅包含骨骼中心點的坐標,此狀態(tài)舍去;NUI_SKELETON_TRACKED狀態(tài),包含所有關(guān)節(jié)點坐標,從中取出手和手腕關(guān)節(jié)點坐標。
最后,完成骨骼坐標系到深度坐標系、深度坐標系到屏幕坐標系的轉(zhuǎn)換。利用NuiTransformSkeletonToDepthImage函數(shù)可將骨骼坐標系轉(zhuǎn)換到深度坐標系,用于拳速和擊打力的計算。
由于控制虛擬拳頭是在屏幕坐標系內(nèi)完成,因此,需要將深度坐標系轉(zhuǎn)換成屏幕坐標系。屏幕橫縱坐標的計算見式(1)和式(2)
(1)
(2)
其中,x,y為深度坐標系中的坐標值,width,height為顯示窗口的寬度和高度, ScreenWidth,ScreenHeight為默認的深度圖像分辨率的寬度和高度。
系統(tǒng)將人手關(guān)節(jié)點的屏幕坐標賦值給虛擬拳頭的中心點,實現(xiàn)人手和虛擬拳頭之間的綁定,以現(xiàn)實中的人手帶動屏幕中的虛擬拳頭完成擊打動作。
首先,進行虛擬拳頭的渲染。在3DSMAX軟件中模仿出拳前臂,繪制出拳頭模型,并賦予其材質(zhì)和人體皮膚紋理,再以微軟定義的3D模型文件格式即.X文件格式導(dǎo)出[4]。在程序中,用D3DXLoadMeshFromX函數(shù)加載.X格式文件,讀出材質(zhì)和紋理,并設(shè)定光照,進行渲染。
其次,進行虛擬拳頭的控制,包含2個方面:位置移動控制和出拳姿態(tài)控制。
1)位置移動控制:在程序中,左、右手的坐標定義如下:
D3DPositionScreenHandLeft= {0};
D3DPositionScreenHandRight= {0};
其中D3DPosition結(jié)構(gòu)體的定義如下:
typedefstructD3DPosition
{
floatx;
floaty;
floatz;
}D3DPosition.
從骨骼追蹤數(shù)據(jù)中獲取左、右手關(guān)節(jié)點坐標,并將其轉(zhuǎn)化為屏幕坐標,為變量ScreenHandLeft,ScreenHandRight賦值。在虛擬拳頭渲染的時候,將變量ScreenHandLeft,ScreenHandRight的值放入拳頭的世界變換的平移變換中,實現(xiàn)虛擬拳頭的位置跟隨操控。
2)出拳姿態(tài)控制:將左、右手臂等效為2個空間向量:LeftArmVector和RightArmVector,通過4個關(guān)節(jié)點坐標即左、右手關(guān)節(jié)點坐標(ScreenHandLeft和ScreenHandRight)和左、右手腕關(guān)節(jié)點坐標(ScreenWristLeft和ScreenWristRight)計算出。之后,根據(jù)手臂空間向量的方向在系統(tǒng)中調(diào)整虛擬拳頭姿態(tài),使其根據(jù)真實前臂方向改變自身方向。
對于左拳頭姿態(tài)改變,獲取當前的ScreenHandLeft的坐標為(x0,y0,z0),ScreenWristLeft的坐標為(x1,y1,z1),則左前臂向量LeftArmVector的坐標為(x0-x1,y0-y1,z0-z1),將此向量投影到XZ平面上,它與Z軸的夾角fAngleY就決定了虛擬拳頭繞拳頭中心點左、右方向旋轉(zhuǎn)的角度。其中,fAngleY的計算如式(3)
(3)
將左前臂向量投影到Y(jié)Z平面上,它與Y軸的夾角fAngleX決定了虛擬拳頭繞拳頭中心點上、下方向旋轉(zhuǎn)的角度。其中,fAngleX的計算如式(4)
(4)
將角fAngleX和fAngleY分別給拳頭模型的世界變換中的繞X軸和Y軸旋轉(zhuǎn)的2個旋轉(zhuǎn)變換,就可以實現(xiàn)左拳頭隨著前臂方向改變進行自身姿態(tài)的變化。
對于右拳頭的姿態(tài)改變,具體計算方法如同左拳頭。
系統(tǒng)中,擊打?qū)ο蠓抡嫒伺嫉膭?chuàng)建和渲染與虛擬拳頭相同,將其固定在屏幕的虛擬擊打場地中央,人偶上身作為擊打目標,響應(yīng)擊打動作。
人體作出擊打動作且屏幕中的拳頭擊中人偶的上半身時,計算出拳速度和擊打力,其流程圖如圖3所示。
圖3 拳擊擊打流程圖Fig 3 Flow chart of boxing hitting
首先,設(shè)置擊打目標區(qū)域,其計算方法如下:
將上半身目標區(qū)域等效為定邊長矩形,其中心點的位置隨擊打后人偶擺動而變化,如圖4所示。
圖4 擊打目標區(qū)域變化等效圖Fig 4 Equivalent diagram of change of hitting target area
圖4以人偶模型底部的中心點為原點,建立一個坐標系。初始時,人偶模型不動,與y軸重合,設(shè)人偶模型的高度為l,矩形的寬為w,高為h,則矩形中心點A的坐標為(0,l-h/2)。當受到擊打后,人偶模型開始搖擺,當擺角為α時,設(shè)中心點A′的坐標為(x,y),計算如下
(5)
(6)
當模型向右偏,位于第一象限時,x取正;向左偏,位于第二象限時,x取負。將獲得的中心點坐標加減矩形的長寬,可獲得目標區(qū)域矩形的4個點坐標。
其次,基于擊打目標區(qū)域判定是否擊中目標,若左手關(guān)節(jié)點的屏幕坐標落入目標區(qū)域,認為左手擊中目標;否則,同樣的方法判定右手是否擊中目標。
無論是左手還是右手擊中目標后,將其在當前幀和前一幀中的深度坐標系坐標賦值給變量CurrentHandPosition0和LastHandPosition0。在深度坐標系中,X,Y為像素值,Z分量為長度,單位mm。為實現(xiàn)拳速計算,做如下標度變換:設(shè)變量坐標在單位換算前的值為(x0,y0,z0),換算后為(x,y,z),則根據(jù)KinectSDK中的像素和單位“m”的換算程序得到
其中,width和height分別為深度分辨率的寬和高,在此取320和240。
然后,計算出拳速度和擊打力。
1)出拳速度計算:拳速計算公式如式(7)所示
(7)
其中,CurrentHandPosition和LastHandPosition是擊中目標的那只手在當前幀和前一幀中經(jīng)過單位轉(zhuǎn)換后的關(guān)節(jié)點坐標;CurrentFrameTime和LastFrameTime是當前幀和前一幀的采樣時間,用timeGetTime()獲取。由于關(guān)節(jié)點坐標均為三維坐標,計算出的速度v也是三維坐標。
2)擊打力計算:拳擊運動在擊打的瞬間,相當于拳頭和人偶的碰撞。根據(jù)沖量定律
Ft=mvt-mv,
(8)
令m為手臂的質(zhì)量,v和vt是拳頭在碰撞時的初速度和末速度,t為碰撞時間,可計算拳頭的擊打力F為
(9)
設(shè)m為10kg,vt因拳頭碰撞后靜止,恒為0,v可由式(7)計算獲得,碰撞時間t計算如下:
將拳頭和人偶近似等效為2個質(zhì)量不等的彈性球體。在兩球碰撞過程中,碰撞時間與兩球半徑之和呈正比,與初速度之和呈反比,而與兩球質(zhì)量無關(guān)[5]。設(shè)R1和R2為兩球的半徑,v1和v2為兩球碰撞前的初速度,則碰撞時間t為
(10)
其中,設(shè)手的半徑R1為0.05m,初速度v1為v;人偶的半徑R2為0.3m,初速度v2為0,則式(10)可化簡為
(11)
將m=10kg,vt=0以及式(11)帶入式(9)可得
(12)
在上面的公式中,v為三維空間中的矢量,則力的大小如下
(13)
其中
(14)
根據(jù)拳速和擊打力量的大小,系統(tǒng)控制人偶響應(yīng)擊打動作。
本文設(shè)定了擊打力量閾值,若擊打力量大于最大值,人偶倒地;否則,根據(jù)動量守恒定律計算碰撞后,人偶擺動初速度,如式(15)所示
(15)
其中,m1為手臂質(zhì)量,設(shè)為10kg,初速度v1由式(7)計算得出,因擊打完后手臂靜止故末速度v2為0;m2為人偶質(zhì)量,設(shè)為25kg,擊打前人偶靜止故其初速度v1為0。將已知變量的值帶入式(15)可化簡為
(16)
通過多次擊打嘗試和屏幕中的實際效果顯示,得出了速度和搖擺角度之間的一個近似線性公式
(17)
其中,k≈0.1rad·s/m,fAngle是人偶首次搖擺的最大角度,根據(jù)實際效果,角度每周期大約衰減10 %,直到人偶擺角小于0.05rad,停止擺動。
人偶倒地和擺動效果,是通過Direct3D中世界變換的旋轉(zhuǎn)變換來實現(xiàn)的。無論是倒地還是搖擺,把人偶運動方向簡化為4個原子方向即左、右、前、后方向。其中,左、右方向繞Z軸旋轉(zhuǎn),前、后方向繞X軸旋轉(zhuǎn)。若實現(xiàn)模型倒下效果,則給繞X軸或者Z軸的旋轉(zhuǎn)變換函數(shù)賦值π/2或者-π/2;實現(xiàn)模型繞X軸或者Z軸的搖擺fAngleX或fAngleY角度的效果,則給繞X軸或者Z軸的旋轉(zhuǎn)變換函數(shù)賦值fAngleX,fAngleY。
為了增強心理宣泄系統(tǒng)的空間感和真實感,基于Direct3D加載了三維天空和三維地面來豐富場景,并通過PlaySound函數(shù)添加了背景音效。此外,系統(tǒng)根據(jù)宣泄對象,設(shè)計了宣泄菜單,通過Kinect體感設(shè)備的手勢識別來進行菜單選定[6]。
為了驗證公式(13)中計算出的擊打力F是否符合實際,進行了多次試驗,實驗數(shù)據(jù)和計算結(jié)果如表1所示。
表1 擊打力的實驗數(shù)據(jù)Tab 1 Experimental datas of punching force
實際中,普通人的擊打力量為1 000~1 500 N,實驗結(jié)果顯示:虛擬系統(tǒng)中,擊打力量在此范圍內(nèi),滿足系統(tǒng)要求,可以作為拳擊訓練的重要參考。
本文基于Direct3D圖形繪制接口完成了場景、拳頭模型和人偶模型的渲染、加載;利用Kinect體感設(shè)備獲取人體關(guān)節(jié)點坐標信息,對虛擬拳頭進行位置移動和姿態(tài)控制,并在人體作出擊打動作后,計算出拳速和擊打力量,進而控制人偶作出擊打響應(yīng)動作,仿照實物擊打宣泄療法,實現(xiàn)了虛擬心理宣泄系統(tǒng)。此系統(tǒng)開辟了體感應(yīng)用的新領(lǐng)域,為心理宣泄療法提供了一種全新的手段,也為拳擊運動愛好者提供了新的體驗平臺。
[1] Abedan Kondori Farid,Shahrouz Yousefi,Li Haibo,et al.3D head pose estimation using the Kinect[C]∥International Confe-rence on Wireless Communications and Signal Processing:IEEE,2011:1-4.
[2] Biswas K K,Basu Saurav Kumar.Gesture recognition using Microsoft Kinect[C]∥Proceedings of the 5th International Confe-rence on Automation,Robotics and Applications:IEEE,2011:100-103.
[3] 林海波,梅為林,張 毅,等.基于Kinect骨骼信息的機械臂體感交互系統(tǒng)的設(shè)計[J].計算機應(yīng)用與軟件,2013,30(2):157-160,176.
[4] 顏 武,鄧定華.游戲開發(fā)中基于Direct3D之3D模型運用[J].計算機與現(xiàn)代化,2006(7):90-94.
[5] 鄭煥武.碰撞時間的定量計算[J].四川師范大學學報,2001,24(5):23-25.
[6] 羅 元,謝 彧,張 毅.基于Kinect傳感器的智能輪椅手勢控制系統(tǒng)的設(shè)計與實現(xiàn)[J].機器人,2012,34(1):110-113,119.
Implementation of psychological catharsis system based on Kinect somatosensory sensor
ZHAO Jian-min1, XU Xiao-wei1, JIA Hui-yuan2
(1.School of Information Engineering,Inner Mongolia University of Science and Technology,Baotou 014010,China; 2.Department of Student Affairs,Inner Mongolia University of Science and Technology,Baotou 014010,China)
Hitting catharsis is the primary means of psychological catharsis therapy.Based on Kinect somatosensory sensor and Direct3D graphics rendering programming interface,psychological catharsis system is designed and implemented.This system uses Kinect somato sensory sensor to collect coordinates information of joints of human body,to control virtual fist to hit virtual hitting objects,and to simulate real scene of boxing,in order to achieve psychological catharsis by hitting.Experimental results show that this system can not only achieve good psychological catharsis effect,but also can provide a new experience platform for fitness exercises,and at the same time,the impact force calculated can be used as an important reference of boxing training.
Direct3D; Kinect; sensor; psychological catharsis system; impact force
10.13873/J.1000—9787(2014)08—0119—04
2013—11—06
TP 311
A
1000—9787(2014)08—0119—04
趙建敏(1982-),男,內(nèi)蒙古包頭人,碩士,講師,主要從事人機交互、控制模式識別研究。