本文設計了基于虛擬現實技術, 以Kinect為交互設備的上肢康復訓練系統。本系統將嚴肅游戲、人機交互與康復訓練有機結合為一體, 針對不同患者的康復需求, 系統建立了科學而豐富的通用動作庫和游戲庫, 并預留擴展接口, 既支持基于Virtools開發的滿足患者個性化需求的游戲, 同時也支持網上現有適合患者康復訓練的Flash游戲。此外, 本系統提出了基于Kinect的靈活動作交互模式和游戲控制方式, 并提供對康復過程進行實時數據記錄的功能, 給出了對康復效果的主客觀評價方法。根據對本系統的隨機調查問卷, 以及中風患者為期兩周的康復訓練, 結果表明:本康復系統區別于傳統康復方法, 具有康復數據收集和分析能力, 可以根據反饋數據進行階段性康復方案制定, 同時具有更強的趣味性以及低廉的訓練成本, 可有效提高患者訓練的積極性, 有助于患者的康復治療。
引用本文: 丁偉利, 鄭亞卓, 蘇玉萍, 李小俚, 魏秀利. 基于Kinect交互的上肢虛擬康復系統設計與研究. 生物醫學工程學雜志, 2015, 32(3): 563-568. doi: 10.7507/1001-5515.20150103 復制
引言
隨著社會老齡化的加劇和現代交通的發展,偏癱、中風、交通事故等引起的運動性功能障礙患者逐年增加,給社會家庭帶來了沉重的負擔[1-3]。傳統的康復療法過程枯燥乏味,所需費用昂貴[4], 同時在我國康復治療師嚴重短缺的條件下,大部分患者得不到良好及時的康復治療,因此迫切需要一種新的康復系統用于運動性功能障礙患者的康復。
現有研究表明,將虛擬現實技術和嚴肅游戲引入到康復治療中,對患者運動功能障礙的康復有很大幫助[5]。這種方式不僅能提高病患的主觀能動性,而且能夠在訓練過程中提供多種反饋信息,根據患者狀態提供合理的康復建議。在上肢功能障礙康復方面,美國新澤西理工學院基于位置跟蹤器等設備設計出了擊球等場景游戲[6],可用于虛擬康復;渥太華大學利用機器人和數據手套開發了迷宮等康復訓練場景[7];美國中央密歇根大學利用多種運動捕獲裝置設計了虛擬插花的訓練方式[8];清華大學提出了虛擬康復工程的概念,并研制了騎自行車的虛擬健身系統[9]。總體而言,目前大部分虛擬康復系統所需交互設備,如位置跟蹤器、數據手套、運動捕獲裝置等價錢昂貴,設置復雜,不適合普通患者進行虛擬康復。同時,康復游戲和虛擬康復任務的開發周期長,很難滿足不同患者的個性化康復需求,系統擴展性不強,不具有普遍適用性。
2010年微軟公司推出了Kinect傳感器,該設備價格低廉(目前售價為1 930元),功能豐富,不僅可以實現視頻、深度和骨骼數據的實時采集,而且能夠實現語音的錄入和識別,實現了“身體就是控制器”的目標。Obdrzalek等[10]的研究證明了Kinect在醫療中作為廉價交互設備對動作進行實時捕捉的發展潛力。Chang等[11]針對Kinect在康復訓練中的應用做了初步探索,論證了系統的可行性。Llg等[12]應用Kinect自帶游戲幫助患有共濟失調的孩子提高協調能力。然而,目前國內外將Kinect用于康復訓練的研究才剛剛起步,如何利用Kinect的運動捕獲功能進行康復訓練,以及如何設計適合康復的虛擬游戲等均有待深入研究。
為了滿足不同患者的個性化康復需求,實現輕度運動功能障礙或中風四期以后患者在家中康復訓練的目標,本文以Kinect為交互設備,結合Virtools/flash游戲開發軟件設計了數字化上肢虛擬康復系統。該系統基于Virtools內置的行為模塊功能或網上下載的flash游戲,可供開發人員為患者快速開發合適的虛擬康復游戲進行康復訓練,滿足患者個性化需求;同時系統提供Kinect實時反饋的數據,可供患者和康復醫師對康復效果做出客觀評價,進而為制定科學的康復訓練方案提供可靠依據。
1 基于Kinect的上肢虛擬康復系統設計
為滿足不同的上肢功能障礙患者的康復需求,本系統在硬件設計上盡可能保證康復系統的通用性和價格低廉性,因此系統硬件部分主要由個人計算機、液晶顯示器、音箱和Kinect組成,分別用以實現數據處理、虛擬場景顯示、聲音反饋和動作交互,在訓練過程中,這些設備只要置于普通電腦桌上即可。本系統的軟件開發流程如圖 1所示,它包含需求建議、開發、訓練三個階段。

