王 軻, 王 亞, 段渭軍,, 于 琪
(1.西北工業(yè)大學(xué) 體育部,陜西 西安 710072;2.西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安 710072)
研究發(fā)現(xiàn)Kinect傳感器[1,2]的開發(fā)和使用能實(shí)現(xiàn)非接觸式的動(dòng)作采集。本文以大學(xué)生體質(zhì)健康測(cè)試項(xiàng)目立定跳遠(yuǎn)為例,借助微軟Kinect傳感器,進(jìn)行其動(dòng)作狀態(tài)跟蹤、捕捉和姿態(tài)分析,不僅可以解決傳統(tǒng)學(xué)生體質(zhì)健康測(cè)試存在的問題,而且可以完成在取得準(zhǔn)確測(cè)試結(jié)果的同時(shí)能夠獲取測(cè)試過程數(shù)據(jù),為高校體育教學(xué)及體質(zhì)健康測(cè)試評(píng)價(jià)提供理論和參考依據(jù)。
Kinect 2.0[3]配備紅外發(fā)射器,主動(dòng)投射近紅外光譜,照射到粗糙物體、或是穿透毛玻璃后,光譜發(fā)生扭曲,會(huì)形成隨機(jī)的反射斑點(diǎn)(稱為散斑),進(jìn)而能被紅外攝像頭讀取版采用。同時(shí),深度(紅外)攝像頭配合紅外發(fā)射器使用,對(duì)發(fā)射回傳感器的紅外光譜利用飛行時(shí)間(time of flight,TOF)獲取紅外脈沖由被測(cè)物體反射到接收器所用的時(shí)間[4]。然后Kinect 根據(jù)光速和時(shí)間來計(jì)算深度信息,從而創(chuàng)建可視范圍內(nèi)的人體、物體的深度圖[5~7]。
設(shè)發(fā)射頻率為f,紅外波長(zhǎng)為λ,傳播周期為Τ,相位差為Δφ,信號(hào)傳播時(shí)間為t,則可推得目標(biāo)點(diǎn)到相機(jī)所在平面的距離d為
(1)
(2)
式中 光速c為3×108m/s,n為紅外發(fā)射器收發(fā)一次信號(hào)的波長(zhǎng)個(gè)數(shù)。由于環(huán)境和紅外頻率等因素的多重影響,距離Kinect較近位置處獲取到的深度點(diǎn)的密度要大于后方,故距離較近的位置可以獲得比較精確的深度信息。Kinect可以獲得水平57°(以Kinect為中心,左右各28.5°)和豎直43°(以Kinect為中心,上下各21.5°)的偵測(cè)范圍。
1.1.1 深度圖像數(shù)據(jù)
Kinect深度傳感器可以獲取距離Kinect最近的物體到Kinect所在平面的垂直距離。其深度判別范圍中黑白區(qū)域?yàn)檎9ぷ鲄^(qū)域,紅色與藍(lán)色區(qū)域分別代表無窮近與大于4.5 m的測(cè)量區(qū)域,綠色范圍內(nèi)數(shù)據(jù)判別精度不高,故其可較準(zhǔn)確地返回它前方0.5~4.5 m距離的深度值信息。
1.1.2 人體識(shí)別
Kinect先識(shí)別類似于人體的“大”字形物體的輪廓,然后通過邊緣檢測(cè)、噪聲處理等計(jì)算機(jī)視覺方面的算法進(jìn)行處理,最終將人體從背景中分離出來[8,9]。該過程中Kinect對(duì)深度圖像逐個(gè)像素掃描,進(jìn)行“像素級(jí)”評(píng)估。Kinect的視野可以同時(shí)跟蹤6個(gè)用戶,每個(gè)用戶都會(huì)被分配到一個(gè)唯一的ID。如前所述,灰度圖像每一像素點(diǎn)的16位中,高13位記錄深度數(shù)據(jù),低3位記錄用戶ID,用來對(duì)識(shí)別出的人體進(jìn)行編號(hào),ID的三位都為0表示不是人體,或者骨骼引擎關(guān)閉,如圖1所示。
圖1 人體識(shí)別分割
通過人體識(shí)別分割已經(jīng)將人體從背景中分離,通過識(shí)別人體的25個(gè)關(guān)節(jié)點(diǎn)來對(duì)骨骼進(jìn)行識(shí)別。如圖2所示獲得的骨骼關(guān)節(jié)點(diǎn)的三維坐標(biāo)信息需要進(jìn)行坐標(biāo)轉(zhuǎn)換[10,11]。
圖2 人體骨骼關(guān)節(jié)位置示意
通常深度圖像幀的x,y坐標(biāo)系表示在傳感器上對(duì)應(yīng)的坐標(biāo),而不表示實(shí)際物理環(huán)境的位置坐標(biāo)。深度圖像坐標(biāo)系的點(diǎn),類型為DepthImagePoint(x,y,z) ,(x,y)為深度圖像像素坐標(biāo),z(mm)為深度值。而骨骼坐標(biāo)系的點(diǎn),類型為SkeletonPoint(x,y,z) , (x,y,z)(m)為空間坐標(biāo)。
深度圖像坐標(biāo)系和骨骼坐標(biāo)系均以Kinect 傳感器的紅外攝像頭為中心,x,y軸分別與圖像的x,y軸平行,z軸為傳感器的方向,與圖像平面垂直。這樣構(gòu)成的直角坐標(biāo)系為攝像機(jī)坐標(biāo)系。
測(cè)試系統(tǒng)的硬件設(shè)備由Kinect、立定跳遠(yuǎn)測(cè)試儀、IC卡讀卡器、一臺(tái)電腦和服務(wù)器組成。主要包括三大模塊:讀卡器、Kinect和體重儀組成的信息采集模塊,電腦作為系統(tǒng)的載體組成的處理模塊和數(shù)據(jù)庫(如圖3所示)。
圖3 系統(tǒng)構(gòu)架
身體幀數(shù)據(jù)由人體25個(gè)關(guān)節(jié)點(diǎn)的集合,每幀包含了關(guān)節(jié)的3D位置和方向。人體跟蹤的有三種狀態(tài):跟蹤失敗(not tracked)、推測(cè)狀態(tài)(inferred)、跟蹤狀態(tài)(tracked)。跟蹤失敗狀態(tài)下,身體數(shù)據(jù)的Position字段以及相關(guān)的節(jié)點(diǎn)數(shù)組中的每一個(gè)位置點(diǎn)值都是0,即x,y,z值均為0;推測(cè)狀態(tài)探測(cè)到了人體對(duì)象,但追蹤沒有被激活,身體數(shù)據(jù)的Position數(shù)據(jù)有值,相關(guān)的關(guān)節(jié)數(shù)據(jù)位置點(diǎn)的值都是0;追蹤狀態(tài)表示人體骨骼信息正在被追蹤,身體數(shù)據(jù)的Position信息和相關(guān)的節(jié)點(diǎn)數(shù)據(jù)的位置信息都為非0值。Position為一個(gè)Camera Space Point類型的字段,代表所有骨骼的中間點(diǎn)(如圖2所示)。
本文在姿勢(shì)庫中定義了兩種姿勢(shì),即伸開雙臂呈“T”字形來啟動(dòng)測(cè)量和舉起雙手以清除當(dāng)前數(shù)據(jù)重新測(cè)量。測(cè)試者做出特定的姿勢(shì)通過與姿勢(shì)庫中模板匹配,就是對(duì)關(guān)節(jié)點(diǎn)進(jìn)行命中測(cè)試來觸發(fā)相應(yīng)的事件。
本方法關(guān)節(jié)點(diǎn)采用節(jié)點(diǎn)三角形法,即計(jì)算某些關(guān)節(jié)點(diǎn)之間的角度(如圖4 所示)。由左肩關(guān)節(jié)點(diǎn)(shoulderleft) 、左肘關(guān)節(jié)點(diǎn)(elbowleft) 和左手腕關(guān)節(jié)點(diǎn)(wristleft) 三點(diǎn)構(gòu)成的三角形中,可根據(jù)距離公式分別求出a,b,c三邊邊長(zhǎng),再根據(jù)余玄定理求出夾角。當(dāng)夾角在規(guī)定的閾值范圍內(nèi),可以判斷為有效姿勢(shì)。
圖4 節(jié)點(diǎn)三角形法
首先需確定起跳位置和最終人體的移動(dòng)距離,根據(jù)TOF測(cè)距原理,人體景深數(shù)據(jù)表示從景深(紅外)攝像頭到該物體表面的距離(mm),每一個(gè)像素為16 bit,測(cè)距范圍在0.5~8 m之間。其所使用的空間坐標(biāo)系不同一般的空間坐標(biāo)系,其中z軸坐標(biāo)零點(diǎn)為景深攝像頭的位置,x軸與y軸的零點(diǎn)與傳統(tǒng)空間坐標(biāo)系相同,正方向?yàn)橹赶虻恼胺?。值得注意的是,由Kinect獲取的景深值是物體距離傳感器所在水平線的距離,而非至傳感器的直接距離。
測(cè)試對(duì)象處于離Kinect距離為L(zhǎng)的位置上,擺出“T”姿勢(shì),相機(jī)標(biāo)定此時(shí)測(cè)試對(duì)象的位置為起始位置。當(dāng)起跳之后,通過腳部坐標(biāo)點(diǎn)的變化,識(shí)別出已經(jīng)處于跳遠(yuǎn)運(yùn)動(dòng)狀態(tài)中并標(biāo)定用戶落地的位置。通過計(jì)算起始點(diǎn)和落地點(diǎn)之間的距離,計(jì)算出測(cè)試對(duì)象的立定跳遠(yuǎn)距離(圖5)。
圖5 立定跳遠(yuǎn)的測(cè)量方法
當(dāng)測(cè)試對(duì)象與Kinect距離不斷縮小時(shí),即z軸方向上的值減小,腳部骨骼點(diǎn)y軸方向上的值也會(huì)隨之減小。為了解決此問題,通過采集不同距離時(shí)多組(z,y),擬合出一條矯正曲線,使得在水平平面上腳部骨骼點(diǎn)坐標(biāo)值y不會(huì)因z的值變化而改變(圖6)。
圖6 矯正曲線
立定跳遠(yuǎn)流程設(shè)計(jì)如圖7所示。
圖7 跳遠(yuǎn)測(cè)量流程
3.1.1 測(cè)試對(duì)象
隨機(jī)選取12名本科一年級(jí)大學(xué)生(男女各6名)。
3.1.2 測(cè)試方法
1)選用學(xué)校立定跳遠(yuǎn)測(cè)試儀器;2)選用本次實(shí)驗(yàn)的Kinect傳感器測(cè)量方法及儀器??紤]到在立定跳遠(yuǎn)動(dòng)作會(huì)出現(xiàn)的兩種情況:1)用戶穩(wěn)穩(wěn)地保持在落地點(diǎn)位置;2)由于慣性用戶會(huì)向前邁步。采取以下解決方法:第一種情況下用戶腳部骨骼點(diǎn)在y軸方向上的坐標(biāo)值將不再發(fā)生變化。計(jì)算獲取數(shù)據(jù)中10組坐標(biāo)值差值,如果差值在允許誤差范圍內(nèi)時(shí),則判定用戶已經(jīng)落地,并將10組坐標(biāo)值均值作為用戶落地點(diǎn)位置。第二種情況下,通過MATLAB軟件繪制腳部骨骼點(diǎn)y軸方向上的位移圖,會(huì)發(fā)現(xiàn)在曲線會(huì)有多個(gè)拐點(diǎn),這些拐點(diǎn)即為腳部多次落地y軸坐標(biāo)變化。取10組數(shù)據(jù)進(jìn)行變化趨勢(shì)分析,當(dāng)數(shù)據(jù)中第一次出現(xiàn)拐點(diǎn),則取該拐點(diǎn)處值為落地點(diǎn)位置。
實(shí)驗(yàn)結(jié)果如表1所示。表明,根據(jù)方法(1)測(cè)試立定跳遠(yuǎn)成績(jī)的平均誤差約為1.07 %;而根據(jù)Kinect方法(2)測(cè)試的平均誤差約為0.32 %,驗(yàn)證了采用Kinect傳感器的TOF測(cè)距原理及該方法的準(zhǔn)確性。
表1 立定跳遠(yuǎn)測(cè)量結(jié)果
該方法可在多個(gè)項(xiàng)目中應(yīng)用,實(shí)現(xiàn)集多項(xiàng)測(cè)試于一體的功能,同時(shí)Kinect設(shè)備可以實(shí)現(xiàn)基于視頻動(dòng)作捕捉,對(duì)運(yùn)動(dòng)姿態(tài)分析有很大幫助。不僅在取得準(zhǔn)確測(cè)試結(jié)果的同時(shí)能夠獲取測(cè)試過程數(shù)據(jù),而且能為體育教學(xué)、體質(zhì)測(cè)試評(píng)價(jià)提供理論和參考依據(jù),具有一定的應(yīng)用價(jià)值。