毛 堃 吳小敏 王超素
(1.衢州職業技術學院信息工程學院,浙江 衢州324000;2.溫州醫科大學附屬衢州醫院<衢州市人民醫院>浙江 衢州324000)
針對人體動作的識別,目前主要有穿戴式傳感器識別和基于視覺的非穿戴式識別兩種方式,其中的基于視覺的識別方法無須佩戴任何傳感器,操作簡單方便,尤其是微軟的Kinect融合了傳統攝像頭的視覺數據和深度傳感器數據,能夠實現3D識別,因此,許多研究人員都將其用于人體骨骼運動數據的采集。吉林大學的千承輝等人采用Kinect V2構建了一套能夠實現對于患者進行運動康復評價的系統,采用了傳統的DTW算法將實驗動作與模板動作進行匹配,最終給出康復動作的評分[1];安徽大學的李順等人基于Kinect V2體感傳感器提出了一種基于關鍵幀和人體骨骼運動數據的動作識別方法,其中通過僅保留相鄰幀信息改進DTW算法,降低了計算維度,最終實現了人體的實時動作識別,大幅提高了識別效率[2];中國礦業大學的趙小虎等人基于Kinect實現了對礦井人員的違規行為進行識別,提出了一種分段線性逼近結合的自適應權重的DTW算法,解決了傳統DTW的奇異點問題,提高了系統的識別準確率[3];廣東工業大學的吳齊云等人基于DTW和K-means實現到了對于人體動作的匹配和評價,實現了在降低計算維度的同時,具有較好的識別準確率[4];青島科技大學的楊尊儉等人基于Kinect實現了對于仿真駕駛的手勢識別,并通過每個關節點進行加權改進DTW,結合深度學習實現了較高的識別準確率[5]。
雖然現有的研究基于Kinect已經能夠對于人體動作進行評價,但是在上肢康復運動評價過程中,患者運動往往存在一定的不確定因素,傳統的DTW匹配算法并不能完全適應,在準確度上仍然存在一定的提升空間。因此,本文提出一種能夠自動實現端點對齊的改進DTW的方法,從而實現提高匹配的準確度。
動態時間規整DTW(Dynamic Time Wraping)是一種能夠實現對于兩個時間序列相似性進行有效判斷的方法[6],有效避免了傳統基于歐氏距離匹配算法無法對兩個在時間軸上存在拉伸或者壓縮的序列進行匹配的缺點。動態時間規整算法的步驟和公式如下:
給定兩個數據序列Q和S,分別為待匹配的骨骼運動數據序列和標準的模板骨骼運動數據序列,定義該骨骼運動的數據維度S=(x1,x2,...,xm)和Q=(y1,y2,...,yn)。兩個骨骼運動數據序列的匹配距離定義為d(S,Q)。為了能夠計算出該骨骼運動數據的DTW匹配距離,就需要找到一條最優的路徑P={P1,P2,...,Pk}(max(n,m)≤K≤n+m+1),使得S和Q兩者累積的距離達到最小,其中的PK表示路徑中的元素在距離矩陣中所在的位置,即d(Pk)=d(i,j)k,與此同時,路徑P還必須符合以下三個條件:
(1)邊界性:P1=(1,1),PK=(m,n);
(2)單調性:給定Pk=(i,j)和Pk+1=(u,v),有u≥i,v≥j;
(3)連續性:給定Pk=(i,j)和Pk+1=(u,v),有u≤i+1,v≤j+1;
最終找到唯一的一條最優路徑,使得累積的距離達到最小,即:

為求解公式(1),構造出一個代價矩陣R,矩陣的每個元素的計算公式如下:

其中i=1,2,...m,j=1,2,...n,R(0,0)=0,R(i,0)=R(0,j)=∞,
給出R中的所有元素R(i,j),最終由公式(3)的最小代價可知,d(S,Q)=R(m,n)。
整個動態時間規整算法的核心思想就是采用動態規劃的方式,從而找到一條使得最終的累計路徑最小,實現兩個數據序列之間的匹配分析,相比其他匹配算法,其并不需要額外的訓練,計算復雜度更低,在許多領域內得到了廣泛的應用。
上肢康復運動訓練時,患者的身體狀態千差萬別,而且由于年齡往往較大,因此,在進行運動數據采集過程中,往往反應較為遲鈍,從而造成所采集到的運動數據在開始和結束階段存在大量無效的運動數據。本文通過采用基于上肢運動速度設置閾值的方式對DTW算法進行改進,自動實現對于有效數據端點的自動識別,截取有效的運動數據,具體的算法思路如圖1所示。

