本發(fā)明涉及機(jī)器學(xué)習(xí)技術(shù)領(lǐng)域,特別是涉及一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法及其裝置。
背景技術(shù):
機(jī)器學(xué)習(xí)是人工智能的一個(gè)重要分支,機(jī)器學(xué)習(xí)就是讓機(jī)器通過(guò)已知的樣本來(lái)學(xué)習(xí)樣本間的內(nèi)在規(guī)律。
在機(jī)器學(xué)習(xí)的應(yīng)用中,利用人體姿態(tài)數(shù)據(jù)樣本來(lái)進(jìn)行人體行為識(shí)別、人體骨架線識(shí)別等操作的應(yīng)用越來(lái)越多。由于常用的機(jī)器學(xué)習(xí)至少需要幾十萬(wàn)的樣本集,如此多的樣本,若僅通過(guò)人工構(gòu)造的話,耗時(shí)耗力,且效率低下。
因此,如何提供一種提高樣本構(gòu)造效率的構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法及其裝置是本領(lǐng)域技術(shù)人員目前需要解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法及其裝置,能夠通過(guò)建立的骨骼模型生成大量的人體姿態(tài)數(shù)據(jù)樣本,節(jié)省人力,構(gòu)造效率高。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法,包括:
步驟s101:依據(jù)預(yù)設(shè)參數(shù)構(gòu)建骨骼模型;
步驟s102:構(gòu)建所述骨骼模型內(nèi)關(guān)節(jié)間的若干個(gè)運(yùn)動(dòng)模型,每個(gè)所述運(yùn)動(dòng)模型對(duì)應(yīng)一種預(yù)設(shè)的人體動(dòng)作,且所述運(yùn)動(dòng)模型包括其對(duì)應(yīng)的人體動(dòng)作下各個(gè)關(guān)節(jié)的相對(duì)旋轉(zhuǎn)關(guān)系;
步驟s103:依據(jù)所述運(yùn)動(dòng)模型渲染骨骼動(dòng)畫,得到各種所述預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像;調(diào)整觀察視野,重復(fù)本步驟的操作,得到所述骨骼模型在各個(gè)觀察視野下的動(dòng)畫圖像并保存;
步驟s104:調(diào)整所述骨骼模型的參數(shù),返回步驟s102,直至得到全部預(yù)設(shè)參數(shù)下的骨骼模型對(duì)應(yīng)的動(dòng)畫圖像后進(jìn)入步驟s105;
步驟s105:依據(jù)獲得的動(dòng)畫圖像提取真值數(shù)據(jù),所述真值數(shù)據(jù)及所述動(dòng)畫圖像即為人體姿態(tài)數(shù)據(jù)樣本。
優(yōu)選地,所述步驟s101的過(guò)程具體為:
構(gòu)建人體模型;
設(shè)置所述人體模型中的人體骨骼參數(shù);
建立所述人體模型與骨骼間的蒙皮關(guān)系,得到所述骨骼模型。
優(yōu)選地,步驟s102的過(guò)程具體為:
確定所述骨骼模型內(nèi)各個(gè)關(guān)節(jié)的聯(lián)動(dòng)關(guān)系;
確定各個(gè)所述關(guān)節(jié)的自由度;
依據(jù)所述自由度和所述聯(lián)動(dòng)關(guān)系,確定每種所述預(yù)設(shè)的人體動(dòng)作對(duì)應(yīng)的各個(gè)所述關(guān)節(jié)的旋轉(zhuǎn)矩陣t;
將臀部關(guān)節(jié)作為根關(guān)節(jié),確定各個(gè)所述關(guān)節(jié)之間的父子關(guān)系;
依據(jù)所述旋轉(zhuǎn)矩陣以及所述父子關(guān)系計(jì)算各種所述預(yù)設(shè)的人體動(dòng)作前后各個(gè)所述關(guān)節(jié)的絕對(duì)坐標(biāo)。
優(yōu)選地,步驟s103中,所述依據(jù)所述運(yùn)動(dòng)模型渲染骨骼動(dòng)畫,得到各種所述預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像的過(guò)程具體為:
依據(jù)所述預(yù)設(shè)的人體動(dòng)作前后各個(gè)所述關(guān)節(jié)的絕對(duì)坐標(biāo),確定所述預(yù)設(shè)的人體動(dòng)作過(guò)程中各個(gè)所述關(guān)節(jié)的變化角度范圍;
依據(jù)所述變化角度范圍,將預(yù)設(shè)角度的變化作為一幀,確定每個(gè)所述關(guān)節(jié)在所述預(yù)設(shè)的人體動(dòng)作過(guò)程中的幀數(shù);
依據(jù)各個(gè)所述關(guān)節(jié)的父子關(guān)系,在每個(gè)父關(guān)節(jié)更新一幀后,遍歷所述父關(guān)節(jié)對(duì)應(yīng)的子關(guān)節(jié)的全部幀圖像;
將遍歷后得到的全部圖像進(jìn)行匯總,得到所述預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像;重復(fù)上述操作,得到各種所述預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像。
優(yōu)選地,所述觀察視野包括所述初始人體姿態(tài)模型的前方視野、后方視野、左側(cè)視野、右側(cè)視野、上方視野和下方視野。
為解決上述技術(shù)問(wèn)題,本發(fā)明還提供了一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的裝置,包括:
骨骼構(gòu)建模塊,用于預(yù)設(shè)參數(shù)構(gòu)建骨骼模型;
運(yùn)動(dòng)模型構(gòu)建模塊,用于構(gòu)建所述骨骼模型內(nèi)關(guān)節(jié)間的若干個(gè)運(yùn)動(dòng)模型,每個(gè)所述運(yùn)動(dòng)模型對(duì)應(yīng)一種預(yù)設(shè)的人體動(dòng)作,且所述運(yùn)動(dòng)模型包括其對(duì)應(yīng)的人體動(dòng)作下各個(gè)關(guān)節(jié)的相對(duì)旋轉(zhuǎn)關(guān)系;
動(dòng)畫生成模塊,用于依據(jù)所述運(yùn)動(dòng)模型渲染骨骼動(dòng)畫,得到各種所述預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像;調(diào)整觀察視野,重復(fù)上述渲染操作,得到所述骨骼模型在各個(gè)觀察視野下的動(dòng)畫圖像并保存,觸發(fā)骨骼參數(shù)調(diào)整模塊;
所述骨骼參數(shù)調(diào)整模塊,用于調(diào)整所述骨骼模型的參數(shù),觸發(fā)所述骨骼構(gòu)建模塊,直至得到全部預(yù)設(shè)參數(shù)下的骨骼模型對(duì)應(yīng)的動(dòng)畫圖像后觸發(fā)真值提取模塊;
所述真值提取模塊,用于依據(jù)獲得的動(dòng)畫圖像提取真值數(shù)據(jù),所述真值數(shù)據(jù)及所述動(dòng)畫圖像即為人體姿態(tài)數(shù)據(jù)樣本。
優(yōu)選地,所述骨骼構(gòu)建模塊具體包括:
初始構(gòu)建單元,用于構(gòu)建人體模型;
參數(shù)調(diào)整單元,用于設(shè)置所述人體模型中的人體骨骼參數(shù);
蒙皮建立單元,用于建立所述人體模型與骨骼間的蒙皮關(guān)系,得到所述骨骼模型。
優(yōu)選地,所述運(yùn)動(dòng)模型構(gòu)建模塊具體包括:
關(guān)節(jié)鏈確定單元,用于確定所述骨骼模型內(nèi)各個(gè)關(guān)節(jié)的聯(lián)動(dòng)關(guān)系;
自由度確定單元,用于確定各個(gè)所述關(guān)節(jié)的自由度;
旋轉(zhuǎn)矩陣確定單元,用于依據(jù)所述自由度和所述聯(lián)動(dòng)關(guān)系,確定每種所述預(yù)設(shè)的人體動(dòng)作對(duì)應(yīng)的各個(gè)所述關(guān)節(jié)的旋轉(zhuǎn)矩陣t;
關(guān)節(jié)結(jié)構(gòu)確定單元,用于將臀部關(guān)節(jié)作為根關(guān)節(jié),確定各個(gè)所述關(guān)節(jié)之間的父子關(guān)系;
絕對(duì)坐標(biāo)計(jì)算單元,用于依據(jù)所述旋轉(zhuǎn)矩陣以及所述父子關(guān)系計(jì)算各種所述預(yù)設(shè)的人體動(dòng)作前后各個(gè)所述關(guān)節(jié)的絕對(duì)坐標(biāo)。
優(yōu)選地,所述動(dòng)畫生成模塊具體包括:
變化范圍確定單元,用于依據(jù)所述預(yù)設(shè)的人體動(dòng)作前后各個(gè)所述關(guān)節(jié)的絕對(duì)坐標(biāo),確定所述預(yù)設(shè)的人體動(dòng)作過(guò)程中各個(gè)所述關(guān)節(jié)的變化角度范圍;
幀率分配單元,用于依據(jù)所述變化角度范圍,將預(yù)設(shè)角度的變化作為一幀,確定每個(gè)所述關(guān)節(jié)在所述預(yù)設(shè)的人體動(dòng)作過(guò)程中的幀數(shù);
遍歷單元,用于依據(jù)各個(gè)所述關(guān)節(jié)的父子關(guān)系,在每個(gè)父關(guān)節(jié)更新一幀后,遍歷所述父關(guān)節(jié)對(duì)應(yīng)的子關(guān)節(jié)的全部幀圖像;將遍歷后得到的全部圖像進(jìn)行匯總,得到所述預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像。
本發(fā)明提供了一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法及其裝置,建立骨骼模型以及骨骼模型中關(guān)節(jié)間的運(yùn)動(dòng)模型后,依據(jù)人體動(dòng)作下各個(gè)關(guān)節(jié)的相對(duì)旋轉(zhuǎn)關(guān)系,渲染得到在各種人體動(dòng)作下的動(dòng)畫圖像,然后調(diào)整觀察視野以及骨骼模型的參數(shù)重復(fù)上述操作,從而得到不同人體動(dòng)作下、不同觀察視野以及不同體型的骨骼模型的動(dòng)畫圖像,之后將該動(dòng)畫圖像以及從該動(dòng)畫圖像內(nèi)提取的真值數(shù)據(jù)作為人體姿態(tài)數(shù)據(jù)樣本??梢?,本發(fā)明不需要人工構(gòu)造,且能夠一次建立大量的數(shù)據(jù)樣本,節(jié)省人力,構(gòu)造效率高。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)現(xiàn)有技術(shù)和實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法的過(guò)程的流程圖;
圖2為本發(fā)明提供的一種具體的骨骼模型示意圖;
圖3為本發(fā)明提供的一種人體上肢關(guān)節(jié)自由度分析中坐標(biāo)軸的設(shè)置示意圖;
圖4為本發(fā)明提供的一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明的核心是提供一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法及其裝置,能夠通過(guò)建立的骨骼模型生成大量的人體姿態(tài)數(shù)據(jù)樣本,節(jié)省人力,構(gòu)造效率高。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明提供了一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法,參見圖1所示,圖1為本發(fā)明提供的一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法的過(guò)程的流程圖;該方法包括:
步驟s101:依據(jù)預(yù)設(shè)參數(shù)構(gòu)建骨骼模型;
可以理解的是,這里的骨骼模型指的是由相互連接的骨骼組成的骨架結(jié)構(gòu),包括人體骨骼與人體蒙皮以及蒙皮關(guān)系。這里可以通過(guò)3dmax或makehuman等軟件工具生成人體模型。
具體的,步驟s101的過(guò)程具體為:
構(gòu)建人體模型;
設(shè)置人體模型中的人體骨骼參數(shù);
建立人體模型與骨骼間的蒙皮關(guān)系,得到骨骼模型。
另外,由于骨骼越接近于人體骨骼,當(dāng)骨骼運(yùn)動(dòng)時(shí),蒙皮會(huì)越真實(shí);但與此同時(shí)也有一些弊端,骨骼的數(shù)據(jù)越多,設(shè)計(jì)骨骼運(yùn)動(dòng)時(shí),蒙皮產(chǎn)生的畸變?cè)絿?yán)重。因此建立骨骼模型時(shí),盡量只保留大骨;當(dāng)建立人體的局部細(xì)節(jié)時(shí),如建立手勢(shì)的模型時(shí),可以多增加一些手指的關(guān)節(jié)。參見圖2所示,圖2為本發(fā)明提供的一種具體的骨骼模型示意圖。
步驟s102:構(gòu)建骨骼模型內(nèi)關(guān)節(jié)間的若干個(gè)運(yùn)動(dòng)模型,每個(gè)運(yùn)動(dòng)模型對(duì)應(yīng)一種預(yù)設(shè)的人體動(dòng)作,且運(yùn)動(dòng)模型包括其對(duì)應(yīng)的人體動(dòng)作下各個(gè)關(guān)節(jié)的相對(duì)旋轉(zhuǎn)關(guān)系;
步驟s103:依據(jù)運(yùn)動(dòng)模型渲染骨骼動(dòng)畫,得到各種預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像;調(diào)整觀察視野,重復(fù)本步驟的操作,得到骨骼模型在各個(gè)觀察視野下的動(dòng)畫圖像并保存;
步驟s104:調(diào)整骨骼模型的參數(shù),返回步驟s102,直至得到全部預(yù)設(shè)參數(shù)下的骨骼模型對(duì)應(yīng)的動(dòng)畫圖像后進(jìn)入步驟s105;
由于實(shí)際情況中,人的體型千差萬(wàn)別,因此需要設(shè)計(jì)不同的人體模型,最好包括:男、女、老、少、青年等各種組合下的人體模型。該目的可通過(guò)調(diào)整骨骼模型的參數(shù)實(shí)現(xiàn)。
步驟s105:依據(jù)獲得的動(dòng)畫圖像提取真值groundtrue數(shù)據(jù),真值數(shù)據(jù)及動(dòng)畫圖像即為人體姿態(tài)數(shù)據(jù)樣本。
其中,groundtrue數(shù)據(jù)的提取具體根據(jù)不同的識(shí)別應(yīng)用需要進(jìn)行,例如:人體骨架線提取中,可獲取每幅圖像的人體骨架數(shù)據(jù);在人體行為識(shí)別中,可獲取每幅圖像的行為標(biāo)簽;在人體姿態(tài)識(shí)別中,可獲取每幅圖像的姿態(tài)數(shù)據(jù)。
具體的,步驟s102的過(guò)程具體為:
步驟s201:確定骨骼模型內(nèi)各個(gè)關(guān)節(jié)的聯(lián)動(dòng)關(guān)系;
步驟s202:確定各個(gè)關(guān)節(jié)的自由度;
步驟s203:依據(jù)自由度和聯(lián)動(dòng)關(guān)系,確定每種預(yù)設(shè)的人體動(dòng)作對(duì)應(yīng)的各個(gè)關(guān)節(jié)的旋轉(zhuǎn)矩陣t;
步驟s204:將臀部關(guān)節(jié)作為根關(guān)節(jié),確定各個(gè)關(guān)節(jié)之間的父子關(guān)系;
步驟s205:依據(jù)旋轉(zhuǎn)矩陣以及父子關(guān)系計(jì)算各種預(yù)設(shè)的人體動(dòng)作前后各個(gè)關(guān)節(jié)的絕對(duì)坐標(biāo)。
其中,這里的旋轉(zhuǎn)矩陣即指的是步驟s102中提到的相對(duì)旋轉(zhuǎn)關(guān)系。
可以理解的是,運(yùn)動(dòng)學(xué)是一種較好的控制技術(shù),通過(guò)把運(yùn)動(dòng)骨骼作為剛體,改變不同部分的狀態(tài),就可以對(duì)運(yùn)動(dòng)加以控制。在動(dòng)畫控制技術(shù)中,正向運(yùn)動(dòng)學(xué)和反向運(yùn)動(dòng)學(xué)運(yùn)用相當(dāng)廣泛,是一種控制骨骼運(yùn)動(dòng)的有效方法。其中,本發(fā)明步驟s102中優(yōu)選采用正向運(yùn)動(dòng)學(xué),正向運(yùn)動(dòng)學(xué)是通過(guò)設(shè)置不同骨骼的旋轉(zhuǎn)角,得到各個(gè)肢體的位置。其核心是:父關(guān)節(jié)帶動(dòng)子關(guān)節(jié)運(yùn)動(dòng),即父關(guān)節(jié)旋轉(zhuǎn)后,其子關(guān)節(jié)一定會(huì)旋轉(zhuǎn)和父關(guān)節(jié)相同的角度。
人體骨骼運(yùn)動(dòng)時(shí),只有相連的骨骼才會(huì)相互影響。步驟s201中,根據(jù)人體的常見的運(yùn)行,可以將人體骨骼模型分為6個(gè)部分:頭部運(yùn)動(dòng)+四肢運(yùn)動(dòng)+腰部運(yùn)動(dòng),建立關(guān)節(jié)之間的聯(lián)動(dòng)關(guān)系,即關(guān)節(jié)鏈如下:
頭部運(yùn)動(dòng):head(頭部)->neck(脖子)->spine(脊椎上部分);
腰部運(yùn)動(dòng):spine1(脊椎下部分)->lowerback(肚子)->hips(臀部);
左上肢運(yùn)動(dòng):left_hand(左手)->left_forearm(左前臂)->left_arm(左上臂)->left_shoulder(左肩膀);
右上肢運(yùn)動(dòng):right_hand(右手)->right_forearm(右前臂)->right_arm(右上臂)->right_shoulder(右肩膀);
左下肢運(yùn)動(dòng):left_foot(左腳)->left_leg(左小腿)->left_upleg(左上腿)->left_hips(左臀);
右下肢運(yùn)動(dòng):right_foot(右腳)->right_leg(右小腿)->right_upleg(右上腿)->right_hips(右臀)。
當(dāng)然,關(guān)節(jié)之間的聯(lián)動(dòng)關(guān)系是基于骨骼模型的具體結(jié)構(gòu)以及關(guān)節(jié)間的父子關(guān)系建立的,以上僅為一種具體的實(shí)現(xiàn)方式,本發(fā)明并不限定關(guān)節(jié)間的具體聯(lián)動(dòng)關(guān)系的內(nèi)容。
步驟s202中,為了很好的表達(dá)關(guān)節(jié)鏈的運(yùn)動(dòng),我們?cè)O(shè)計(jì)各個(gè)關(guān)節(jié)的自由度。根據(jù)實(shí)際情況,人體關(guān)節(jié)應(yīng)該只可以進(jìn)行旋轉(zhuǎn)變換,不可以進(jìn)行平移變換。因此各個(gè)關(guān)節(jié)最多有3個(gè)自由度,并且全部是旋轉(zhuǎn)自由度。具體可采用euler’srotation(歐拉旋轉(zhuǎn))來(lái)表達(dá)關(guān)節(jié)的自由度。
在自由度的確定過(guò)程中,具體可設(shè)置坐標(biāo)軸為右手坐標(biāo)系,即沿骨骼方向?yàn)閥方向;旋轉(zhuǎn)順序?yàn)椋篹ulerxyz。參見圖3所示,圖3為本發(fā)明提供的一種人體上肢關(guān)節(jié)自由度分析中坐標(biāo)軸的設(shè)置示意圖。
步驟s203中,為方便理解,以人體上肢為例。由于肩膀只有3個(gè)自由度,肘彎有1個(gè)自由度,手腕有3個(gè)自由度。假設(shè)肩膀的自由度為,(αs,βs,γs)胳膊肘的自由度為(0,βe,0),手腕的自由度為(αw,βw,γw),則其旋轉(zhuǎn)矩陣分別為ts,te,tw。其中:
其中,其他關(guān)節(jié)可類比上述旋轉(zhuǎn)矩陣的獲得方式。
需要注意的是,本步驟中的動(dòng)作模型需要盡可能涵蓋全部人類常見的動(dòng)作,例如,彎腰、蹲下、坐、站立等。每個(gè)人體動(dòng)作均對(duì)應(yīng)關(guān)節(jié)的一組旋轉(zhuǎn)矩陣,不同的人體動(dòng)作對(duì)應(yīng)的關(guān)節(jié)的旋轉(zhuǎn)矩陣不同。
另外,由于人體模型中,各個(gè)關(guān)節(jié)是呈樹狀形式的,即:整個(gè)人體模型有一個(gè)根節(jié)點(diǎn),即hips(臀部),圍繞此節(jié)點(diǎn),產(chǎn)生子節(jié)點(diǎn),子節(jié)點(diǎn)再產(chǎn)生自身子節(jié)點(diǎn)。如:hips(臀部)節(jié)點(diǎn)產(chǎn)生lefthips(左臀部)、righthips(右臀部)和lowerback(肚子);其中l(wèi)efthips(左臀部)產(chǎn)生節(jié)點(diǎn)leftupleg(左上腿);righthips(右臀部)產(chǎn)生節(jié)點(diǎn)right_upleg(右上腿)。當(dāng)計(jì)算各個(gè)關(guān)節(jié)的絕對(duì)坐標(biāo)時(shí),需要先計(jì)算其父節(jié)點(diǎn)的絕對(duì)坐標(biāo)。
步驟s204中,以圖2的人體上肢為例,假設(shè)運(yùn)動(dòng)前,肩膀的絕對(duì)坐標(biāo)為xs,胳膊肘的絕對(duì)坐標(biāo)為xe,手腕的絕對(duì)坐標(biāo)為xw,運(yùn)動(dòng)后,肩膀的絕對(duì)坐標(biāo)為xs’,胳膊肘的絕對(duì)坐標(biāo)為x’e,手腕的絕對(duì)坐標(biāo)為x’w,則:
x’e=xe
x’e=ts*xe+xs
x’w=te*x’e+x’s
依據(jù)上述方式,類比可得到全部關(guān)節(jié)的在相應(yīng)的人體動(dòng)作前后的絕對(duì)坐標(biāo),依據(jù)該絕對(duì)坐標(biāo),可以得到各種人體動(dòng)作前后的靜態(tài)圖像以及各個(gè)關(guān)節(jié)的角度變化范圍。
進(jìn)一步可知,步驟s103中,依據(jù)運(yùn)動(dòng)模型渲染骨骼動(dòng)畫,得到各種預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像的過(guò)程具體為:
步驟s301:依據(jù)預(yù)設(shè)的人體動(dòng)作前后各個(gè)關(guān)節(jié)的絕對(duì)坐標(biāo),確定預(yù)設(shè)的人體動(dòng)作過(guò)程中各個(gè)關(guān)節(jié)的變化角度范圍;
步驟s302:依據(jù)變化角度范圍,將預(yù)設(shè)角度的變化作為一幀,確定每個(gè)關(guān)節(jié)在預(yù)設(shè)的人體動(dòng)作過(guò)程中的幀數(shù);
步驟s303:依據(jù)各個(gè)關(guān)節(jié)的父子關(guān)系,在每個(gè)父關(guān)節(jié)更新一幀后,遍歷父關(guān)節(jié)對(duì)應(yīng)的子關(guān)節(jié)的全部幀圖像;
步驟s304:將遍歷后得到的全部圖像進(jìn)行匯總,得到預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像;重復(fù)上述操作,得到各種預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像。
可以理解的是,想要得到人體姿態(tài)數(shù)據(jù)樣本,不能僅依據(jù)動(dòng)作前后的靜態(tài)圖像,而是要生成骨骼動(dòng)畫。生成骨骼動(dòng)畫的過(guò)程中,由于每個(gè)關(guān)節(jié)均有一個(gè)角度變化的范圍,例如-30°~50°,則此時(shí)若將8°的變化作為一幀圖像的話,可將該關(guān)節(jié)在上述人體動(dòng)作中的移動(dòng)分解為10幀圖像,即該關(guān)節(jié)在上述人體動(dòng)作中的幀數(shù)為10,同理,可得到全部關(guān)節(jié)的幀數(shù),并完成全部關(guān)節(jié)的幀數(shù)分解。由于關(guān)節(jié)間具有父子聯(lián)動(dòng)關(guān)系,故需要依據(jù)父子關(guān)系進(jìn)行聯(lián)動(dòng)遍歷。例如,以左上肢為例來(lái)說(shuō)明,假設(shè)肩膀的幀數(shù)為10,胳膊肘的幀數(shù)為10,手腕的幀數(shù)為10,若當(dāng)前肩膀更新一幀,則胳膊肘的10幀需要全部遍歷一遍,在此過(guò)程中,胳膊肘每更新一幀,手腕也要全部遍歷一遍,具體的,假設(shè)當(dāng)前幀為第n幀,則:
當(dāng)前左上肢的幀數(shù)narm=n%(10*10*10);
當(dāng)前肩膀的幀數(shù)nshoulder=narm/(10*10);
當(dāng)前胳膊肘的幀數(shù)為nelbow=(narm%(10*10))/10;
當(dāng)前手腕的幀數(shù)為nwrist=(narm%(10*10))%10。
另外,為了確保獲得動(dòng)畫圖像的完整性,需要調(diào)整觀察視野,盡量均勻的在骨骼模型的各個(gè)方位采集圖像并保存,作為優(yōu)選地,觀察視野包括初始人體姿態(tài)模型的前方視野、后方視野、左側(cè)視野、右側(cè)視野、上方視野和下方視野。
本發(fā)明提供了一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的方法,建立骨骼模型以及骨骼模型中關(guān)節(jié)間的運(yùn)動(dòng)模型后,依據(jù)人體動(dòng)作前后的各個(gè)關(guān)節(jié)的相對(duì)旋轉(zhuǎn)關(guān)系,渲染得到在各種人體動(dòng)作下的動(dòng)畫圖像,然后調(diào)整觀察視野以及骨骼模型的參數(shù)重復(fù)上述操作,從而得到不同人體動(dòng)作下、不同觀察視野以及不同體型的骨骼模型的動(dòng)畫圖像,之后將該動(dòng)畫圖像以及從該動(dòng)畫圖像內(nèi)提取的真值數(shù)據(jù)作為人體姿態(tài)數(shù)據(jù)樣本??梢?,本發(fā)明不需要人工構(gòu)造,且能夠一次建立大量的數(shù)據(jù)樣本,節(jié)省人力,構(gòu)造效率高。
本發(fā)明還提供了一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的裝置,參見圖4所示,圖4為本發(fā)明提供的一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的裝置的結(jié)構(gòu)示意圖。該裝置包括:
骨骼構(gòu)建模塊1,用于預(yù)設(shè)參數(shù)構(gòu)建骨骼模型;
運(yùn)動(dòng)模型構(gòu)建模塊2,用于構(gòu)建骨骼模型內(nèi)關(guān)節(jié)間的若干個(gè)運(yùn)動(dòng)模型,每個(gè)運(yùn)動(dòng)模型對(duì)應(yīng)一種預(yù)設(shè)的人體動(dòng)作,且運(yùn)動(dòng)模型包括其對(duì)應(yīng)的人體動(dòng)作下各個(gè)關(guān)節(jié)的相對(duì)旋轉(zhuǎn)關(guān)系;
動(dòng)畫生成模塊3,用于依據(jù)運(yùn)動(dòng)模型渲染骨骼動(dòng)畫,得到各種預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像;調(diào)整觀察視野,重復(fù)上述渲染操作,得到骨骼模型在各個(gè)觀察視野下的動(dòng)畫圖像并保存,觸發(fā)骨骼參數(shù)調(diào)整模塊4;
骨骼參數(shù)調(diào)整模塊4,用于調(diào)整骨骼模型的參數(shù),觸發(fā)骨骼構(gòu)建模塊1,直至得到全部預(yù)設(shè)參數(shù)下的骨骼模型對(duì)應(yīng)的動(dòng)畫圖像后觸發(fā)真值提取模塊5;
真值提取模塊5,用于依據(jù)獲得的動(dòng)畫圖像提取真值數(shù)據(jù),真值數(shù)據(jù)及動(dòng)畫圖像即為人體姿態(tài)數(shù)據(jù)樣本。
其中,骨骼構(gòu)建模塊1具體包括:
初始構(gòu)建單元,用于構(gòu)建人體模型;
參數(shù)調(diào)整單元,用于設(shè)置人體模型中的人體骨骼參數(shù);
蒙皮建立單元,用于建立人體模型與骨骼間的蒙皮關(guān)系,得到骨骼模型。
作為優(yōu)選地,運(yùn)動(dòng)模型構(gòu)建模塊2具體包括:
關(guān)節(jié)鏈確定單元,用于確定骨骼模型內(nèi)各個(gè)關(guān)節(jié)的聯(lián)動(dòng)關(guān)系;
自由度確定單元,用于確定各個(gè)關(guān)節(jié)的自由度;
旋轉(zhuǎn)矩陣確定單元,用于依據(jù)自由度和聯(lián)動(dòng)關(guān)系,確定每種預(yù)設(shè)的人體動(dòng)作對(duì)應(yīng)的各個(gè)關(guān)節(jié)的旋轉(zhuǎn)矩陣t;
關(guān)節(jié)結(jié)構(gòu)確定單元,用于將臀部關(guān)節(jié)作為根關(guān)節(jié),確定各個(gè)關(guān)節(jié)之間的父子關(guān)系;
絕對(duì)坐標(biāo)計(jì)算單元,用于依據(jù)旋轉(zhuǎn)矩陣以及父子關(guān)系計(jì)算各種預(yù)設(shè)的人體動(dòng)作前后各個(gè)關(guān)節(jié)的絕對(duì)坐標(biāo)。
作為優(yōu)選地,動(dòng)畫生成模塊3具體包括:
變化范圍確定單元,用于依據(jù)預(yù)設(shè)的人體動(dòng)作前后各個(gè)關(guān)節(jié)的絕對(duì)坐標(biāo),確定預(yù)設(shè)的人體動(dòng)作過(guò)程中各個(gè)關(guān)節(jié)的變化角度范圍;
幀率分配單元,用于依據(jù)變化角度范圍,將預(yù)設(shè)角度的變化作為一幀,確定每個(gè)關(guān)節(jié)在預(yù)設(shè)的人體動(dòng)作過(guò)程中的幀數(shù);
遍歷單元,用于依據(jù)各個(gè)關(guān)節(jié)的父子關(guān)系,在每個(gè)父關(guān)節(jié)更新一幀后,遍歷父關(guān)節(jié)對(duì)應(yīng)的子關(guān)節(jié)的全部幀圖像;將遍歷后得到的全部圖像進(jìn)行匯總,得到預(yù)設(shè)的人體動(dòng)作下的動(dòng)畫圖像。
本發(fā)明提供了一種構(gòu)造人體姿態(tài)數(shù)據(jù)樣本的裝置,建立骨骼模型以及骨骼模型中關(guān)節(jié)間的運(yùn)動(dòng)模型后,依據(jù)人體動(dòng)作前后的各個(gè)關(guān)節(jié)的相對(duì)旋轉(zhuǎn)關(guān)系,渲染得到在各種人體動(dòng)作下的動(dòng)畫圖像,然后調(diào)整觀察視野以及骨骼模型的參數(shù)重復(fù)上述操作,從而得到不同人體動(dòng)作下、不同觀察視野以及不同體型的骨骼模型的動(dòng)畫圖像,之后將該動(dòng)畫圖像以及從該動(dòng)畫圖像內(nèi)提取的真值數(shù)據(jù)作為人體姿態(tài)數(shù)據(jù)樣本。可見,本發(fā)明不需要人工構(gòu)造,且能夠一次建立大量的數(shù)據(jù)樣本,節(jié)省人力,構(gòu)造效率高。
本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說(shuō)明即可。
還需要說(shuō)明的是,在本說(shuō)明書中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句"包括一個(gè)......"限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。