在需求建議階段,廣泛調研上肢功能障礙患者的需求,同時結合醫療師的建議,促使該系統具有更科學的康復訓練方式和更合理的評價方法,能夠更好地滿足患者的實際需求,提高康復訓練效果。在軟件開發階段,首先根據康復師的建議設計出適合所有上肢功能障礙患者的通用動作庫,該動作庫包括多種單一關節動作和多關節復合動作。然后由動作識別算法,實現人機交互功能。最后針對不同的康復動作,進行游戲場景設計,建立基本的游戲庫。接下來,基于VC2010和Kinect SDK開發系統軟件界面,根據不同患者的需求靈活選擇相關動作和游戲,同時在游戲中加入視頻、聲音等激勵,以提高康復訓練的有效性與趣味性。在訓練階段,治療師將為患者制定詳細的康復訓練計劃,例如一天訓練多長時間,一周訓練幾天,每次訓練幾個動作等。然后根據反饋的訓練數據對患者的康復效果進行評價并對康復訓練計劃和游戲進行再調整。
2 康復系統軟件關鍵技術及實現
2.1 動作交互
本系統設計了多個上肢動作用于和虛擬場景進行交互,以達到在交互中實現對患者上肢相關部位進行康復訓練的目的。根據治療師建議,在訓練初始階段,康復動作應盡可能簡單,然后再逐漸增加難度。因此,本文設計了表 1所示的10種典型動作庫,并允許患者在訓練過程中選擇用左手、右手或者雙手同時完成相關動作。此外系統允許患者逐級設定動作運動的角度范圍,用以逐步提高患者的關節活動度和動作協調性。

