国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于骨骼數(shù)據(jù)的三維人體行走姿態(tài)模擬

2017-12-21 18:18李錦童立靖英祥楊金秋

李錦++童立靖++英祥++楊金秋

摘要:人體運(yùn)動(dòng)的仿真模擬是虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)和混合現(xiàn)實(shí)等領(lǐng)域的重要研究?jī)?nèi)容。本文通過(guò)Kinect設(shè)備掃描得到人體運(yùn)動(dòng)骨骼數(shù)據(jù),根據(jù)骨骼矢量變化計(jì)算三維虛擬人體的骨骼的旋轉(zhuǎn)角度,利用骨骼皮膚綁定技術(shù)實(shí)現(xiàn)人體的動(dòng)態(tài)模型,并使用定時(shí)器控制三維人體模型的動(dòng)態(tài)刷新,從而完成真實(shí)人體行走姿態(tài)的模擬。實(shí)驗(yàn)表明通過(guò)Kinect采集得到的人體運(yùn)動(dòng)數(shù)據(jù)可以實(shí)時(shí)驅(qū)動(dòng)三維人體模型,完成人體行走姿態(tài)的模擬。

關(guān)鍵詞:三維動(dòng)態(tài)模型;動(dòng)作捕捉;人體姿態(tài)模擬;人體動(dòng)畫

中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2017)10-0058-04

1 引言

隨著三維掃描技術(shù)和計(jì)算機(jī)圖形學(xué)的發(fā)展以及計(jì)算機(jī)性能的提高,三維模型已經(jīng)成為繼聲音、圖像和視頻之后的第四種多媒體數(shù)據(jù)類型。對(duì)三維模型的使用與研究在娛樂(lè)、醫(yī)學(xué)、機(jī)械工程、計(jì)算機(jī)仿真和虛擬現(xiàn)實(shí)、工業(yè)應(yīng)用等領(lǐng)域得到了認(rèn)可,日益發(fā)達(dá)的互聯(lián)網(wǎng)技術(shù)為人們對(duì)三維模型的共享和處理提供了條件,這些都導(dǎo)致對(duì)三維模型應(yīng)用需求的增長(zhǎng)。人體運(yùn)動(dòng)姿態(tài)模擬是動(dòng)作捕捉技術(shù)的一個(gè)重要方向,用Kinect設(shè)備獲取數(shù)據(jù)應(yīng)用到人體運(yùn)動(dòng)姿態(tài)研究中效率高、操作簡(jiǎn)便,在各領(lǐng)域得到廣泛應(yīng)用。

針對(duì)現(xiàn)有的動(dòng)作捕獲技術(shù),許多的國(guó)內(nèi)外學(xué)者對(duì)人體的運(yùn)動(dòng)姿態(tài)模擬做了大量的研究。HUANG,TEJERA等人通過(guò)4D性能捕獲數(shù)據(jù)為人物的動(dòng)畫提出了一個(gè)新穎的混合表示方法,并結(jié)合了骨骼控制與表面運(yùn)動(dòng)圖[1],該方法支持生成滿足用戶指定約束的新表面序列關(guān)鍵幀或目標(biāo)骨骼運(yùn)動(dòng)。Gao,Lai等人提出一個(gè)新的旋轉(zhuǎn)不變量變形表示和一種新穎的重建算法來(lái)同時(shí)重建姿態(tài)和局部旋轉(zhuǎn)[2],該方法提供有約束的變形,并為網(wǎng)格變形和非剛性物體的變形提出一種新的數(shù)據(jù)驅(qū)動(dòng)方法。趙正旭等人提出一種通過(guò)采用貝塞爾曲線和數(shù)值數(shù)據(jù)編輯人體運(yùn)動(dòng)姿態(tài)的模擬方法[3],運(yùn)用 OpenGL 構(gòu)建虛擬人體模型,利用動(dòng)作捕捉技術(shù)設(shè)計(jì)人體運(yùn)動(dòng)姿態(tài)的模擬程序。陳忠等人提出一種基于骨骼模型的人物運(yùn)動(dòng)模型的算法,通過(guò)讀取BVH格式文件的動(dòng)畫模型,實(shí)現(xiàn)對(duì)人體動(dòng)畫的模擬[4],BVH格式的文件提供了關(guān)于人體關(guān)節(jié)的運(yùn)動(dòng)信息,這將大大減少動(dòng)畫的計(jì)算量。這些學(xué)者主要側(cè)重于采用特定的人體動(dòng)作數(shù)據(jù)格式完成關(guān)節(jié)的運(yùn)動(dòng)和人體的運(yùn)動(dòng)姿態(tài)模擬。