圖1 本文的算法流程圖
在Kinect V2進行實時采集患者的上肢康復運動數據時,對其中的腕部關節點的運動速度進行實時計算,并與閾值V1進行比較,當速度大于V1時,則記錄此時的數據幀為康復動作的起始幀,也就是實際有效的康復動作的起點。閾值V1并不是一個固定不變的數值,而是可以根據不同的患者的運動特性而實現自適應的閾值,其計算的公式如下所示:

式中的vn代表的是第n+1幀時的腕部關節點的運動速度。
通常來說,人的反應時間一般在0.2~0.3 s,也就是200~300 ms之間,但是,對于年齡較大的患者來說,對于指令的反應時間往往會更長,因此,在300 ms的時間內可以較為準確地獲得患者在自然狀態下的運動特征,其中就包含了自然狀態下腕部關節點的運動速度信息。又因為Kinect V2傳感器每秒輸出的骨骼運動數據為30幀,也就是每33.3 ms輸出一幀數據,那么,計算可知,10幀的數據對應300 ms,即,此處n的取值范圍設置為[1,10]。
對于終點數據幀的確定,采用通過對于患者在結束采集點前的10幀數據內進行運動特征的提取,并進行反向搜索整個康復動作的實際終點,即當腕部關節點的速度小于閾值V2時,則記錄此時的數據幀為結束幀。閾值V2的計算公式如下:

式中的vm代表的是最后一幀時腕部關節點的運動速度,i的取值與V1中的n取值方法保持一致,采用最后的10幀數據對于腕部關節點的結束后的運動速度進行識別,i取值為9。
經過上述對于起點和終點的速度閾值V1和V2的確定后,最終通過比較計算得到最終有效的上肢康復運動數據,并通過DTW算法將其與模板數據進行匹配,得到上肢康復運動數據的標準程度。
整個實驗通過在自行搭建的基于Kinect V2的上肢康復運動評價系統中進行,實驗選取5人進行模擬患者的反應遲緩的狀態,具體的實驗步驟如下:
(1)實驗者完成第一組動作,要求在開始實際運動之前進行隨機的延時等待,而在整個動作結束之后,同樣進行隨機的延時等待;
(2)實驗者完成第二組動作,要求流暢完成整個動作,沒有任何延時和等待。
通過SQL數據庫對整個實驗過程的所有數據進行保存,并通過繪制匹配圖對整個實驗的運動數據與模板數據之間的匹配結果進行可視化展示,以第一位實驗者的腕部X軸坐標值的匹配結果為例,如圖2所示。

圖2 實驗者腕部X軸坐標值的基于DTW和基于改進DTW的匹配結果
通過圖2中的實驗結果可以看出,a中展示的DTW路徑規劃圖中的路徑在20幀之前幾乎一直為一條直線,說明難以與標準動作進行有效匹配,實驗者腕部X軸坐標值的取值一直在某個值的附近小幅波動;在第20~80幀之間,路徑圖整體表現出一條斜線,說明與標準動作具有較好的匹配度;而在第80幀之后,路徑圖再次出現了較長的水平段,說明實驗者腕部X軸坐標值的取值同樣也是在某個值附近小幅波動,從上述現象可知,這是實驗者在做第一組動作,同時,也可以通過起點的第20幀和終點的80幀判斷出,第一位實驗者在開始動作之前延時了2/3秒,在動作實際結束后延時了約0.5 s(一共97幀)。很顯然,傳統的DTW并沒有過濾運動序列兩端的無效數據,強行將運動數據進行匹配。而從圖2中的b中可以看出,端點兩側附近的無效數據已經被去除,只剩下了有效數據,DTW的路徑圖也呈現出長斜線,說明了本文改進的DTW算法能夠有效識別出起點和終點附近的無效運動數據,自動提取出實際的運動數據,最后將有效的運動數據與模板數據進行DTW匹配。
本文提出了一種針對上肢康復運動評價的改進的DTW匹配算法,引入速度特征的自適應識別,實現自動定位實際有效的運動數據序列的起點和終點。實驗結果表明,本文提出的改進DTW算法相比傳統的DTW算法具有更高的匹配準確度,更能適應實際的上肢康復運動的評價,并為后續對于實際患者的上肢康復運動的精確評價研究提供了參考。