趙江陽,張德富
(1.閩南科技學院,福建 泉州 362332;2.廈門大學,福建 廈門 361005)
人體時空域運動信息捕捉是根據人體完成一個動作的各分幀下動作時空位置來實現動作捕捉[1-3]。對人體運動信息捕捉仿真則是對規定動作進行仿真,在軍事領域可以輔助模擬單兵訓練,同時在醫療領域也可應用在醫學教學中,在運動領域則可以三維模擬運動員的動作,該技術具有廣泛的應用面。
在早期的研究中,國外于20世紀70年代建立了第一個計算機模擬人體模型,在后續研究中也出現了數字化虛擬人技術,同時實現了關節旋。在相應傳感器技術的發展下,該領域專家開始仿真研究人體動作的捕捉并建立虛擬模擬數字人體[4-6]。而我國近幾年來也將數字化虛擬人技術作為重要的研究課題,同時提出了運用Adaboost算法的人體運動信息捕捉的仿真研究以及基于時空權重姿態運動特征的人體骨架行為識別研究,但應用結果顯示該方法對于存在時空域要求的運動信息仿真仍存在一定的局限性,需要進一步的深入研究。
虛擬現實技術近些年較為廣泛地應用在人機交互領域,而其中的動作識別和模擬均具備較高的實時性,因此本研究將虛擬現實技術應用于運動信息動作仿真技術中[7-9]。
通過模擬現實技術模擬人體時空域下的運動過程,同時利用人體運動傳感器獲得的參數捕捉信息[10-11]。但考慮到傳感器數據存在誤差,且存在信號噪聲,因此需處理初始信息數據。處理過程主要針對于在實際運動中對運動信息影響的相關參數,針對傳感器獲得的水平方向旋轉記錄g以及地磁通量Φ的大小值,歸一化處理獲得到的數據
(1)
式中,gnorm為經過歸一化后傳感器獲得的重力加速度。gin代表傳感器的輸入數據,gmax代表傳感器獲得的重力加速度最大值,gmin代表傳感器獲得的重力加速度最小值。即可完成數據的歸一化,獲得可靠性更高的數據。
在本文建立人體結構模型過程中,由于人體骨骼中存在200多個自由度,計算難度過大。因此本研究選取層次骨架結構,依據骨骼的運動機構特性,將人體骨骼分為肢體段以及關節進行層次分割,對人體骨骼點的劃分如圖1所示。

圖1 人體骨骼節點示意圖
而人體骨骼點的位置坐標中,添加圍繞著3個軸的旋轉量,為避免出現萬向鎖現象,骨骼的旋轉信息采用四元數表示。同時定義骨骼點左邊西,以髖關節為骨骼左邊西的根點和原點,模型中默認髖關節不具備旋轉角度,并將其它的骨骼點作為下層節點,向下延展,對其余骨骼點進行分層,分層圖如圖2所示。

圖2 模型骨骼點分層圖
在圖2中的骨骼點分層圖中,將上層骨骼作為父節點,下層作為子節點。利用四維向量(x,y,z,w)描述骨骼點空間,選擇坐標點(x,y)作為骨骼點在骨骼坐標上的位置,如果將骨骼點的圖像位置設定為(xm,ym),其中髖部位置的圖像位置設定為(xn,yn)即可得出人體骨骼點的深度值為
x=xm-xn,y=ym-yn,z
(2)
而在左邊點中w則作為骨骼點中與父節點所對應向量和x軸方向下的夾角,而骨骼中的父節點上對應的骨骼坐標為(x1,y1,z1,w1),其中w可由下面公式求得
(3)
根據式(1)以及式(2)即可獲得人體結構模型的坐標。將設計的人體結構模型作為本文仿真的動作基礎。
為獲取人體運動姿態特征參數,利用數學方法描述人體運動規律,并提取人體運動姿態參數,在人體運動姿態的分析中,首先在提取上述虛擬現實中的人體運動動作以及四肢關節點數據,并將該數據以全局形式進行保存,提取出虛擬現實中人體在進行相應運動時的坐標信息以及旋轉角度數據,并利用Matlab軟件以離散數據形式繪制人體運動節點的角速度、運動軌跡、線速度等軌跡。求導多項式的連續動作軌跡獲取多項式系數,得出對應的人體運動姿態函數,并以.bvh文件的形式對運動的關節旋轉角以及偏移量進行描述,如果要提高相關運動姿態數據的準確度可以在虛擬現實基礎上添加相關設備來進行運動捕捉。同時在考慮到人體的時空學參數中,需要對人體在運動時的時間以及距離參數均可作為監測運動中人體姿態變化的改變。通過將人體運動時將具體動作流程進行分割,并與時間直接的關系進行并列,得出人體時空域下的不同運動姿態,該參數可以作為人體運動捕捉時的時間運動量參考。但該運動特征姿態運動信息的支持,具有較高的誤差率,因此將其中的關節運動利用運動學理論進行進一步的分析以及信息獲取[12]。在本文中選擇采用正向運動信息選取技術來進行。
考慮到獲取人體的時空域,來使虛擬現實中仿真的圖像中獲取到實時運動信息,實現實時動作仿真,需要將獲取捕捉到的運動信息,通過正向運動學理論,將關節動作進行模擬。在虛擬現實人物動作中,將每個關節鏈設置至少3個節點,同時為關節鏈節點建立起本身的局部坐標系,如圖3所示。

