馬佳琳,梁 鵬
(沈陽師范大學(xué) 軟件學(xué)院,沈陽 110034)
隨著動作捕捉在影視特效、動畫和體感游戲中的廣泛應(yīng)用,運動數(shù)據(jù)采集技術(shù)在近10年的發(fā)展中取得了明顯的進步。Kinect作為微軟旗下的基于體感技術(shù)的數(shù)據(jù)掃描設(shè)備,己經(jīng)被廣泛應(yīng)用在人體運動檢測中,其不斷完善的運動捕捉技術(shù)和語音識別技術(shù),使人們只需要身體動作或聲音就可以輕松地與機器對話,不僅增加了人機交互的樂趣,同時也為運動訓(xùn)練提供了新的訓(xùn)練指導(dǎo)思路[1]:運動數(shù)據(jù)采集在許多專業(yè)運動訓(xùn)練和國家訓(xùn)練中被應(yīng)用于輔助研究人員從多角度觀察教練動作,獲得多個動作參數(shù)和生理指標的訓(xùn)練數(shù)據(jù),為科學(xué)訓(xùn)練提供可靠數(shù)據(jù)來源[2]。教練可以通過各種訓(xùn)練數(shù)據(jù)為每個訓(xùn)練人員定制科學(xué)的訓(xùn)練計劃,有針對性地指導(dǎo)訓(xùn)練,準確掌握運動員的身體輪廓和身體位置的掃描數(shù)據(jù)與標準動作的數(shù)據(jù)進行對比并反饋錯位信息糾正用戶肢體動作的錯誤[3],從而降低學(xué)員運動難度來提高訓(xùn)練效率,使運動訓(xùn)練在數(shù)字化、參數(shù)化的環(huán)境下擺脫傳統(tǒng)訓(xùn)練的困境,從而有效的降低用戶學(xué)習(xí)難度和提高用戶動作學(xué)習(xí)的效率,因此對于運動捕捉技術(shù)的研究可以有效提高運動訓(xùn)練水平。
Kinect最大的優(yōu)點之一就是通過光編碼技術(shù)獲得深度圖,這與TOF技術(shù)或結(jié)構(gòu)技術(shù),以及傳統(tǒng)的光學(xué)測量技術(shù)不同,紅外反射鏡連續(xù)向空間發(fā)射光,并進行空間編碼[4],然后通過CMOS感光芯片讀取編碼計算出空間距離[5]。由于kinect不需要特殊的感光芯片,從而大大降低了成本。它并非通過紅外線發(fā)射器發(fā)出激光,而是將二者分布在視覺空間中,當鋪向空間物體發(fā)射光時,會根據(jù)不同的距離和變化的模式形成反射光,形成高度隨機的反射點,相當于三維的標記[6]。
Kinect技術(shù)的核心是最重要的三維深度信息處理技術(shù),用于接收來自紅外發(fā)射器和紅外攝像機的深度信息來判斷物體的距離。微軟使用的3D深度信息技術(shù)來自Prime Sense。它提供了運動檢測技術(shù)和檢測芯片PS1080,以及利用光編碼的專利技術(shù)[7]。
動作識別的體系結(jié)構(gòu)如圖1所示。該系統(tǒng)由3個主要模塊組成:數(shù)據(jù)采集、數(shù)據(jù)處理與特征提取、人體姿態(tài)識別。在數(shù)據(jù)采集模塊中,Kinect可以采集骨骼不同類型的信息:顏色數(shù)據(jù)流、深度數(shù)據(jù)流和骨骼信息流。數(shù)據(jù)處理和特征提取模塊的目的是根據(jù)需要進行數(shù)據(jù)規(guī)范化等處理并計算姿態(tài)表示的相關(guān)特征[8]。除此之外,Kinect還提供了與傳統(tǒng)相機相同的彩色圖像,所有針對傳統(tǒng)相機提出的特征都可以應(yīng)用于Kinect設(shè)備[9]。系統(tǒng)著重通過使用骨骼信息進行人體的姿態(tài)識別,如屈伸、躺著等動作。
圖1 Kinect識別主要核心模塊Fig.1 Main core modules of Kinect recognition
圖2 關(guān)節(jié)位置坐標軸(右手坐標系)Fig.2 Skeleton position axis (right hand coordinate system)
在新版Kinect SDK中,提供了骨骼跟蹤工具。此工具旨在收集關(guān)節(jié)作為相對于設(shè)備本身的點,并在幀中收集關(guān)節(jié)信息。對于每個幀,估計并收集20個關(guān)節(jié)點的位置[10]。對于每個關(guān)節(jié)點有3個關(guān)鍵點需要注意:首先是關(guān)節(jié)點的索引,每個關(guān)節(jié)點都有一個唯一的索引值,在深度傳感器的坐標軸中用x、y和z軸表示,原點代表傳感器陣列,z軸沿傳感器陣列指向的方向[11]。關(guān)節(jié)坐標如圖2所示。
最后是關(guān)節(jié)狀態(tài)的設(shè)置。通過Kinect跟蹤關(guān)節(jié)位置,將關(guān)節(jié)狀態(tài)設(shè)置為“已標記”,如果無法跟蹤則根據(jù)算法從其他關(guān)節(jié)進行推斷,從而確定關(guān)節(jié)位置,并將關(guān)節(jié)的狀態(tài)設(shè)置為“未標記”。
本系統(tǒng)是基于Kinect和實時運動重定向的人體動畫合成,最終目標是實現(xiàn)實時運動捕捉數(shù)據(jù)驅(qū)動模型,所以首先應(yīng)該將Kinect采集到3D骨骼模型進行一定的預(yù)處理操作,然后與骨骼關(guān)節(jié)點進行匹配[12],把得出的運動數(shù)據(jù)在Kincet應(yīng)用平臺上驅(qū)動3D模型,逆重定向于系統(tǒng)中的人體骨骼模型上,用以驅(qū)動平臺中的3D人物模型運動,進而引導(dǎo)用戶高效學(xué)習(xí)。整個系統(tǒng)的合成過程包括低維數(shù)轉(zhuǎn)換為高維數(shù)據(jù)、三維網(wǎng)格加載、網(wǎng)格骨骼提取、節(jié)點間匹配、實時運動捕捉數(shù)據(jù)驅(qū)動的網(wǎng)格模型等[13]。其中低維數(shù)據(jù)轉(zhuǎn)換為高維數(shù)據(jù)的步驟如下:
1) 將數(shù)據(jù)庫中2個近期合成的運動數(shù)據(jù)和根位置進行相應(yīng)的局部運動后建立模型;
2) 通過平滑運動建立局部線性模型的數(shù)據(jù)流點陣,實時合成運動數(shù)據(jù)動畫;
3) 將實時合成的運動數(shù)據(jù)結(jié)合根節(jié)點合成新的運動數(shù)據(jù)并使其運用于3D動畫。
運動學(xué)習(xí)系統(tǒng)的3D人體實時動畫設(shè)計流程如圖3所示。首先利用Kinect設(shè)備捕捉人體運動數(shù)據(jù),將數(shù)據(jù)進行人體合成;然后提取3D網(wǎng)格模型中的3D骨骼模型后與關(guān)鍵的骨骼節(jié)點相匹配、逆重定向于3D人體骨骼模型以及皮膚變形[14]。
圖3 運動學(xué)習(xí)系統(tǒng)的設(shè)計流程圖Fig.3 The design flow of The motion training system
為了評估運動訓(xùn)練系統(tǒng)的性能,系統(tǒng)需要建立一個提取骨骼信息的聯(lián)合數(shù)據(jù)庫來進行測試:通過微軟的Skeleton API開發(fā)了C++數(shù)據(jù)庫捕獲工具,輸入窗口顯示的是由RGB相機捕獲的彩色圖像,“骨骼”視圖窗口顯示了使用紅外熱像儀時檢測到的人的骨骼節(jié)點[15]。
在骨骼信息數(shù)據(jù)庫的建立過程中,Kinect的高度設(shè)置為100 cm,人體姿態(tài)預(yù)設(shè)為“站立”“坐著”“彎曲”和“躺下”,Kinect擺放角度為0°時,“躺著”的角度為-10°。測試室使用的是白熾燈界面如圖4所示。
圖4 骨骼信息數(shù)據(jù)采集界面Fig.4 Interface of the skeleton information data collection
系統(tǒng)捕獲了測試人員的4個主要姿勢(站立,坐著,彎曲和躺下)。每個姿勢記錄3次,每次持續(xù)時間大約5~8 s。要求測試人員按照如下要求做出動作:
1) 站立姿勢:測試人員敞開手臂站立,眼睛注視Kinect。在第1次和第2次記錄時間中測試人員與Kinect之間的距離為190 cm,在第3次記錄時間中距離為210 cm。
2) 坐姿:測試人員坐在椅子上后背伸直,膝蓋垂直折疊,手放在大腿上,眼睛注視著Kinect。第1次和第2次記錄時間,測試人員與Kinect之間的距離為190 cm,第3次記錄時間,距離為210 cm。
3) 躺姿:從Kinect的角度來看,人體處于水平方向。測試人員的腿伸直,手沿身體伸展。對于所有3個記錄時間,測試人員與Kinect之間的距離為190 cm。
4) 彎曲姿勢:測試人員垂直于Kinect彎曲,手放在膝蓋上。第1次記錄時雙腿閉合,在第2次和第3次記錄時,測試人員的雙腿張開得與肩膀一樣寬。所有這3遍,測試人員與Kinect之間的距離均為190 cm。
在錄制過程中,測試人員保持在相同位置。圖5給出了骨骼信息數(shù)據(jù)庫中4個姿勢的部分圖像。
圖5 4種姿勢的骨骼節(jié)點數(shù)據(jù)Fig.5 Skeleton node data of four postures
借助微軟公司推出的Kinect體感設(shè)備進行人體姿態(tài)識別的研究,利用其實時追蹤用戶身體輪廓位置的特點,通過結(jié)合3D場景中的3D人物模型追蹤用戶骨骼節(jié)點,從而確定動作數(shù)據(jù)并和標準數(shù)據(jù)進行實時對比;通過基于Kinect運動數(shù)據(jù)捕捉設(shè)備來獲取運動參數(shù),統(tǒng)計運動規(guī)律,克服傳統(tǒng)的體育動作學(xué)習(xí)耗費時間長、動作的標準程度差、學(xué)習(xí)效率低的困難,從而點明了體育動作學(xué)習(xí)的指導(dǎo)方向,對有效提高運動員競技水平、提高運動訓(xùn)練水平提供科學(xué)依據(jù)具有重要的現(xiàn)實意義。