本文采用的是廣泛使用的OBJ文件格式,通過(guò)Kinect設(shè)備采集真實(shí)的人體運(yùn)動(dòng)骨骼數(shù)據(jù),以VC++和 OpenGL為工具,讀取動(dòng)作捕捉文件數(shù)據(jù)。通過(guò)與人體運(yùn)動(dòng)的骨骼數(shù)據(jù)綁定實(shí)現(xiàn)三維虛擬人體運(yùn)動(dòng)姿態(tài)的模擬。

2 人體運(yùn)動(dòng)骨骼數(shù)據(jù)的捕獲

三維人體運(yùn)動(dòng)數(shù)據(jù)的采集是人體運(yùn)動(dòng)姿態(tài)模擬過(guò)程中非常重要的一個(gè)環(huán)節(jié),骨骼數(shù)據(jù)的獲取是本課題的基礎(chǔ)工作。運(yùn)動(dòng)捕捉數(shù)據(jù)的質(zhì)量直接決定了后續(xù)三維動(dòng)作重建的效果,骨骼追蹤技術(shù)通過(guò)處理深度數(shù)據(jù)來(lái)建立人體各個(gè)關(guān)節(jié)的坐標(biāo),骨骼追蹤能夠確定人體的各個(gè)部分,如哪部分是手,頭部,以及身體,還能確定他們所在的位置。要想將Kinect用于三維動(dòng)作捕捉,重點(diǎn)關(guān)注的是如何能夠獲取人體的三維動(dòng)作信息。首先,Kinect利用采用TOF技術(shù)測(cè)量深度來(lái)獲取人體的深度信息,通過(guò)隨機(jī)決策森林等算法對(duì)人體的各個(gè)部分進(jìn)行不同的標(biāo)記,最后從各個(gè)不同的標(biāo)記中提取人體的骨架信息[5],即骨骼關(guān)節(jié)點(diǎn)表征的人體,從而可以保存人體的動(dòng)作數(shù)據(jù)。相對(duì)與Kinect一代的Light Coding技術(shù),第二代采集到的骨骼數(shù)據(jù)相對(duì)較為準(zhǔn)確。

在Kinect2.0中,是通過(guò)25個(gè)關(guān)節(jié)點(diǎn)來(lái)表示一個(gè)骨架的。當(dāng)Kinect的視野范圍開始捕捉到人體的時(shí)候,人體的25個(gè)關(guān)節(jié)點(diǎn)的位置就能被Kinect找到,位置通過(guò)(x,y,z)坐標(biāo)來(lái)表示。人體的各關(guān)節(jié)點(diǎn)位置通過(guò)(x,y,z)坐標(biāo)來(lái)表示,與深度圖像空間坐標(biāo)不同的是,這些關(guān)節(jié)點(diǎn)的坐標(biāo)單位是米。坐標(biāo)軸x,y,z是深度感應(yīng)器實(shí)體的空間x,y,z坐標(biāo)軸。這個(gè)坐標(biāo)系是右手螺旋的,Kinect感應(yīng)器處于原點(diǎn)上,z坐標(biāo)軸是與Kinect感應(yīng)的朝向一致的。y軸正半軸向上延伸,x軸正半軸(從Kinect感應(yīng)器的視角來(lái)看)向左延伸。NUI骨骼跟蹤分主動(dòng)和被動(dòng)兩種模式,提供最多兩副完整的骨骼跟蹤數(shù)據(jù)。主動(dòng)模式下需要調(diào)用相關(guān)幀讀取函數(shù)獲得用戶骨骼數(shù)據(jù),而被動(dòng)模式下還支持額外最多四人的骨骼跟蹤,但是在該模式下僅包含了用戶的位置信息,不包括詳細(xì)的骨骼數(shù)據(jù)。