圖3 關節鏈節點示意圖
如圖3所示,將圖3中將Mi節點的世界坐標系中的坐標設為(xMi,yMi),將Mj節點的坐標位置設為(xMj,yMj),則得出Mi節點與Mj節點中的位置信息如下公式
(4)
而對于多節點鏈路,實際上Mi到Mj的局部坐標系之間的轉換矩陣可以利用相鄰父節點之間的相互組合,即
∏i→j=Hi→i+1·Hi+1→i+2…Hi+n→j(i+n≤j-1)
(5)
在其中將Mi,Mi+1…Mj作為一個完整的關關節鏈來表示,∏i→j代表從節點Mi到節點Mj之間的組合轉換矩陣。將公式展開發現可將節點的坐標位置用連續函數表示,如下所示
f=f(α1,α2…αn)
(6)
式(6)連續函數中n為節點之間旋轉角的個數。通過對運動參數正向運動信息的獲取,來確定時空域意義下的關節的旋轉動作。
本文在進行肢體運動信息捕捉后,使用虛擬現實技術來將上述中建立的虛擬人體模型進行帶入,并根據運動動作信息進行仿真。對于人體關節的旋轉動作的模擬,采用角坐標系法來進行表現,沿用上文中建立的人體骨骼坐標位置,添加一組角度向量(γ,β,α),角度向量中γ代表繞x軸的旋轉角度,即動作滾動角。β代表繞y軸旋轉的角度,即動作俯仰角。α則代表繞z軸的旋轉角度,即運動偏行角。運用角坐標系來描述運動姿態下繞軸的次序,而固定角旋轉的過程中模擬關節中的所繞的軸方位不變,歐拉角旋轉時圍繞的軸方向也取決于上次旋轉結果,如圖4所示。

圖4 xyz次序下的固定角旋轉
為了提高計算機的動作模擬程度,在角坐標系構建的同時,建立旋轉矩陣,當乘以單一向量時,會造成向量方向的改變,且不改變向量大小的矩陣。將繞x軸進行旋轉的γ角度利用矩陣表達即為
(7)
而圍繞y軸旋轉的β角度用矩陣表達則為
(8)
圍繞z軸旋轉α角用矩陣表達則為
(9)
虛擬現實中利用固定角旋轉模擬關節運動模式,并采用旋轉矩陣來進行表達。通過對角動作的表達,獲取運動角度,而其余動作根據傳感器獲取的動作完成仿真。
為了驗證本文設計的運動信息捕捉仿真方法的可行性,設計仿真實驗,選取志愿者攜帶運動捕捉傳感器,做出相應的動作,利用本文方法對人體運動動作進行信息捕捉,并通過虛擬現實技術對相應的動作進行實時仿真。
實驗中使用PC機進行仿真實驗,CPU采用Intel Core i7-3770 3.4GHzCPU,PC機內存為HIKVISION 8GB內存。顯卡型號為:GTX1050TI,顯存容量為4GB,硬盤型號為WD20EZAZ,硬盤容量為2TB。另外實驗中額外添加了MS Kinect傳感器。實驗中軟件環境為:Windows7環境,使用軟件為ODE 0.12、KinectSDK-v1.7以及3DMAX。
實驗人員穿戴傳感器,并從中獲取到單一動作的模擬結果獲取到相應動作的運動信息,如圖5所示。

圖5 動作關節信息獲取
利用傳感器獲得各動作下關節的位置以及相關數據作為運動信息仿真的基礎參數。
根據上述中傳感器獲得的關節位置,首先使用本文中的傳感器參數處理方法歸一化處理參數,利用Kinect軟件計算和轉換獲得關節位置參數,獲取到的參數用于進行運動仿真,獲得的手臂正、逆運動的部分數據參數如表1所示。

表1 手臂正、逆運動學計算
將獲取的信息帶入構建的人體模型中,同時使用虛擬現實技術實現動作的仿真。而在本文實驗中定義了多動作的運動,分別為下蹲、跑步、行走、揮手、舞蹈動作。對不同方法的虛擬現實中人體動作完成度、時延、識別率參數進行統計,獲得結果如下。
表2~表4顯示,隨著動作難度的增加,時延增加,同時完成度以及準確率存在下降的情況,但本實驗中,所提方法的時延均為低于300ms。同時在動作的完成度以及動作仿真室關鍵位置的準確率均高于90%,證明本文設計的運動信息捕捉仿真技術可以實現較高的實時性,同時具有較高可行性。

表2 所提方法虛擬現實動作仿真情況

表3 文獻[7]方法虛擬現實動作仿真情況

表4 文獻[8]方法虛擬現實動作仿真情況
本文通過將虛擬現實技術對運動信息捕捉上進行應用,從而實現人體時空域運動信息捕捉仿真。同時進行了相關實驗,證明本文設計的運動信息仿真技術存在較高的可行性。但在本研究中,虛擬人物可支持的交互動作仍然較為輔助,同時由于對人體骨骼信息是通過建立人體結構模型來構成,因此對于骨骼特征存在特殊性的使用者尚不支持,后續研究匯總需要加入人體骨骼特征預估算法來實現需求。