戰(zhàn)蔭偉, 于芝枝, 蔡 俊
(廣東工業(yè)大學 計算機學院,廣東 廣州 510006)
人體動作豐富多樣,不同的動作具有不同的含義。在很多的應用中,需要對人體運動進行更加全面的分析,例如:行為監(jiān)控、運動分析、醫(yī)療康復等。如果能夠?qū)崟r地識別和跟蹤人體,那么就能夠準確地識別人體姿勢,更加方便地觀察和學習人體行為。因此,尋找一個好的方法來識別人體姿勢是非常有必要的。
近年來,基于Kinect[1~3]體感設備的人體動作識別在醫(yī)學領域表現(xiàn)出巨大的應用價值,國內(nèi)外很多機構(gòu)都在開展相關研究。Hu R Z等人[4]在學步車上安裝Kinect用來提取腿部信息從而進行醫(yī)療步態(tài)分析。Shotton J等人[5]利用Kinect獲得的深度信息檢測人體的關節(jié)點,利用隨機森林分類器將深度圖像像素分類為身體的多個部位。Schwarz L A等人[6]則結(jié)合人體解剖學標記和人體骨架模型,并利用Kinect獲得深度圖對人體進行全身的姿勢估計,利用測地距離(geodesic distances)來測量身體部位之間的距離。Zheng Xiao等人[7]利用Kinect的深度傳感器獲得的人體圖像來識別3D人體姿態(tài)。Penny J S等人[8]利用Kinect設備捕獲場景,并對人體的下肢姿態(tài)進行估計。
鑒于Kinect的廉價性和使用價值,許多醫(yī)療專家也將這一優(yōu)勢帶入到醫(yī)療康復當中,利用Kinect進行康復治療[9~11],其基本思想是利用深度信息和骨架跟蹤技術(shù)對人體肢體的跟蹤來確定肢體位置,從而識別人體的動作。文獻[12]指出利用Kinect康復訓練可以有效地增強康復的質(zhì)量,它在幫助患者恢復運動功能的同時也提高了患者的心理素質(zhì),減少患者消極情緒。Da Gama A等人[13]設計了人體肩部的康復系統(tǒng),該系統(tǒng)只需患者將手部碰觸到設定的點即可,但卻無法實時地測量關節(jié)點具體位置。康復訓練往往不需要患者進行快速的大幅度運動,但是對Kinect人體骨架跟蹤精度要求較高,如果能夠?qū)崿F(xiàn)對人的手部和腿部骨架準確的跟蹤,那么可以更加準確地識別出患者的動作,從而達到更好的康復效果。
為了提高人體姿勢識別的準確率和精確度,本文提出了一種人體關節(jié)點角度測量的姿勢識別的算法。此方法能夠?qū)崟r地測量骨架之間的角度,提高姿勢匹配的精確度,且能夠準確的對人體姿勢進行識別,算法簡單,效率較高。
人體姿勢識別算法主要由骨架獲取、角度測量、角度匹配和姿勢識別等幾個部分組成。算法流程如圖1所示,首先獲取人體骨架,并計算骨架關節(jié)點的空間坐標,然后計算關節(jié)點之間的距離和關節(jié)點之間角度,最后將計算的角度與姿勢庫中的模板的角度進行匹配,從而實現(xiàn)姿勢識別。
Kinect可以提供人體的20個骨骼關節(jié)點的三維坐標,圖2為得到人體的骨架圖。
圖2 人體骨架關節(jié)點
在2.1節(jié)中已經(jīng)獲得了人體的20個關節(jié)點,接下來求2個關節(jié)點之間的距離。首先利用Kinect獲得的場景深度信息求出人到相機的實際距離。在文獻[14]中利用獲取的深度值求出目標到Kinect傳感器的實際距離d,即
d=Ktan(Hdraw+L)-O.
(1)
其中,draw為深度值,H=3.5×10-4rad,K=12.36 cm,L=1.18 rad,O=3.7 cm。文獻[15]給出深度圖像素坐標為(ximage,yimage,zimage)到實際坐標(xworld,yworld,zworld)的變換公式
(2)
其中,D′=-10,F(xiàn)=0.002 1,Kinect的分辨率w×h為640×480,X(x1,x2,x3),Y(y1,y2,y3)為空間坐標系的2個點。結(jié)合式(1)和式(2)就可得出關節(jié)點的實際坐標,最后利用歐氏距離
(3)
求出兩關節(jié)點之間的距離。
求解人體關節(jié)點連線之間的角度主要是利用三點法(3個關節(jié)點):利用式(2)計算出的關節(jié)點的實際位置的坐標計算出人體的3個相關聯(lián)的關節(jié)點(如圖3)的距離(式(4)),并利用余弦定理(式(5))求出關節(jié)點連線之間的角度大小。此方法在對人體姿勢進行識別的最主要的缺點就是在測量過程中關節(jié)點不穩(wěn)定性對角度測量的影響較大,導致姿勢識別不準確。圖4(a)展示了三點法的角度測量效果。
圖3 關節(jié)點角度計算
(4)
(5)
針對三點法在測量過程中不穩(wěn)定性提出了兩點法(2個關節(jié)點)。此方法以一個關節(jié)點為基準點,再確定另一個關節(jié)點,求出2個關節(jié)點與基準點的X軸的角度大小。兩點法使得人在移動過程中基準點和指定點都是相對穩(wěn)定的,從而能夠減小關節(jié)點之間相對晃動的程度,準確地測量關節(jié)角度的大小,且指定點的坐標即為基準點在X軸上的平移得到,計算較為簡單。圖4(b)為兩點法測量角度的效果。
圖4 角度測量結(jié)果
利用式(6)定義關節(jié)點的角度條件
PA={P1,P2,θ,τ},
(6)
即以P1為中心點,關節(jié)點P2與X軸上的角度為θ;τ為設定的角度閾值。更多姿勢的定義只需要確定關節(jié)點之間的夾角關系,同時可以設定不同的閾值以滿足不同的精度要求。設定θi(i=1,…,4)為關節(jié)點的角度。θ1=(左肩,左肘),θ2=(左肘,左腕),θ3=(右肩,右肘),θ4=(右肘,右腕),τ為閾值,則姿勢定義需滿足角度條件為Δ=(θ1,θ2,θ3,θ4,τ)。
T型(開始姿勢):ΔT=(180,180,0,0,15);
舉起雙手:ΔD=(180,90,0,90,15);
放下雙手:Δ0=(270,270,270,270,15);
舉起左手,右手平舉:ΔL0=(180,90,0,0,15);
舉起左手,右手放下:ΔL1=(180,90,270,270,15);
舉起右手,左手平舉:ΔR0=(180,180,0,90,15);
舉起右手,左手放下:ΔR1=(270,270,0,90,15)。
本文在設定姿勢庫時設立了角度的閾值范圍,首先遍歷所有的角度,然后判斷4個角度是否在規(guī)定的閾值范圍內(nèi),若在,則姿勢匹配成功進行下一階段,即所有角度滿足式(7);若其中有任一個角度不滿足則匹配不成功,重新開始匹配
(7)
其中,θi為測量角度,ai為設定的期望角度,T為的閾值。
算法對7個動作進行測試,由表1可知,當閾值設置為15°時,T姿勢、雙手舉起和舉起左右手能夠100 %的識別,而對于雙手放下這個姿勢識別率也達到96 %。
表1 姿勢識別實驗統(tǒng)計
利用該算法設計了簡單的游戲,玩家根據(jù)界面上的提示做出相對應的動作,以T姿勢開始游戲,分多個環(huán)節(jié),環(huán)節(jié)一為一個動作,環(huán)節(jié)二為做2個連續(xù)的動作,以此類推。只有完成低環(huán)節(jié)才能進入到高環(huán)節(jié),若本環(huán)節(jié)完成,而下一環(huán)節(jié)未達到要求則重新從第一環(huán)節(jié)開始。圖5(a)顯示“擺出T姿勢開始游戲”,圖5(b~e)則為進入游戲后的界面。此游戲可以用于鍛煉手臂的靈活性,同時可以應用到手臂康復系統(tǒng)中,根據(jù)患者手臂訓練幅度設置角度的大小,幫助手臂不靈活的患者進行復建。
圖5 姿勢識別系統(tǒng)
本文算法采用Microsoft Visual Studio 2010結(jié)合Microsoft Kinect SDK 1.7開發(fā)實現(xiàn)。實驗表明:此方法能夠?qū)崟r測量骨架之間的角度,對人體姿勢進行準確識別。算法簡單,準確度較高,且可以根據(jù)不同姿勢的要求設定不同的角度范圍,故而復用性較強。盡管Kinect傳感器能夠獲得人體深度信息,計算出人體空間位置,但對于關節(jié)點重合等問題,在識別上還不夠準確,所以,應在關注人體行為分析領域發(fā)展的同時,努力研究骨架校正等問題,進一步提高骨架精確度。
參考文獻:
[1] Giles J. Inside the race to hack the Kinect[J].The New Scientist,2010,208(2789):22-23.
[2] 余 濤.Kinect應用開發(fā)實戰(zhàn):用最自然的方式與機器對話[M].北京:機械工業(yè)出版社,2012.
[3] Webb J,Ashley J.Beginning Kinect programming with the microsoft Kinect SDK[M].[S.1.]Apress,2012.
[4] Hu R Z L,Hartfiel A,Tung J,et al.3D pose tracking of walker users’ lower limb with a structured-light camera on a moving platform[C]∥Computer Vision and Pattern Recognition Workshops,2011:29-36.
[5] Shotton J,Fitzgibbon A,Cook M,et al.Real-time human pose recognition in parts from single depth images[C]∥2011 IEEE Conference on Computer Vision and Pattern Recognition (CVPR),2011:1297-1304.
[6] Schwarz A,Mkhitaryan A,Mateus D,et al.Human skeleton tra-cking from depth data using geodesic distances and optical flow[J].Image and Vision Computing,2012,30(3):217-226.
[7] Zheng Xiao,Fu Mengyin,Yang Yi,et al.3D Human postures re-cognition using Kinect[C]∥2012 4th International Conference on Intelligent Human-Machine Systems and Cybernetics (IHMSC),2012:344-347.
[8] Penny J S,David J B,Steven B,et al.A study to evaluate a low cost virtual reality system for home-based rehabilitation of the upper limb following stroke[J].International Journal on Disability and Human Development,2011,10(4):337-341.
[9] Stone E.E,Skubic M.Evaluation of an inexpensive depth camera for passive in-home fall risk assessment[C]∥2011 5th International Conference on Pervasive Computing Technologies for Healthcare (PervasiveHealth 2011),2011:71-77.
[10] Huang J D.Kinerehab:A Kinect-based system for physical rehabilitation a pilot study for young adults with motor disabilities[C]∥Proceedings of the 13th International ACM SIGACCESS Confe-rence on Computers and Accessibility,2011:319-320.
[11] Lange B,Chien-yen Chang,Suma E, et al.Development and evaluation of low cost game-based balance rehabilitation tool using the Microsoft Kinect sensor[C]∥2011 33rd Annual International Conference of the IEEE Engineering in Medicine and Biology Society,2011:1831-1834.
[12] Yeh S C,Hwing W Y,Huang T C,et al.A study for the application of body sensing in assisted rehabilitation training[C]∥2012 International Symposium on Computer,Consumer and Control,IS3C 2012,2012:922-925.
[13] Da Gana A,Chaves T,Figueiredo L,et al.Poster:Improving motor rehabilitation process through a natural interaction based system using Kinect sensor[C]∥2012 IEEE Symposium on 3D User Interfaces (3DUI),2012:145-146.
[14] Raheja L J,Chaudhary A,Singal K,et al.Tracking of fingertips and centers of palm using Kinect[C]∥2011 Third International Conference on Computational Intelligence,Modelling and Simulation,2011:248-252.
[15] Satyavolu S,Bruder G,Willemsen P,et al.Analysis of IR-based virtual reality tracking using multiple Kinects[C]∥IEEE Virtual Reality Conference,2012:149-150.