一旦患者從動作庫中選擇了一個或多個動作,就意味著該動作將被用來控制虛擬場景中的物體運動,因此需要根據Kinect實時采集到的人體上肢骨骼點的三維坐標值進行動作識別。規定Kinect坐標系以其體感器深度相機的光心為坐標原點,x軸平行于圖像平面的橫軸,y軸平行于圖像平面的縱軸,z軸垂直于圖像平面向外。設上肢某一骨骼點jx的三維坐標為Pjx(x jxtx,Y jxtx, z jxtx),動作采集時間為tx, 本文通過以下兩種方式實現相關動作和虛擬場景的交互。
(1)將Kinect坐標系下骨骼點的三維坐標通過式(1)映射到游戲坐標系中,可直接控制虛擬空間中物體的三維運動,即
$ \left\{ \begin{array}{l} X={k_1}*x\\ Y={k_2}*y\\ Z=-{k_3}*z \end{array} \right., $ |
其中(x, y, z)為Kinect坐標系下坐標,(X, Y, Z)為游戲坐標系下坐標,k1、k2、k3為關節點實際運動范圍到虛擬場景中物體運動范圍轉換的比例系數。
同時,為了直觀的表征關節活動度,也可直接將關節角度映射到游戲中,進而控制虛擬物體的一維運動。由于Kinect采集的不在同一條直線上的三個人體骨骼點可組成一個三角形,所以關節角度值可以根據余弦定理求出,如式(2)和(3)所示:
$ \left\{ \begin{array}{l} {a^2}={\left({z_{{j_3}}^{{t_1}}-z_{{j_2}}^{{t_1}}} \right)^2}+{\left({y_{{j_3}}^{{t_1}}-y_{{j_2}}^{{t_1}}} \right)^2}+{\left({x_{{j_3}}^{{t_1}}-x_{{j_2}}^{{t_1}}} \right)^2}\\ {b^2}={\left({z_{{j_1}}^{{t_1}}-z_{{j_3}}^{{t_1}}} \right)^2}+{\left({y_{{j_1}}^{{t_1}}-y_{{j_3}}^{{t_1}}} \right)^2}+{\left({x_{{j_1}}^{{t_1}}-x_{{j_3}}^{{t_1}}} \right)^2}\\ {c^2}={\left({z_{{j_1}}^{{t_1}}-z_{{j_2}}^{{t_1}}} \right)^2}+{\left({y_{{j_1}}^{{t_1}}-y_{{j_2}}^{{t_1}}} \right)^2}+{\left({x_{{j_1}}^{{t_1}}-x_{{j_2}}^{{t_1}}} \right)^2} \end{array} \right., $ |
$ \theta={\rm{arccos}}\left({\frac{{{b^2}+{c^2}-{a^2}}}{{2bc}}} \right), $ |
式中a、b、c分別是三個骨骼點之間的距離,θ為求出的關節角度值。
$ d={k_3}*\theta $ |
由上式可將關節角度通過比例系數映射為虛擬空間中物體到參考點的距離。
(2)通過骨骼點隨時間的坐標值變化和骨骼點之間的相對位置變化來識別動作,然后利用識別的動作發出命令控制虛擬場景中的物體進行運動。在Kinect坐標系下,對于單一關節的動作,可以根據四個條件對動作進行識別:①判斷手臂是否向上抬起。根據腕關節在y軸方向坐標值逐漸增大的趨勢可識別此運動。此處我們連續提取6幀骨骼點數據的y軸坐標,其中yj1t1,…,yj1t6表示存在于隊列中的腕部骨骼點的y軸方向坐標值,yj1t1為最舊幀的值,yj1t6為最新幀的值。如果yj1tx-yj1tx+1<0,則可判斷為手部向上抬起。②判斷手臂是否伸直或屈曲。該動作可以通過肩、肘和腕關節的角度判斷,如式(3),如果角度值θ≈180°,說明手臂伸直,否則說明小臂和大臂有一定夾角,即手臂呈屈曲狀態。③判斷手臂抬起的方向。此條件可以通過腕關節和髖關節數據的z軸坐標判斷,如果腕關節的z軸坐標小于髖關節z軸坐標,表明手臂從體前抬起;如果腕關節的z軸坐標大于髖關節z軸坐標,表明手臂從體后抬起,否則說明手臂從體側抬起。④判斷腕關節是否伸直或者屈曲。此動作可以計算手、腕和肘關節組成的三角形中的腕關節角度值,如果θ≈180°,說明腕關節伸直;如果角度值小于180°,說明腕關節向內屈曲;如果角度值大于180°,說明腕關節向外屈曲。
根據以上條件,當患者手臂向上抬起,且每一幀均為手臂伸直狀態時,此條件下如果手臂抬起的方向為體前抬起,則可判斷為肩關節屈曲;如果手臂抬起的方向為體后抬起則可判斷為肩關節伸展;如果手臂抬起的方向為體側抬起,則可判斷為肩關節外展。如果患者手臂向上抬起,且每一幀均為手臂屈曲狀態,則可判斷為肘關節屈曲。如果患者腕關節向內屈曲,可判斷為腕關節掌屈;如果患者腕關節向外屈曲,可判斷為腕關節背伸。
2.2 游戲開發
本系統支持兩類游戲,一類是網上可下載swf格式的Flash游戲,一類是由Virtools開發的游戲。系統提供了開放式的游戲加載接口,允許導入系統基于鍵盤開發的游戲源文件,并通過簡單的設置將需要康復的動作映射為相應的鍵盤命令。這種方式既可以把網上現有的適合中風患者訓練的Flash游戲資源直接用于康復治療,保證資源重用,又可以根據患者特殊需求,通過Virtools軟件開發符合要求的游戲。本系統的游戲庫中包含多種上肢的游戲,本文主要以圖 2中的兩個游戲為例進行說明。

(a)木塊翻滾游戲;(b)抓球游戲
Figure2. Fig.2(a) the game of block rolling; (b) the game of catching the balls
2.2.1 基于Kinect的Flash游戲控制及開發
實現Kinect控制Flash游戲的核心思想是利用Kinect識別的動作替代鍵盤功能。具體開發步驟如下:首先,在VC2010中引入Flash接口,目的是可以通過VC2010程序來開啟Flash游戲;然后實現Kinect視頻和骨骼數據的可視化,如圖 2(a)所示,窗口左半部分為Kinect視頻流數據,右半部分為Flash游戲顯示窗口,這樣用戶就可以在運動時清楚地看到自己的運動;最后,識別用戶的動作,并根據相應的動作來發送虛擬鍵盤響應控制Flash場景運動。
以圖 2(a)游戲為例,患者可通過手臂的向前、向后、向左、向右的運動來控制虛擬木塊前后左右翻滾,并最終控制其滾入洞中,進入下一關。
2.2.2 基于Kinect的Virtools游戲控制及開發
基于Kinect的Virtools游戲開發的關鍵是Kinect和游戲的交互,由于目前Virtools還沒有可以直接用來和Kinect進行交互的模塊,因此本系統開發了可用于Virtools軟件的Kinect通用插件,奠定了基于Kinect的Virtools虛擬游戲開發基礎。此插件是在VC2005環境下創建的,其主要功能有:將Kinect獲取的人體骨骼坐標數據、彩色圖像和深度圖像輸入到Virtools虛擬場景中,并實時將骨骼數據和視頻信息保存到數據庫,進而可以通過Kinect捕捉到的人體動作來控制虛擬場景中的物體運動。
以圖 2(b)中所示游戲為例,為了鍛煉患者手臂的協調能力,開發了基于Virtools的抓球游戲,患者通過自己的手臂動作控制虛擬手運動,準確抓住桌子上邊的小球,并將其移動到籃子里。此外,游戲中加入了有效的激勵措施來提高游戲的趣味性,同時有助于增加患者康復訓練的動力和信心。
2.3 評價方法
為了患者更好地進行自我評價,本系統提供了康復信息評價模塊。該模塊獨立于整個康復系統,主要任務是指導康復治療師根據存儲的訓練數據對患者的康復效果進行評價。該模塊一方面提供患者訓練過程中的各種數據(視頻、運動速度曲線、關節活動度變化曲線)的回調和對比分析功能,另一方面提供患者動作平滑度指標,用來檢驗康復效果。根據文獻[13],基于Jerk的動作平滑度測量結果可以看作評價患者運動能力的重要指標,因此本系統提供了基于Mean squared jerk(MSJ)的動作平滑性度量指標,相關計算公式為:
$ {\rm{MSJ=}}\frac{1}{{{t_2}-{t_1}}}\int_{{t_1}}^{{t_2}} {\left| {\frac{{{d^2}v}}{{{\rm{d}}{t^2}}}} \right|} {\rm{d}}t $ |
通常,MSJ值越小表明曲線平滑程度越高,即康復效果越好。根據患者康復過程中采集的數據信息來計算MSJ值,可定期對康復效果進行評定。
同時,系統提供了平均速度用來評價康復過程中患者速度的變化趨勢。首先,根據公式(6)可計算出每兩幀數據間的實時速度,再由式(7)計算得到t1~t2間的平均速度。
$ v=\frac{{\sqrt {{{\left({x_{{j_1}}^{{t_{x+1}}}-x_{{j_1}}^{{t_x}}} \right)}^2}+{{\left({y_{{j_1}}^{{t_{x+1}}}-y_{{j_1}}^{{t_x}}} \right)}^2}+{{\left({z_{{j_1}}^{{t_{x+1}}}-z_{{j_1}}^{{t_x}}} \right)}^2}} }}{{{t_{x+1}}-{t_x}}} $ |
$ \bar v=\frac{1}{n}\sum\limits_{i=1}^n {{v_i}} $ |
3 軟件系統的初步測評及分析
3.1 主觀評價結果
為了初步評價本康復系統,我們選取了10例正常的學生(5例男生,5例女生)和7例患者(2例臂叢神經損傷患者,2例中風患者和3例共濟失調患者)對本系統進行了初步體驗,并完成了調查問卷。表 2中給出了調查結果。此調查問卷參考文獻[14]設計完成,其中,1表示“完全不同意”,5表示“完全同意”。

通過表 2可以看出無論是患者還是正常人對本系統都充滿興趣,且認為本系統能提高他們訓練的積極性。正常人和臂叢神經損傷患者感覺Flash游戲更加有趣,且難度適宜,而Virtools游戲相對簡單。而對于中風患者和共濟失調患者,則認為Flash游戲太難,尤其是對于有認知功能障礙的患者來說難度更大,而根據患者特點開發的Virtools游戲難度適宜。這種現象表明不同類型患者對康復游戲的需求有所不同,游戲難易程度應隨時根據康復患者實際情況進行調整,而本文提出的虛擬康復系統提供了多種游戲模式,并預留了開放式擴展接口,可有效提高本系統的通用性。同時,專業康復醫療師對此系統也給予了充分的肯定,認為本系統操作簡單,游戲難度適中,對康復訓練有所幫助,也可對其工作起到有效的輔助作用。
3.2 定量分析評價結果
為了驗證系統的有效性,我們在秦皇島第一人民醫院選取了5例3期以后的具有上肢運動功能障礙的中風患者(43~59歲),進行了為期15 d的虛擬康復訓練。分別在訓練的初期、中期、末期進行了三次評價試驗,要求患者在虛擬場景下和非虛擬場景下完成指定動作,訓練時間以患者感覺到疲勞為準。同時在第1天和最后1天的訓練結束后,對患者進行指物試驗,即在患者面前擺放兩個距離為40 cm的標志物,要求患者用手指指向第一個標志物,然后移動手臂指向第二個標志物,如此反復10~20次。具體的次數根據患者病情決定。
表 3對比了患者在游戲場景下和非游戲場景下做同樣的動作能夠堅持的時間、動作正確率和注意力指數共三次試驗的平均值,其中注意力指數采用腦立方MindWave耳機進行測量,數值越大證明注意力越集中。如表 3所示,通過對比可以看出在虛擬場景下患者堅持訓練的時間更長,動作正確率和注意力指數均有所提高,說明在虛擬場景下對患者進行康復訓練有助于提高患者的注意力,調動患者的積極性,提升動作的正確率。

圖 3給出了5例患者在第1天和第15天訓練后進行指物試驗時手部運動的MSJ值和平均速度。如圖所示,通過對比可以看出經過虛擬康復訓練后,患者手部運動的MSJ值有所下降,平均速度總體有所加快,說明了本系統對患者康復具有一定幫助。

綜合表 3的結果可知,同樣的康復訓練動作,在虛擬場景的刺激下,患者具有更高的積極性與動作正確率,因此也間接證明了虛擬康復系統和傳統方法相比具有一定的優越性。
4 結論及展望
虛擬康復技術是幫助提高康復效果的有效手段,將Kinect應用到虛擬康復領域有助于提高虛擬康復系統的交互性能,降低虛擬康復成本。本文開發了基于Kinect的虛擬康復訓練系統,它可以滿足患者的個性化需求,使康復訓練更加科學、有效,并且充滿趣味性,簡單易操作,費用成本低廉。然而本康復系統仍存在一定不足,如當前系統的動作康復集中在損傷手臂的腕部、肘部和肩部,而缺少手指的康復運動,同時也缺少實時反饋功能。因此,我們未來的研究方向將增加手部康復功能和實時反饋。
引言
隨著社會老齡化的加劇和現代交通的發展,偏癱、中風、交通事故等引起的運動性功能障礙患者逐年增加,給社會家庭帶來了沉重的負擔[1-3]。傳統的康復療法過程枯燥乏味,所需費用昂貴[4], 同時在我國康復治療師嚴重短缺的條件下,大部分患者得不到良好及時的康復治療,因此迫切需要一種新的康復系統用于運動性功能障礙患者的康復。
現有研究表明,將虛擬現實技術和嚴肅游戲引入到康復治療中,對患者運動功能障礙的康復有很大幫助[5]。這種方式不僅能提高病患的主觀能動性,而且能夠在訓練過程中提供多種反饋信息,根據患者狀態提供合理的康復建議。在上肢功能障礙康復方面,美國新澤西理工學院基于位置跟蹤器等設備設計出了擊球等場景游戲[6],可用于虛擬康復;渥太華大學利用機器人和數據手套開發了迷宮等康復訓練場景[7];美國中央密歇根大學利用多種運動捕獲裝置設計了虛擬插花的訓練方式[8];清華大學提出了虛擬康復工程的概念,并研制了騎自行車的虛擬健身系統[9]。總體而言,目前大部分虛擬康復系統所需交互設備,如位置跟蹤器、數據手套、運動捕獲裝置等價錢昂貴,設置復雜,不適合普通患者進行虛擬康復。同時,康復游戲和虛擬康復任務的開發周期長,很難滿足不同患者的個性化康復需求,系統擴展性不強,不具有普遍適用性。
2010年微軟公司推出了Kinect傳感器,該設備價格低廉(目前售價為1 930元),功能豐富,不僅可以實現視頻、深度和骨骼數據的實時采集,而且能夠實現語音的錄入和識別,實現了“身體就是控制器”的目標。Obdrzalek等[10]的研究證明了Kinect在醫療中作為廉價交互設備對動作進行實時捕捉的發展潛力。Chang等[11]針對Kinect在康復訓練中的應用做了初步探索,論證了系統的可行性。Llg等[12]應用Kinect自帶游戲幫助患有共濟失調的孩子提高協調能力。然而,目前國內外將Kinect用于康復訓練的研究才剛剛起步,如何利用Kinect的運動捕獲功能進行康復訓練,以及如何設計適合康復的虛擬游戲等均有待深入研究。
為了滿足不同患者的個性化康復需求,實現輕度運動功能障礙或中風四期以后患者在家中康復訓練的目標,本文以Kinect為交互設備,結合Virtools/flash游戲開發軟件設計了數字化上肢虛擬康復系統。該系統基于Virtools內置的行為模塊功能或網上下載的flash游戲,可供開發人員為患者快速開發合適的虛擬康復游戲進行康復訓練,滿足患者個性化需求;同時系統提供Kinect實時反饋的數據,可供患者和康復醫師對康復效果做出客觀評價,進而為制定科學的康復訓練方案提供可靠依據。
1 基于Kinect的上肢虛擬康復系統設計
為滿足不同的上肢功能障礙患者的康復需求,本系統在硬件設計上盡可能保證康復系統的通用性和價格低廉性,因此系統硬件部分主要由個人計算機、液晶顯示器、音箱和Kinect組成,分別用以實現數據處理、虛擬場景顯示、聲音反饋和動作交互,在訓練過程中,這些設備只要置于普通電腦桌上即可。本系統的軟件開發流程如圖 1所示,它包含需求建議、開發、訓練三個階段。

在需求建議階段,廣泛調研上肢功能障礙患者的需求,同時結合醫療師的建議,促使該系統具有更科學的康復訓練方式和更合理的評價方法,能夠更好地滿足患者的實際需求,提高康復訓練效果。在軟件開發階段,首先根據康復師的建議設計出適合所有上肢功能障礙患者的通用動作庫,該動作庫包括多種單一關節動作和多關節復合動作。然后由動作識別算法,實現人機交互功能。最后針對不同的康復動作,進行游戲場景設計,建立基本的游戲庫。接下來,基于VC2010和Kinect SDK開發系統軟件界面,根據不同患者的需求靈活選擇相關動作和游戲,同時在游戲中加入視頻、聲音等激勵,以提高康復訓練的有效性與趣味性。在訓練階段,治療師將為患者制定詳細的康復訓練計劃,例如一天訓練多長時間,一周訓練幾天,每次訓練幾個動作等。然后根據反饋的訓練數據對患者的康復效果進行評價并對康復訓練計劃和游戲進行再調整。
2 康復系統軟件關鍵技術及實現
2.1 動作交互
本系統設計了多個上肢動作用于和虛擬場景進行交互,以達到在交互中實現對患者上肢相關部位進行康復訓練的目的。根據治療師建議,在訓練初始階段,康復動作應盡可能簡單,然后再逐漸增加難度。因此,本文設計了表 1所示的10種典型動作庫,并允許患者在訓練過程中選擇用左手、右手或者雙手同時完成相關動作。此外系統允許患者逐級設定動作運動的角度范圍,用以逐步提高患者的關節活動度和動作協調性。

一旦患者從動作庫中選擇了一個或多個動作,就意味著該動作將被用來控制虛擬場景中的物體運動,因此需要根據Kinect實時采集到的人體上肢骨骼點的三維坐標值進行動作識別。規定Kinect坐標系以其體感器深度相機的光心為坐標原點,x軸平行于圖像平面的橫軸,y軸平行于圖像平面的縱軸,z軸垂直于圖像平面向外。設上肢某一骨骼點jx的三維坐標為Pjx(x jxtx,Y jxtx, z jxtx),動作采集時間為tx, 本文通過以下兩種方式實現相關動作和虛擬場景的交互。
(1)將Kinect坐標系下骨骼點的三維坐標通過式(1)映射到游戲坐標系中,可直接控制虛擬空間中物體的三維運動,即
$ \left\{ \begin{array}{l} X={k_1}*x\\ Y={k_2}*y\\ Z=-{k_3}*z \end{array} \right., $ |
其中(x, y, z)為Kinect坐標系下坐標,(X, Y, Z)為游戲坐標系下坐標,k1、k2、k3為關節點實際運動范圍到虛擬場景中物體運動范圍轉換的比例系數。
同時,為了直觀的表征關節活動度,也可直接將關節角度映射到游戲中,進而控制虛擬物體的一維運動。由于Kinect采集的不在同一條直線上的三個人體骨骼點可組成一個三角形,所以關節角度值可以根據余弦定理求出,如式(2)和(3)所示:
$ \left\{ \begin{array}{l} {a^2}={\left({z_{{j_3}}^{{t_1}}-z_{{j_2}}^{{t_1}}} \right)^2}+{\left({y_{{j_3}}^{{t_1}}-y_{{j_2}}^{{t_1}}} \right)^2}+{\left({x_{{j_3}}^{{t_1}}-x_{{j_2}}^{{t_1}}} \right)^2}\\ {b^2}={\left({z_{{j_1}}^{{t_1}}-z_{{j_3}}^{{t_1}}} \right)^2}+{\left({y_{{j_1}}^{{t_1}}-y_{{j_3}}^{{t_1}}} \right)^2}+{\left({x_{{j_1}}^{{t_1}}-x_{{j_3}}^{{t_1}}} \right)^2}\\ {c^2}={\left({z_{{j_1}}^{{t_1}}-z_{{j_2}}^{{t_1}}} \right)^2}+{\left({y_{{j_1}}^{{t_1}}-y_{{j_2}}^{{t_1}}} \right)^2}+{\left({x_{{j_1}}^{{t_1}}-x_{{j_2}}^{{t_1}}} \right)^2} \end{array} \right., $ |
$ \theta={\rm{arccos}}\left({\frac{{{b^2}+{c^2}-{a^2}}}{{2bc}}} \right), $ |
式中a、b、c分別是三個骨骼點之間的距離,θ為求出的關節角度值。
$ d={k_3}*\theta $ |
由上式可將關節角度通過比例系數映射為虛擬空間中物體到參考點的距離。
(2)通過骨骼點隨時間的坐標值變化和骨骼點之間的相對位置變化來識別動作,然后利用識別的動作發出命令控制虛擬場景中的物體進行運動。在Kinect坐標系下,對于單一關節的動作,可以根據四個條件對動作進行識別:①判斷手臂是否向上抬起。根據腕關節在y軸方向坐標值逐漸增大的趨勢可識別此運動。此處我們連續提取6幀骨骼點數據的y軸坐標,其中yj1t1,…,yj1t6表示存在于隊列中的腕部骨骼點的y軸方向坐標值,yj1t1為最舊幀的值,yj1t6為最新幀的值。如果yj1tx-yj1tx+1<0,則可判斷為手部向上抬起。②判斷手臂是否伸直或屈曲。該動作可以通過肩、肘和腕關節的角度判斷,如式(3),如果角度值θ≈180°,說明手臂伸直,否則說明小臂和大臂有一定夾角,即手臂呈屈曲狀態。③判斷手臂抬起的方向。此條件可以通過腕關節和髖關節數據的z軸坐標判斷,如果腕關節的z軸坐標小于髖關節z軸坐標,表明手臂從體前抬起;如果腕關節的z軸坐標大于髖關節z軸坐標,表明手臂從體后抬起,否則說明手臂從體側抬起。④判斷腕關節是否伸直或者屈曲。此動作可以計算手、腕和肘關節組成的三角形中的腕關節角度值,如果θ≈180°,說明腕關節伸直;如果角度值小于180°,說明腕關節向內屈曲;如果角度值大于180°,說明腕關節向外屈曲。
根據以上條件,當患者手臂向上抬起,且每一幀均為手臂伸直狀態時,此條件下如果手臂抬起的方向為體前抬起,則可判斷為肩關節屈曲;如果手臂抬起的方向為體后抬起則可判斷為肩關節伸展;如果手臂抬起的方向為體側抬起,則可判斷為肩關節外展。如果患者手臂向上抬起,且每一幀均為手臂屈曲狀態,則可判斷為肘關節屈曲。如果患者腕關節向內屈曲,可判斷為腕關節掌屈;如果患者腕關節向外屈曲,可判斷為腕關節背伸。
2.2 游戲開發
本系統支持兩類游戲,一類是網上可下載swf格式的Flash游戲,一類是由Virtools開發的游戲。系統提供了開放式的游戲加載接口,允許導入系統基于鍵盤開發的游戲源文件,并通過簡單的設置將需要康復的動作映射為相應的鍵盤命令。這種方式既可以把網上現有的適合中風患者訓練的Flash游戲資源直接用于康復治療,保證資源重用,又可以根據患者特殊需求,通過Virtools軟件開發符合要求的游戲。本系統的游戲庫中包含多種上肢的游戲,本文主要以圖 2中的兩個游戲為例進行說明。

(a)木塊翻滾游戲;(b)抓球游戲
Figure2. Fig.2(a) the game of block rolling; (b) the game of catching the balls
2.2.1 基于Kinect的Flash游戲控制及開發
實現Kinect控制Flash游戲的核心思想是利用Kinect識別的動作替代鍵盤功能。具體開發步驟如下:首先,在VC2010中引入Flash接口,目的是可以通過VC2010程序來開啟Flash游戲;然后實現Kinect視頻和骨骼數據的可視化,如圖 2(a)所示,窗口左半部分為Kinect視頻流數據,右半部分為Flash游戲顯示窗口,這樣用戶就可以在運動時清楚地看到自己的運動;最后,識別用戶的動作,并根據相應的動作來發送虛擬鍵盤響應控制Flash場景運動。
以圖 2(a)游戲為例,患者可通過手臂的向前、向后、向左、向右的運動來控制虛擬木塊前后左右翻滾,并最終控制其滾入洞中,進入下一關。
2.2.2 基于Kinect的Virtools游戲控制及開發
基于Kinect的Virtools游戲開發的關鍵是Kinect和游戲的交互,由于目前Virtools還沒有可以直接用來和Kinect進行交互的模塊,因此本系統開發了可用于Virtools軟件的Kinect通用插件,奠定了基于Kinect的Virtools虛擬游戲開發基礎。此插件是在VC2005環境下創建的,其主要功能有:將Kinect獲取的人體骨骼坐標數據、彩色圖像和深度圖像輸入到Virtools虛擬場景中,并實時將骨骼數據和視頻信息保存到數據庫,進而可以通過Kinect捕捉到的人體動作來控制虛擬場景中的物體運動。
以圖 2(b)中所示游戲為例,為了鍛煉患者手臂的協調能力,開發了基于Virtools的抓球游戲,患者通過自己的手臂動作控制虛擬手運動,準確抓住桌子上邊的小球,并將其移動到籃子里。此外,游戲中加入了有效的激勵措施來提高游戲的趣味性,同時有助于增加患者康復訓練的動力和信心。
2.3 評價方法
為了患者更好地進行自我評價,本系統提供了康復信息評價模塊。該模塊獨立于整個康復系統,主要任務是指導康復治療師根據存儲的訓練數據對患者的康復效果進行評價。該模塊一方面提供患者訓練過程中的各種數據(視頻、運動速度曲線、關節活動度變化曲線)的回調和對比分析功能,另一方面提供患者動作平滑度指標,用來檢驗康復效果。根據文獻[13],基于Jerk的動作平滑度測量結果可以看作評價患者運動能力的重要指標,因此本系統提供了基于Mean squared jerk(MSJ)的動作平滑性度量指標,相關計算公式為:
$ {\rm{MSJ=}}\frac{1}{{{t_2}-{t_1}}}\int_{{t_1}}^{{t_2}} {\left| {\frac{{{d^2}v}}{{{\rm{d}}{t^2}}}} \right|} {\rm{d}}t $ |
通常,MSJ值越小表明曲線平滑程度越高,即康復效果越好。根據患者康復過程中采集的數據信息來計算MSJ值,可定期對康復效果進行評定。
同時,系統提供了平均速度用來評價康復過程中患者速度的變化趨勢。首先,根據公式(6)可計算出每兩幀數據間的實時速度,再由式(7)計算得到t1~t2間的平均速度。
$ v=\frac{{\sqrt {{{\left({x_{{j_1}}^{{t_{x+1}}}-x_{{j_1}}^{{t_x}}} \right)}^2}+{{\left({y_{{j_1}}^{{t_{x+1}}}-y_{{j_1}}^{{t_x}}} \right)}^2}+{{\left({z_{{j_1}}^{{t_{x+1}}}-z_{{j_1}}^{{t_x}}} \right)}^2}} }}{{{t_{x+1}}-{t_x}}} $ |
$ \bar v=\frac{1}{n}\sum\limits_{i=1}^n {{v_i}} $ |
3 軟件系統的初步測評及分析
3.1 主觀評價結果
為了初步評價本康復系統,我們選取了10例正常的學生(5例男生,5例女生)和7例患者(2例臂叢神經損傷患者,2例中風患者和3例共濟失調患者)對本系統進行了初步體驗,并完成了調查問卷。表 2中給出了調查結果。此調查問卷參考文獻[14]設計完成,其中,1表示“完全不同意”,5表示“完全同意”。

通過表 2可以看出無論是患者還是正常人對本系統都充滿興趣,且認為本系統能提高他們訓練的積極性。正常人和臂叢神經損傷患者感覺Flash游戲更加有趣,且難度適宜,而Virtools游戲相對簡單。而對于中風患者和共濟失調患者,則認為Flash游戲太難,尤其是對于有認知功能障礙的患者來說難度更大,而根據患者特點開發的Virtools游戲難度適宜。這種現象表明不同類型患者對康復游戲的需求有所不同,游戲難易程度應隨時根據康復患者實際情況進行調整,而本文提出的虛擬康復系統提供了多種游戲模式,并預留了開放式擴展接口,可有效提高本系統的通用性。同時,專業康復醫療師對此系統也給予了充分的肯定,認為本系統操作簡單,游戲難度適中,對康復訓練有所幫助,也可對其工作起到有效的輔助作用。
3.2 定量分析評價結果
為了驗證系統的有效性,我們在秦皇島第一人民醫院選取了5例3期以后的具有上肢運動功能障礙的中風患者(43~59歲),進行了為期15 d的虛擬康復訓練。分別在訓練的初期、中期、末期進行了三次評價試驗,要求患者在虛擬場景下和非虛擬場景下完成指定動作,訓練時間以患者感覺到疲勞為準。同時在第1天和最后1天的訓練結束后,對患者進行指物試驗,即在患者面前擺放兩個距離為40 cm的標志物,要求患者用手指指向第一個標志物,然后移動手臂指向第二個標志物,如此反復10~20次。具體的次數根據患者病情決定。
表 3對比了患者在游戲場景下和非游戲場景下做同樣的動作能夠堅持的時間、動作正確率和注意力指數共三次試驗的平均值,其中注意力指數采用腦立方MindWave耳機進行測量,數值越大證明注意力越集中。如表 3所示,通過對比可以看出在虛擬場景下患者堅持訓練的時間更長,動作正確率和注意力指數均有所提高,說明在虛擬場景下對患者進行康復訓練有助于提高患者的注意力,調動患者的積極性,提升動作的正確率。

圖 3給出了5例患者在第1天和第15天訓練后進行指物試驗時手部運動的MSJ值和平均速度。如圖所示,通過對比可以看出經過虛擬康復訓練后,患者手部運動的MSJ值有所下降,平均速度總體有所加快,說明了本系統對患者康復具有一定幫助。

綜合表 3的結果可知,同樣的康復訓練動作,在虛擬場景的刺激下,患者具有更高的積極性與動作正確率,因此也間接證明了虛擬康復系統和傳統方法相比具有一定的優越性。
4 結論及展望
虛擬康復技術是幫助提高康復效果的有效手段,將Kinect應用到虛擬康復領域有助于提高虛擬康復系統的交互性能,降低虛擬康復成本。本文開發了基于Kinect的虛擬康復訓練系統,它可以滿足患者的個性化需求,使康復訓練更加科學、有效,并且充滿趣味性,簡單易操作,費用成本低廉。然而本康復系統仍存在一定不足,如當前系統的動作康復集中在損傷手臂的腕部、肘部和肩部,而缺少手指的康復運動,同時也缺少實時反饋功能。因此,我們未來的研究方向將增加手部康復功能和實時反饋。