本課題采用基于TOF技術(shù)的Kinect2.0,使用NUI骨骼跟蹤的主動(dòng)模式獲取人體的運(yùn)動(dòng)骨骼數(shù)據(jù),通過(guò)采集的得到的動(dòng)作數(shù)據(jù)來(lái)驅(qū)動(dòng)三維模型的運(yùn)動(dòng),以此來(lái)真實(shí)地模擬人體的運(yùn)動(dòng)姿態(tài)。

3 人體運(yùn)動(dòng)姿態(tài)的合成

人體模型的運(yùn)動(dòng)合成是由Kinect運(yùn)動(dòng)捕獲數(shù)據(jù)驅(qū)動(dòng)所得,本文使用的模型為三維網(wǎng)格模型?,F(xiàn)有的三維網(wǎng)格模型格式有多種,例如OFF格式、OBJ格式等等,本文釆用的是OBJ格式的三維網(wǎng)格模型。三維網(wǎng)格模型是由許多三角面片組成,三角面片由邊的信息構(gòu)成,邊是由頂點(diǎn)信息定義的。本文在獲取Kinect深度數(shù)據(jù)的基礎(chǔ)上,采用OpenCV進(jìn)行人體姿態(tài)獲取,通過(guò)更改OBJ格式中各頂點(diǎn)的位置信息驅(qū)動(dòng)三維人體模型運(yùn)動(dòng)。

3.1 關(guān)節(jié)點(diǎn)的坐標(biāo)提取

在Kinect中利用骨骼追蹤技術(shù)通過(guò)處理深度數(shù)據(jù)來(lái)建立人體各個(gè)關(guān)節(jié)的坐標(biāo),骨骼追蹤能夠確定人體的各個(gè)部位,以及各個(gè)部位所在的坐標(biāo)位置。在初始化并打開骨骼跟蹤后,可以從Skeleton Stream中獲取到骨骼數(shù)據(jù)。Skeleton Stream產(chǎn)生的每一幀數(shù)據(jù)skeleton Frame都是一個(gè)骨骼對(duì)象集合。包含了一個(gè)骨架數(shù)據(jù)結(jié)構(gòu)的數(shù)組,其中每一個(gè)元素代表著一個(gè)被骨架追蹤系統(tǒng)所識(shí)別的一個(gè)骨架信息。每一個(gè)骨架信息包含有描述骨骼位置以及骨骼關(guān)節(jié)的數(shù)據(jù)。每一個(gè)關(guān)節(jié)有一個(gè)唯一標(biāo)示符如頭(head)、肩(shoulder)、肘(dlbow)等信息和對(duì)應(yīng)的三維坐標(biāo)數(shù)據(jù)。

Kinect能夠追蹤到的骨骼數(shù)量是一個(gè)常量。在整個(gè)應(yīng)用程序中為數(shù)組分配內(nèi)存。循環(huán)遍歷skeleton Frame,每一次處理一個(gè)骨骼。通過(guò)繪圖函數(shù)將讀取到的骨骼關(guān)節(jié)點(diǎn)繪制出來(lái),如圖1所示。

3.2 肢體的變換矩陣

對(duì)于人體的三維點(diǎn)云數(shù)據(jù)中的某點(diǎn)繞關(guān)節(jié)點(diǎn)A旋轉(zhuǎn)到的過(guò)程為:先將關(guān)節(jié)點(diǎn)A平移到坐標(biāo)原點(diǎn)O,點(diǎn)平移到,點(diǎn)平移到;再計(jì)算點(diǎn)經(jīng)過(guò)角度旋轉(zhuǎn)到的旋轉(zhuǎn)矩陣,并根據(jù)該矩陣計(jì)算點(diǎn)旋轉(zhuǎn)后的位置;最后根據(jù)反向平移矩陣將各點(diǎn)平移回去。平移矩陣T如式(1)所示:

