proceedings of the 19th acm international conference on**********,2011-12:659-662.
dimitrios s. alexiadis, philip kelly, petros daras, noel e.o'connor,
tamy boubekeur, maher ben moussa
(海拉斯研究技術中心,愛爾蘭都柏林城市大學, 巴黎高科電信學院,瑞士日內瓦大學)
摘 要
本文中研究了一些具有挑戰性難題的技術。我們目標是實現舞蹈動作實時自動對齊,以此來評估和反饋舞蹈表演。更具體地說,在該系統中,學生的舞蹈動作可以在時間上自動與老師的動作進行對齊,然後分別計算出乙個整體分數和瞬時分數,以此來評估該學生的表現,同時提供視覺反饋的功能。從kinect深度影象獲取相關資料集是調整和評估舞蹈表演這一過程中最的大難題。為此,通過從kinect深度影象獲取人類骨架跟蹤的一套訊號處理方法成為了我們對舞蹈動作進行評價的依據。此外,該系統提供了乙個視覺化的虛擬的3d遊戲環境,該環境中將老師和學生的舞蹈動作一一對應,並獲取舞蹈表演者的舞蹈分數。該視覺化工具還提供了改變視角方向、多個角度分析舞蹈動作等功能。
本文組織如下:
在第二部分我們簡要地描述從acm挑戰大賽獲取的資料集;在第三部分,我們介紹如何運用kinect骨架跟蹤實現舞蹈者動作跟蹤;在第四部分我們詳細的提出了對舞蹈表演者評價的訊號處理方法;第五部分簡述了視覺化工具及其基本操作;最後,在第六部分我們列出了實驗開發過程中用到的一些軟體。
在該系統中,我們從acm挑戰大賽中華為3d生活/ emc2 的《在網路虛擬環境中的現實互動》採集資料,其中包括薩爾薩舞舞蹈表演者的錄影與各種動作的捕獲,裝置採用微軟kinect感測器。該資料集包括兩個專業的舞者錄影(乙個男性和乙個女性),和十三個業餘舞者(八個男性和五個女性),六種不同的舞蹈編排。雖然資料集中包含了更多的資訊,但該系統中我們僅僅使用kinect資料,這對許多家庭愛好者更為有利。
kinect資料集的舞蹈錄影使用openni獲取,採用openni編碼。openni sdk提供一種高階骨架跟蹤模組,它可以檢測捕獲使用者的身體關節。更具體地說,openni跟蹤模組跟蹤17個關節點(頭、頸、軀幹、左右衣領、左右肩、左右肘、左右臀部、左右手、左右膝、左右腳),以及相應的跟蹤資訊(見圖2)。
根據第三部分描述,我們開發了基於c++ openni的骨架跟蹤軟體和基於matlab的程式外包。骨骼追蹤模組輸出的位置對應於每幀舞者的關節,這些位置實際上構成了乙個3d向量訊號。此外,舞蹈動作也可以通過骨架跟蹤模組的輸出獲得。在該系統中,這些動態的舞蹈動作是根據關節的瞬時三維速度和離散時間位置訊號量的高斯一階導數卷積計算獲得的。為了提供乙個測評分數,我們為每個舞者與相應的專業的人士比較對齊位置和速度向量訊號。
為了以統一的方式處理三座標變數x,y和z,訊號處理技術利用超複雜數字和專門四元數。四元數這一在3d圖形領域極受歡迎的名詞最近被用於訊號和影象處理,它簡單地說由複雜的數字構成,一般認為虛部由乙個3d「向量」構成,而不僅是乙個標量虛部。四元數理論的細節超出了本文的範圍,有興趣的讀者可自行查閱相關文集。
4.1.1舞者對齊
關於資料集的盛大挑戰是將所有舞者舞步對齊到與它們對應的背景**,然而這個**不是可用的資料,並且kinect資料流與開始/結束的背景**不同步。因此,kinect舞蹈序列實際上與資料幀編號不對應。此外,我們處理的資料物件通常是兩個不同的舞蹈序列,並且我們想對比的資料不具有相同的時間長度。另外,一時間戳為標準進行對例項的骨骼跟蹤進而檢測到舞者並開始跟蹤的方法並不是一直有效。因此,為了獲得更多的有用的訊號,我們預先將舞蹈序列進行對齊。在該系統中,對齊完全是通過利用kinect資料得到的。
預先將舞蹈序列進行對齊方案如下:1)對於每個序列,丟棄所有檢測到舞者前的幀,即在檢測到至少乙個關節點前丟棄所有資料;2)用乙個標誌值代表乙個未被發現/跟蹤的節點;3)對應最小的標誌值,使得這兩個序列有相同的時間長度。注意,標記值不考慮進一步的計算。在該系統中,舞蹈的對齊只通過kinect資料和四元的交叉協方差。兩個舞蹈序列之間的時移是通過計算所有關節的四元交叉協方差獲取的。如圖1。
圖1. 上面兩圖:專業舞蹈表演者和乙個業餘舞者在z軸方向的所有關節;第三幅:對應模量的四元交叉協方差;均採用三幀資料。
4.1.2舞者評價
在該系統中根據乙個舞蹈演員的表現計算出三個不同的分數,隨後綜合起來產生乙個總體得分。分數計算方式如下:
分數1:接頭位置
通過每一對接頭位置訊號計算各關節的四元的相關係數得到乙個分數,然後計算各節點加權平均值作為乙個總分s1。
分數2:關節速度
同樣,通過提取每個關節的速度訊號而不考慮他們的位置,計算各關節的四元的相關係數得到乙個分數,最後計算各節點加權平均值作為乙個總分s2。
分數3:3d流錯誤
對於給定的乙個幀,一般認為關節點的速度是乙個3d運動(流)向量。受相關的2 d光學流影響,我們通過在同一座標下對每個關節點的三維速度向量進行標準化並計算向量的內積獲得乙個分數。為了減小由於不準確的骨架跟蹤造成的誤差,所有的關節分數都是由各自關節點內的資料計算得到。
總分通過計算s1,s2和s3的加權平均值得到最終成績。其中,更改三個權值比重可以確定對應的優化的方法。
與真實評級的關係
因為分數是將業餘的舞蹈表演者與專業的人比較得到的,所以,假設參考的專業舞蹈表演者是「優秀」,自動得到的成績在一定程度上能反映出五個真實標準(「上半身流暢性」和「下半身流暢性」、「**配合度」、「身體平衡性」和「編排」)。而需要注意的是計算分數時主要考慮到的是「編排」和「**匹配」效能,這在一定程度上可參照s1和s2之間的相關性,因此,這些訊號在一定程度上具有時間匹配性。分數s3也是根據類似的方法提出的。上面的引數可以通過簡單的場景模擬實驗得到,但是實驗模擬的具體方法超出了本文的範圍。
瞬時分數和不同身體部位單獨的分數
如果需要不同部分舞蹈的得分,而不是乙個單一整體分數,可採用乙個簡單的方法得到瞬時分數。在這種情況下,我們採用時間滑動視窗,即一段時間t內的瞬時得分而不考慮整個時間間隔內的向量訊號,運用上述方法對時間間隔t內的不同身體部位的動作長度l分別計算。
另外,上述方法可以通過反饋進行擴充套件,以便業餘舞蹈家可以提高自己的表演。在這種情況下,可以提取不同的身體部位分別計分,如上下肢等等。
統外部框架分為兩個不同的部分:1)資料採集軟體;2)資料視覺化軟體
資料採集軟體
為了整合開發方法,我們基於matlab開發了乙個圖形使用者介面(gui),以便允許引數的和提供初始視覺化結果,在該gui中系統中用到的所有引數均可以控制。如圖2。
圖2:資料採集軟體gui
資料視覺化軟體
儘管極難自動評估舞蹈動作這種主觀的東西,但根據我們的實驗,我們採用的方法的確得到了一些有意義的結果,比如(1)專業的舞者(bertand或annesophie-k)做相同的舞蹈動作編排,得到的分數都比較高。例如,在圖2中,專業的男性舞者bertand是與自己相比對,在不同的時間t1、t2內對不同的舞蹈動作c3進行捕捉,得到的分數都比較高。對我們的系統而言,在本例中bertand獲得較高的分數是至關重要的,因為乙個專業舞者在兩個不同的捕獲時間內幾乎能夠執行相同的舞蹈動作;(2)對於業餘舞者,所有三個分數的排名基本差不多;(3)系統排名並不嚴重偏離使用真實資料產生的排名;(4)三個相似的行為具有三個相似的瞬時分數(例如它們在相同的時間的情況下有幾乎相同的最小值或最大值,請參見圖2);(5)不完全一致的兩個舞蹈者,由於丟失了時間協調性得到的瞬時分數低。
一些實驗結果見表1,對於舞蹈動作c2、c3,系統給出的總分見表最後一列。在這些實驗中,bertand或annesophie-k均視為專業舞者。表中按老師給舞蹈表演著的最終成績排序,每列分別為「舞蹈編排」(ch)、「**匹配」(mt)和「身體平衡」(bb),分數在1-5之間,分數越高效能越好。從表中可以看出,實驗結果具有很強的相關性,實際排名與根據計算得到的分數很相似。值得注意的是低分數0.33和0.32是由於骨骼追蹤過程中骨架校準失敗和資料損壞造成。
表1:老師排名與系統評分
本課題受到歐盟委員會資助,合同編號fp7-247688。
參考文獻
[1]
[2]
[3]
[4] j. l. barron, d. j. fleet, and s. beauchemin. performanceof optical flow techniques.international journal of computervision, 12:43–77,1994.
[5] c. e. moxey, s. j. sangwine, and t. a. ell. hypercomplexcorrelation techniques for vector images.ieee trans.on signal processing, 51:1941–1953, 2003.
Kinect嘗鮮(2) 骨骼識別
其實骨骼識別更加簡單,通過微軟的sdk,我們僅僅要做的就是呼叫。微軟這麼做的好處就是開發者可以減少花費在底層 影象處理等方面的時間,專注於自己的應用邏輯,快速開發出有趣或實用的應用。cs 檔案中,首先要宣告乙個 skeleton 類,是乙個 skeleton 的陣列。skeleton是骨骼類,該類封...
Kinect骨骼資料與彩色影像和深度影像的對齊
很多 我都是直接拷貝之前文章中的 介面很簡單,在grid物件下面有兩個image物件,和乙個巢狀的grid物件。前面兩個image物件分別用來顯示彩色影像資料和深度影像資料,後面的grid物件是用來繪製骨骼的,需要注意的是grid物件的屬性要設定為transparent,這樣的話就可以將grid上繪...
Kinect骨骼資料與彩色影像和深度影像的對齊
很多 我都是直接拷貝之前文章中的 介面很簡單,在grid物件下面有兩個image物件,和乙個巢狀的grid物件。前面兩個image物件分別用來顯示彩色影像資料和深度影像資料,後面的grid物件是用來繪製骨骼的,需要注意的是grid物件的屬性要設定為transparent,這樣的話就可以將grid上繪...