(1)

其中,平移向量m。

三維人體模型點(diǎn)云數(shù)據(jù)中的點(diǎn)P繞其綁定的關(guān)節(jié)點(diǎn)A旋轉(zhuǎn)角度到Q位置的幾何關(guān)系如圖2所示,三維人體模型中的各點(diǎn)繞關(guān)節(jié)點(diǎn)的旋轉(zhuǎn)角度依式(2)計(jì)算,法矢量u依式(3)計(jì)算。

(2)

u= (3)

根據(jù)旋轉(zhuǎn)關(guān)節(jié)點(diǎn)A平移到原點(diǎn)O得到的平移矩陣T重新計(jì)算三維人體模型點(diǎn)云數(shù)據(jù)中各點(diǎn)的位置,然后乘以旋轉(zhuǎn)矩陣來(lái)完成角度的旋轉(zhuǎn)。旋轉(zhuǎn)矩陣依式(4)計(jì)算:

(4)

其中,,其中()是u的單位向量的分量形式。

完成模型中各點(diǎn)的旋轉(zhuǎn)后再將其反向平移回原位置,其反向平移矩陣如式(5)所示。

(5)

三維人體模型中各點(diǎn)的總變換矩陣依式(6)計(jì)算。

(6)

4 人體運(yùn)動(dòng)動(dòng)畫的實(shí)現(xiàn)

人體的運(yùn)動(dòng)是由關(guān)節(jié)點(diǎn)的變化實(shí)現(xiàn)的,關(guān)節(jié)點(diǎn)之間是以一種“父子”關(guān)系表示的。人體模型的動(dòng)畫根據(jù)“父子”關(guān)節(jié)點(diǎn)間的關(guān)系實(shí)現(xiàn)。關(guān)節(jié)點(diǎn)通過(guò)骨架的鏈接結(jié)構(gòu)有層次地組織在一起,從根節(jié)點(diǎn)到末梢節(jié)點(diǎn),關(guān)節(jié)點(diǎn)的旋轉(zhuǎn)變化是一層聯(lián)系著一層變化的。Kinect采集到的數(shù)據(jù)只有關(guān)節(jié)點(diǎn)的位置信息,沒(méi)有其對(duì)應(yīng)的旋轉(zhuǎn)信息。本文通過(guò)一定的算法將各個(gè)關(guān)節(jié)點(diǎn)獨(dú)立的位置信息轉(zhuǎn)換為具有一定骨架層次結(jié)構(gòu)的并包含有骨架旋轉(zhuǎn)的運(yùn)動(dòng)數(shù)據(jù)信息。具體算法實(shí)現(xiàn)如下:

(1)通過(guò)Kinect讀取人體運(yùn)動(dòng)關(guān)鍵幀的關(guān)節(jié)點(diǎn)位置信息,計(jì)算每一個(gè)關(guān)節(jié)點(diǎn)的變換矩陣;

(2)利用變換矩陣對(duì)當(dāng)前關(guān)節(jié)點(diǎn)進(jìn)行旋轉(zhuǎn)變換;

(3)如果該骨骼節(jié)點(diǎn)有子節(jié)點(diǎn),利用父節(jié)點(diǎn)的旋轉(zhuǎn)平移算出子節(jié)點(diǎn)的平移向量,并平移子骨骼節(jié)點(diǎn);

(4)利用人體運(yùn)動(dòng)的下一關(guān)鍵幀讀取關(guān)節(jié)點(diǎn)位置信息,計(jì)算變換矩陣。重復(fù)第(2)步。

三維虛擬人體模型的動(dòng)畫采取定時(shí)器的方法,多次調(diào)用窗口的繪制函數(shù)實(shí)現(xiàn)人體的動(dòng)畫顯示,計(jì)算機(jī)動(dòng)畫的控制要素是時(shí)間。Windows為程序開發(fā)提供SetTimer()函數(shù)來(lái)為應(yīng)用程序分配一個(gè)系統(tǒng)定時(shí)器,通過(guò)該函數(shù)可以設(shè)置時(shí)間間隔,Windows將按設(shè)定的周期向程序發(fā)送消息。在消息響應(yīng)函數(shù)OnTimer()中編寫程序?qū)崿F(xiàn)動(dòng)畫控制。

5 實(shí)驗(yàn)結(jié)果

基于前文的算法,本文實(shí)現(xiàn)了一個(gè)原型系統(tǒng):基于Kinect人體動(dòng)畫合成系統(tǒng)。該系統(tǒng)是在Window 7平臺(tái)下幵發(fā)的,系統(tǒng)中的主要算法是用C++語(yǔ)言實(shí)現(xiàn)的,三維網(wǎng)格模型由OpenGL繪制,人體的運(yùn)動(dòng)數(shù)據(jù)通過(guò)Kinect設(shè)備獲取。本文采用三維人體模型模擬真實(shí)的人體行走姿態(tài)。通過(guò)Kinect采集到的人體行走關(guān)節(jié)圖如圖3所示。

基于圖3的行走序列的骨骼數(shù)據(jù)所完成的三維虛擬人體模型的行走姿態(tài)模擬序列如圖4所示。

6 結(jié)語(yǔ)

近幾年來(lái),動(dòng)作捕捉技術(shù)漸漸成為了人體運(yùn)動(dòng)姿態(tài)模擬研究中的一項(xiàng)關(guān)鍵技術(shù),通過(guò)模擬人體運(yùn)動(dòng)姿態(tài)以實(shí)現(xiàn)人體運(yùn)動(dòng)動(dòng)作的識(shí)別以及自由編輯控制變得非常關(guān)鍵。本文通過(guò)Kinect提取人體骨骼關(guān)節(jié)點(diǎn)數(shù)據(jù),根據(jù)骨骼矢量變化計(jì)算三維虛擬人體的骨骼的旋轉(zhuǎn)角度,利用骨骼皮膚綁定技術(shù)實(shí)現(xiàn)人體動(dòng)畫,并利用定時(shí)器控制三維人體模型的動(dòng)畫,從而完成真實(shí)人體行走姿態(tài)的模擬。實(shí)驗(yàn)表明,本原型系統(tǒng)可以有效地實(shí)現(xiàn)人體的動(dòng)畫模擬。該技術(shù)在舞蹈與表演的教學(xué)訓(xùn)練、體育競(jìng)技的運(yùn)動(dòng)分析、個(gè)性化人體角色的影視特效生成等領(lǐng)域具有較好的應(yīng)用前景。

在本課題的研究過(guò)程中發(fā)現(xiàn),在人體姿態(tài)模擬的過(guò)程中有些人體的運(yùn)動(dòng)部位發(fā)生了形變失真。針對(duì)人體運(yùn)動(dòng)中的形變失真問(wèn)題,提出相應(yīng)的形變處理算法是下一步需要研究的具體內(nèi)容。

參考文獻(xiàn)

[1]Huang P,Tejera M,Collomosse J,et al.Hybrid Skeletal-Surface Motion Graphs for Character Animation from 4D Performance Capture[J].Acm Transactions on Graphics,2015,34(2):1-14.

[2]Gao L, Lai Y K, Liang D, et al. Efficient and Flexible Deformation Representation for Data-Driven Surface Modeling[J]. Acm Transactions on Graphics,2016,35(5):158.

[3]趙正旭,戴歡,趙文彬,等.基于慣性動(dòng)作捕捉的人體運(yùn)動(dòng)姿態(tài)模擬[J].計(jì)算機(jī)工程, 2012,38(5):5-8.

[4]陳忠,趙學(xué)輝,孫秋瑞.基于OpenGL的三維人體運(yùn)動(dòng)模型實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2008,28(S2):310-312.

[5]L. A. Schwarz, A. Mkhitaryan, D. Mateus, et al., Human skeleton tracking from depth data using geodesic distances and optical flow. Image and VisionComputing, 2012:217-226.