本發(fā)明涉及虛擬現(xiàn)實(shí)領(lǐng)域,尤其涉及虛擬人運(yùn)動(dòng)數(shù)據(jù)處理領(lǐng)域,用于在虛擬場(chǎng)景中虛擬人的運(yùn)動(dòng)表達(dá)。
背景技術(shù):
隨著多媒體技術(shù)與互聯(lián)網(wǎng)的發(fā)展,人們對(duì)以影視和游戲?yàn)榇淼拿襟w內(nèi)容提出了更高的要求。其中以計(jì)算機(jī)動(dòng)畫(huà)技術(shù)為基礎(chǔ)的虛擬現(xiàn)實(shí)技術(shù)得到了較快的發(fā)展,現(xiàn)在被廣泛應(yīng)用于影視制作、游戲開(kāi)發(fā)、醫(yī)學(xué)和教育培訓(xùn)等相關(guān)領(lǐng)域,成為了計(jì)算機(jī)科學(xué)研究的熱點(diǎn)方向之一。虛擬人骨骼動(dòng)畫(huà)是現(xiàn)代計(jì)算機(jī)動(dòng)畫(huà)領(lǐng)域十分流行的技術(shù),隨著現(xiàn)代運(yùn)動(dòng)捕獲設(shè)備的使用,目前已經(jīng)能夠較為容易的獲取反映人體運(yùn)動(dòng)真實(shí)狀態(tài)的三維數(shù)據(jù),這些數(shù)據(jù)有助于提高人體骨骼動(dòng)畫(huà)的真實(shí)感,但數(shù)量龐大的運(yùn)動(dòng)數(shù)據(jù)給后期的數(shù)據(jù)調(diào)整和編輯帶來(lái)困難,因此,需要利用關(guān)鍵幀提取技術(shù)從大量的運(yùn)動(dòng)數(shù)據(jù)中提取反映人體運(yùn)動(dòng)特征的關(guān)鍵時(shí)間點(diǎn)的數(shù)據(jù)作為關(guān)鍵幀,在動(dòng)畫(huà)合成階段,運(yùn)用關(guān)鍵幀插值算法補(bǔ)充原有的運(yùn)動(dòng)數(shù)據(jù),合成虛擬人動(dòng)畫(huà)。人體運(yùn)動(dòng)數(shù)據(jù)的關(guān)鍵幀序列是整個(gè)運(yùn)動(dòng)序列的概括表示,是存儲(chǔ)、瀏覽、檢索、合成與編輯等人體運(yùn)動(dòng)捕獲數(shù)據(jù)操作的基礎(chǔ)。
在基于關(guān)鍵幀動(dòng)畫(huà)的人體骨骼動(dòng)畫(huà)中,關(guān)鍵幀的質(zhì)量直接影響動(dòng)畫(huà)的真實(shí)感,根據(jù)運(yùn)動(dòng)數(shù)據(jù)的內(nèi)容特征快速自適應(yīng)提取最優(yōu)關(guān)鍵幀是關(guān)鍵幀提取的關(guān)鍵所在。
關(guān)鍵幀提取方法最初采用簡(jiǎn)單的等間隔采樣方案,此方案忽略了人體的運(yùn)動(dòng)特征,造成激烈運(yùn)動(dòng)的數(shù)據(jù)丟失和平緩運(yùn)動(dòng)的數(shù)據(jù)冗余。為了改善關(guān)鍵幀提取的質(zhì)量,研究人員提出了各種自適應(yīng)的關(guān)鍵幀提取方法。例如Lim等人將人體關(guān)節(jié)運(yùn)動(dòng)簡(jiǎn)化為一連串的線(xiàn)性變換,提出了通過(guò)簡(jiǎn)化運(yùn)動(dòng)曲線(xiàn)獲取關(guān)鍵幀的方法(Lim,I.S.,Thalmann,D.:Key-posture extraction out of human motion data by curve simplification.In:Proceedings of the 23rd Annual International Conference of the IEEE,Engineering in Medicine and Biology Society,vol.2(2),pp.1167–1169(2001))。Yang等提出了基于分層曲線(xiàn)簡(jiǎn)化的關(guān)鍵幀提取方案(Yang,T.,Xiao,J.,Wu,F.,Zhuang,Y.:Extraction of keyframe of motion capture data based on layered curve simplification.J.Comput.-Aided Des.Comput.Graph.18(11),1691–1697(2006)),這類(lèi)方法較容易實(shí)施,能夠快速有效的獲取關(guān)鍵幀,然而這類(lèi)方法采用歐拉距離的度量方式,沒(méi)能反應(yīng)數(shù)據(jù)幀間的真實(shí)差別,因而難以保證較高的誤差精度。Liu等人提出一種基于聚類(lèi)的關(guān)鍵幀提取方法(Liu,F.,Zhuang,Y.T.,Wu,F.,et al.:3D motion retrieval with motion index tree.Comput.Vis.Image Underst.92(2),265–284(2003)),基于聚類(lèi)的算法的運(yùn)算量會(huì)隨著運(yùn)動(dòng)序列長(zhǎng)度的增加變得非常大,且聚類(lèi)很難保證所聚類(lèi)和所選幀為最優(yōu)。有研究人員通過(guò)矩陣分解的方法提取運(yùn)動(dòng)序列的關(guān)鍵幀,如(Huang,K.S.,Chang,C.F.,Hsu,Y.Y.,Yang,S.N.:Keyprobe:a technique for animationkeyframe extraction.Vis.Comput.21(8–10),532–541(2005)),這類(lèi)方法也具有較大的計(jì)算成本,速度較慢。目前最為流行的方法是采用基于優(yōu)化的方法,如Liu等人利用基因算法來(lái)提取關(guān)鍵幀(Liu X,Hao A,Zhao D.Optimization-based key frame extraction formotion capture animation[J].The visual computer,2013,29(1):85-95.),這類(lèi)基于優(yōu)化的算法具有較強(qiáng)的搜索能力,然而其收斂速度容易受到維度間干擾的影響。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種虛擬人運(yùn)動(dòng)數(shù)據(jù)關(guān)鍵幀抽取的方法,用于解決原始采集數(shù)據(jù)難以直接用于虛擬人運(yùn)動(dòng)生成的情況。
技術(shù)方案:為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:
一種虛擬人運(yùn)動(dòng)數(shù)據(jù)關(guān)鍵幀抽取的方法,用于抽取真實(shí)人體運(yùn)動(dòng)數(shù)據(jù)中關(guān)鍵幀,可用于重構(gòu)原虛擬人運(yùn)動(dòng)序列,減少虛擬人運(yùn)動(dòng)數(shù)據(jù)存儲(chǔ)量,便于進(jìn)行運(yùn)動(dòng)合成等相關(guān)編輯操作,包括如下步驟:
步驟一、將虛擬人多維運(yùn)動(dòng)數(shù)據(jù)量化為一維數(shù)據(jù);
步驟二、用獲得的一維數(shù)據(jù)中包含的信息確定初始關(guān)鍵幀集合;
步驟三、優(yōu)化初始關(guān)鍵幀集合中關(guān)鍵幀為最優(yōu)關(guān)鍵幀。
進(jìn)一步地,所述步驟一將虛擬人多維運(yùn)動(dòng)數(shù)據(jù)量化為一維數(shù)據(jù),具體包括步驟:
(1.1)確定并選取虛擬人主要運(yùn)動(dòng)關(guān)節(jié);
(1.2)由主要運(yùn)動(dòng)關(guān)節(jié)的數(shù)據(jù)生成一個(gè)一維數(shù)據(jù)序列。
其中:
N為原始運(yùn)動(dòng)數(shù)據(jù)的維度;
I為原始運(yùn)動(dòng)數(shù)據(jù)的序列長(zhǎng)度;
為位于第k幀的第n維數(shù)據(jù);
ω為窗口參數(shù);
∈為預(yù)設(shè)參數(shù)。
所述虛擬人主要運(yùn)動(dòng)關(guān)節(jié)包含通常情況下表達(dá)虛擬人運(yùn)動(dòng)的基本關(guān)節(jié),為了能夠更準(zhǔn)確的表達(dá)某些特殊運(yùn)動(dòng),主要關(guān)節(jié)也可依據(jù)運(yùn)動(dòng)表達(dá)需求進(jìn)行調(diào)整。生成的一維數(shù)據(jù)序列包含運(yùn)動(dòng)過(guò)程整體運(yùn)動(dòng)幅度變化的信息。
進(jìn)一步地,所述步驟二用獲得的一維數(shù)據(jù)中包含的信息確定初始關(guān)鍵幀集合,具體包括步驟:
(2.1)選出一維數(shù)據(jù)中的所有頂點(diǎn),將所有頂點(diǎn)分為兩個(gè)集合,第一集合包含顯著頂點(diǎn),第二集合包含其它頂點(diǎn);其中顯著頂點(diǎn)與多個(gè)重要關(guān)節(jié)同時(shí)運(yùn)動(dòng)變化較大點(diǎn)對(duì)應(yīng),運(yùn)動(dòng)變化較大指骨骼關(guān)節(jié)角變化較快,當(dāng)多個(gè)關(guān)節(jié)運(yùn)動(dòng)變化較大就會(huì)在MAI中形成較高的頂點(diǎn);由于多個(gè)重要關(guān)節(jié)同時(shí)運(yùn)動(dòng)變化較大點(diǎn)選出作為關(guān)鍵幀為行業(yè)公知,因此本發(fā)明中的顯著頂點(diǎn)取自一維數(shù)據(jù)中的明顯高點(diǎn),且與多個(gè)重要關(guān)節(jié)同時(shí)變化較大點(diǎn)對(duì)應(yīng);一般情況下,可通過(guò)設(shè)定百分位數(shù)的方式從所有頂點(diǎn)中選出,依據(jù)經(jīng)驗(yàn),通常采用大于等于較大四分位數(shù)部分的頂點(diǎn)作為顯著頂點(diǎn)。
(2.2)第一集合顯著頂點(diǎn)的對(duì)應(yīng)幀加上原始運(yùn)動(dòng)數(shù)據(jù)的首尾幀直接選入初始關(guān)鍵幀集合;
(2.3)接著,利用現(xiàn)有的初始關(guān)鍵幀集合將原始運(yùn)動(dòng)數(shù)據(jù)分段,用已有初始關(guān)鍵幀將原始運(yùn)動(dòng)數(shù)據(jù)分段,針對(duì)每一分段計(jì)算用關(guān)鍵幀重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)與原始運(yùn)動(dòng)數(shù)據(jù)間的差作為重構(gòu)誤差信息,根據(jù)重構(gòu)誤差信息為每個(gè)分段從第二集合中選出新的初始關(guān)鍵幀;
(2.4)所有選出的初始關(guān)鍵幀合并構(gòu)成完整的初始關(guān)鍵幀集合。
上述過(guò)程中,重構(gòu)誤差是將原始運(yùn)動(dòng)數(shù)據(jù)和關(guān)鍵幀數(shù)據(jù)轉(zhuǎn)換為四元數(shù)后計(jì)算獲得的原始運(yùn)動(dòng)與重構(gòu)運(yùn)動(dòng)間的差。
具體的,從第二集合中選出新的初始關(guān)鍵幀包含以下過(guò)程:
步驟1、判斷利用現(xiàn)有的初始關(guān)鍵幀集合獲得的原始運(yùn)動(dòng)數(shù)據(jù)分段的每一段的寬度是否大于δ×el×rwm,其中e l為給定誤差閾值,rwm為已有分段寬度與其最大局部誤差比值的平均值,δ為給定調(diào)節(jié)參數(shù);將大于上述標(biāo)準(zhǔn)的分段進(jìn)行步驟2中的處理,其余分段進(jìn)行步驟3中的處理;
步驟2、從第二集合中選出與待處理的分段對(duì)應(yīng)的相對(duì)顯著頂點(diǎn),所述相對(duì)顯著頂點(diǎn)為從待處理的分段內(nèi)除顯著頂點(diǎn)以外的頂點(diǎn)的一維數(shù)據(jù)中選出大于等于較大四分位數(shù)部分的頂點(diǎn),利用相對(duì)顯著頂點(diǎn)將待處理的分段進(jìn)一步細(xì)分成寬度滿(mǎn)足于小于等于δ×el×rwm要求的分段,然后將細(xì)分后獲得的分段進(jìn)行步驟3中的處理;
步驟3、依據(jù)和三個(gè)參數(shù)的值在給定閾值區(qū)間內(nèi)投票來(lái)決定每個(gè)分段中應(yīng)選擇的關(guān)鍵幀數(shù)量,按照如下方式進(jìn)行投票:
對(duì)應(yīng)每個(gè)參數(shù)設(shè)置各自的閾值區(qū)間,閾值區(qū)間的形式按照從小到大的a1,a2和a33個(gè)區(qū)間點(diǎn)對(duì)應(yīng)形成(-∞,a1]、(a1,a2]、(a2,a3]、(a3,+∞)4段,a1,a2和a3的值根據(jù)參數(shù)分別設(shè)置;以0、1、2、3作為4個(gè)投票選項(xiàng),將參數(shù)值與各自的閾值區(qū)間進(jìn)行比較,當(dāng)參數(shù)值落在(-∞,a1]則投票0,落在(a1,a2]內(nèi)則投票1,落在(a2,a3]內(nèi)則投票3,落在(a3,+∞)則投票4;按照上述三個(gè)參數(shù)各自的投票結(jié)果采取少數(shù)服從多數(shù)的原則選出最終結(jié)果,當(dāng)投票選項(xiàng)的票數(shù)相同時(shí)選取票數(shù)相同的投票選項(xiàng)中的較小值作為最終結(jié)果;按照最終結(jié)果決定每個(gè)分段中應(yīng)選擇的關(guān)鍵幀的數(shù)量;
其中:MLRE為每一分段的最大局部重構(gòu)誤差,ALRE為每一分段的累加重構(gòu)誤差,LSW為每一分段寬度,rsm為各個(gè)分段的累加重構(gòu)誤差與對(duì)應(yīng)分段的最大局部重構(gòu)誤差比值的平均值;然后針對(duì)每個(gè)分段,從第二集合中選出使得當(dāng)前處理的該分段的重構(gòu)誤差最小的關(guān)鍵幀。
進(jìn)一步地,所述步驟三優(yōu)化初始關(guān)鍵幀集合中關(guān)鍵幀為最優(yōu)關(guān)鍵幀,具體包括步驟:
(3.1)在完整的初始關(guān)鍵幀集合中,在當(dāng)前關(guān)鍵幀的前一關(guān)鍵幀和后一關(guān)鍵幀所形成的當(dāng)前區(qū)間內(nèi)通過(guò)局部搜索的方法調(diào)整當(dāng)前關(guān)鍵幀的位置,使得當(dāng)前區(qū)間內(nèi)的運(yùn)動(dòng)序列的重構(gòu)誤差為最小,依次處理所有初始關(guān)鍵幀后獲得新的初始關(guān)鍵幀集合;
(3.2)重復(fù)優(yōu)化過(guò)程直到優(yōu)化過(guò)程收斂到所有關(guān)鍵幀位置不再變化。
優(yōu)化某一幀的時(shí)候會(huì)影響其前一幀的優(yōu)化結(jié)果,有可能使得前一幀的優(yōu)化結(jié)果發(fā)生變化,但這一過(guò)程通過(guò)多次循環(huán)進(jìn)行后最終將會(huì)收斂,所有關(guān)鍵幀都將穩(wěn)定不變,即獲得最優(yōu)關(guān)鍵幀組合。
有益效果:
本發(fā)明公開(kāi)了一種虛擬人運(yùn)動(dòng)數(shù)據(jù)關(guān)鍵幀抽取的方法,總體上可認(rèn)為是兩個(gè)步驟,首先利用運(yùn)動(dòng)數(shù)據(jù)本身的信息獲取初始關(guān)鍵幀,然后對(duì)初始關(guān)鍵幀進(jìn)行優(yōu)化獲得最優(yōu)關(guān)鍵幀結(jié)合。本方法采用運(yùn)動(dòng)數(shù)據(jù)分析與優(yōu)化相結(jié)合的方法,使得計(jì)算速度較快,同時(shí)又能以盡量少的關(guān)鍵幀滿(mǎn)足誤差要求。
該方法獲取的關(guān)鍵幀數(shù)據(jù)可用于虛擬人運(yùn)動(dòng)中數(shù)據(jù)壓縮存儲(chǔ)、瀏覽、檢索、合成與編輯等后續(xù)操作。
附圖說(shuō)明
圖1為本發(fā)明虛擬人運(yùn)動(dòng)數(shù)據(jù)關(guān)鍵幀抽取方法流程圖;
圖2為本發(fā)明將虛擬人多維關(guān)節(jié)運(yùn)動(dòng)數(shù)據(jù)量化為一維數(shù)據(jù)的步驟流程圖;
圖3為本發(fā)明用獲得的一維數(shù)據(jù)中包含的信息確定初始關(guān)鍵幀集合的步驟流程圖;
圖4為本發(fā)明優(yōu)化初始關(guān)鍵幀集合中關(guān)鍵幀為最優(yōu)關(guān)鍵幀的步驟流程圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作更進(jìn)一步的說(shuō)明。
本發(fā)明為了快速抽取虛擬人運(yùn)動(dòng)數(shù)據(jù)的關(guān)鍵幀,首先充分利用運(yùn)動(dòng)數(shù)據(jù)本身的信息,將多維數(shù)據(jù)量化為包含整體運(yùn)動(dòng)變化程度信息的一維數(shù)據(jù),然后利用這一信息并根據(jù)誤差要求生成一個(gè)初始關(guān)鍵幀集合,最后再通過(guò)優(yōu)化方法使得所獲得的關(guān)鍵幀為最優(yōu)關(guān)鍵幀集合。具體實(shí)施方法如圖1所示,包括以下步驟:
步驟101、將虛擬人多維運(yùn)動(dòng)數(shù)據(jù)量化為一維數(shù)據(jù)。
原始運(yùn)動(dòng)數(shù)據(jù)為多維數(shù)據(jù),并不容易由這些數(shù)據(jù)直接確定關(guān)鍵幀,本方法由原始運(yùn)動(dòng)數(shù)據(jù)轉(zhuǎn)換為一個(gè)一維數(shù)據(jù),能夠更加直接的表現(xiàn)出運(yùn)動(dòng)中包含的變化信息,更加便于提取所需關(guān)鍵幀集合。
步驟102、用獲得的一維數(shù)據(jù)中包含的信息確定初始關(guān)鍵幀集合。
在給定誤差條件下,通常很難一次性獲得較好的初始關(guān)鍵幀,本方法中充分利用獲得的一維數(shù)據(jù)信息,采用兩次操作先選出一部分較容易確定的關(guān)鍵幀,在滿(mǎn)足誤差要求前提下,再利用已有關(guān)鍵幀盡量少的選出其余所需關(guān)鍵幀。
步驟103、優(yōu)化初始關(guān)鍵幀集合中關(guān)鍵幀為最優(yōu)關(guān)鍵幀。
通過(guò)初始關(guān)鍵幀重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)與原始運(yùn)動(dòng)數(shù)據(jù)的差已經(jīng)相對(duì)較小,但仍有進(jìn)一步減少的空間,通過(guò)局部搜索的方法進(jìn)一步對(duì)所有關(guān)鍵幀在小范圍內(nèi)調(diào)整能夠獲得更優(yōu)的關(guān)鍵幀集合。
為了更好的體現(xiàn)并利用原始運(yùn)動(dòng)數(shù)據(jù)中包含的信息來(lái)選取關(guān)鍵幀,本發(fā)明將虛擬人多維運(yùn)動(dòng)數(shù)據(jù)量化為一維數(shù)據(jù),如圖2所示,包括如下步驟:
步驟201、確定并選取虛擬人主要運(yùn)動(dòng)關(guān)節(jié)。
真實(shí)人體運(yùn)動(dòng)數(shù)據(jù)包含很多關(guān)節(jié)的運(yùn)動(dòng)軌跡,然而表達(dá)運(yùn)動(dòng)變化并不需要所有關(guān)節(jié)的運(yùn)動(dòng)數(shù)據(jù),如手指等關(guān)節(jié)變化的數(shù)據(jù)多數(shù)情況下對(duì)人體運(yùn)動(dòng)變化影響不大,因此只需選出能夠決定運(yùn)動(dòng)變化的主要關(guān)節(jié)數(shù)據(jù)來(lái)生成一維數(shù)據(jù)。
步驟202、由主要運(yùn)動(dòng)關(guān)節(jié)的數(shù)據(jù)生成一個(gè)一維數(shù)據(jù)序列。
具體的,對(duì)于維度為N、序列長(zhǎng)度為I的原始運(yùn)動(dòng)數(shù)據(jù),一維運(yùn)動(dòng)數(shù)據(jù)可由如下公式獲得:
其中:
為位于第k幀的第n維數(shù)據(jù),
ω為窗口參數(shù),
∈為預(yù)設(shè)參數(shù),用來(lái)過(guò)濾過(guò)于小的值,可依據(jù)經(jīng)驗(yàn)賦值,也可直接設(shè)為零。
在生成上述一維數(shù)據(jù)后,本發(fā)明根據(jù)預(yù)先給出的誤差要求,利用獲得的一維數(shù)據(jù)確定初始關(guān)鍵幀集合,如圖3所示,包括如下步驟:
步驟301、平滑處理獲得的一維數(shù)據(jù)后選出其所有頂點(diǎn),將所有頂點(diǎn)分為兩個(gè)集合,第一集合包含顯著頂點(diǎn),第二集合包含其它頂點(diǎn);
一維數(shù)據(jù)頂點(diǎn)對(duì)應(yīng)局部區(qū)域內(nèi)相對(duì)較大的運(yùn)動(dòng)變化,顯著頂點(diǎn)通常是某些重要關(guān)節(jié)的運(yùn)動(dòng)同時(shí)發(fā)生較大變化,這些點(diǎn)是運(yùn)動(dòng)中的特殊點(diǎn),應(yīng)該被作為關(guān)鍵幀被選出。
步驟302、第一集合中顯著頂點(diǎn)對(duì)應(yīng)幀加上原始運(yùn)動(dòng)數(shù)據(jù)的首尾幀直接選入初始關(guān)鍵幀集合。
步驟303、用已有初始關(guān)鍵幀將原始運(yùn)動(dòng)數(shù)據(jù)分段,針對(duì)每一分段計(jì)算用現(xiàn)有的初始關(guān)鍵幀重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)與原始運(yùn)動(dòng)數(shù)據(jù)間的差作為重構(gòu)誤差信息,根據(jù)重構(gòu)誤差信息為每個(gè)分段從第二集合中選出新的初始關(guān)鍵幀;
利用已獲取的初始關(guān)鍵幀將整體運(yùn)動(dòng)數(shù)據(jù)分為多個(gè)小段,在每一小段中再選出合適的關(guān)鍵幀要比整體上考慮關(guān)鍵幀選擇容易。為每一小段計(jì)算重構(gòu)誤差將作為下一步選擇關(guān)鍵幀的主要信息之一。根據(jù)重構(gòu)誤差信息選出新的初始關(guān)鍵幀分為兩個(gè)階段:
第一步,首先找出寬度過(guò)大的分段,并從第二集合中選擇新的關(guān)鍵幀對(duì)寬度過(guò)大的分段進(jìn)行拆分,判斷分段是否過(guò)大的依據(jù)為其寬度是否大于δ×el×rwm,其中el為給定誤差閾值,用于判斷每個(gè)分段的整體誤差是否超過(guò)給定值,rwm為已有分段寬度與其最大局部誤差比值的平均值,δ為給定調(diào)節(jié)參數(shù);拆分后的分段以及原先寬度符合要求的分段形成新的分段形式;
以該段最大單幀誤差,寬度,累加誤差三方面作為衡量標(biāo)準(zhǔn),投票方式確定應(yīng)選去多少幀;由于之前已經(jīng)對(duì)與寬度過(guò)大的區(qū)段進(jìn)行過(guò)拆分,此處選出的新幀數(shù)量不會(huì)大多,通常依據(jù)誤差閾值基本確定在3幀內(nèi);確定需要多少幀后就再?gòu)牡诙现羞x出合適關(guān)鍵幀。
第二步,在獲得新的分段形式的基礎(chǔ)上,針對(duì)每個(gè)分段是否需要選取新的關(guān)鍵幀以及應(yīng)該選出多少新的關(guān)鍵幀都需要根據(jù)重新計(jì)算每個(gè)分段的重構(gòu)誤差來(lái)確定:
具體是依據(jù)和三個(gè)參數(shù)的值在給定閾值區(qū)間內(nèi)投票來(lái)決定每個(gè)分段中應(yīng)選擇的關(guān)鍵幀數(shù)量;具體按照如下方式進(jìn)行投票:
對(duì)應(yīng)每個(gè)參數(shù)設(shè)置各自的閾值區(qū)間,閾值區(qū)間的形式按照從小到大的a1,a2和a33個(gè)區(qū)間點(diǎn)對(duì)應(yīng)形成(-∞,a1]、(a1,a2]、(a2,a3]、(a3,+∞)4段,a1,a2和a3的值根據(jù)參數(shù)分別設(shè)置;以0、1、2、3作為4個(gè)投票選項(xiàng),將參數(shù)值與各自的閾值區(qū)間進(jìn)行比較,當(dāng)參數(shù)值落在(-∞,a1]則投票0,落在(a1,a2]內(nèi)則投票1,落在(a2,a3]內(nèi)則投票3,落在(a3,+∞)則投票4;按照上述三個(gè)參數(shù)各自的投票結(jié)果采取少數(shù)服從多數(shù)的原則選出最終結(jié)果,當(dāng)投票選項(xiàng)的票數(shù)相同時(shí)選取票數(shù)相同的投票選項(xiàng)中的較小值作為最終結(jié)果;按照最終結(jié)果決定每個(gè)分段中應(yīng)選擇的關(guān)鍵幀的數(shù)量;
由于之前已經(jīng)對(duì)與寬度過(guò)大的區(qū)段進(jìn)行過(guò)拆分,此處選出的新幀數(shù)量不會(huì)太多,通常依據(jù)誤差閾值基本確定在3幀內(nèi);然后針對(duì)每個(gè)分段,從第二集合中選出使得當(dāng)前處理的該分段的重構(gòu)誤差最小的關(guān)鍵幀。
其中:
MLRE為每一分段的最大局部重構(gòu)誤差,即在該分段內(nèi)重構(gòu)誤差最大的幀的重構(gòu)誤差;
ALRE為每一分段的累加重構(gòu)誤差,即該分段內(nèi)所有幀各自的重構(gòu)誤差之和;
LSW為每一分段寬度,即每一分段包含的總幀數(shù);
rsm為各個(gè)分段的累加重構(gòu)誤差與對(duì)應(yīng)分段的最大局部重構(gòu)誤差比值的平均值。
上述過(guò)程中重構(gòu)誤差相關(guān)計(jì)算公式如下:
原始運(yùn)動(dòng)數(shù)據(jù)中第k幀數(shù)據(jù)可表達(dá)為Sk=[pk,0,qk,0,...,qk,j,...qk,J],
其中:
為跟關(guān)節(jié)的位置,表示三維位置空間;
為跟關(guān)節(jié)的轉(zhuǎn)動(dòng)數(shù)據(jù),表示三維方向空間;
為關(guān)節(jié)j的轉(zhuǎn)動(dòng)數(shù)據(jù);
J為總體關(guān)節(jié)數(shù);
重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)通過(guò)四元數(shù)插值的方式獲得,具體通過(guò)下列2個(gè)公式,用K1和K2幀的原始運(yùn)動(dòng)數(shù)據(jù)插值獲得第k幀的重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù):
其中:
uk為第k幀對(duì)應(yīng)的插值參數(shù),K1<k<K2;
slerp()為插值函數(shù)spherical linear interpolation的簡(jiǎn)稱(chēng);
θ為兩個(gè)四元數(shù)qK1,j,qK2,j間的夾角。
重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)的每一幀與對(duì)應(yīng)的原始運(yùn)動(dòng)數(shù)據(jù)的差為每一幀的重構(gòu)誤差
可用原始運(yùn)動(dòng)數(shù)據(jù)與重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)在第k幀處的距離進(jìn)行表達(dá):
其中:
o表示原始運(yùn)動(dòng)數(shù)據(jù);
r表示重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù);
表示原始運(yùn)動(dòng)數(shù)據(jù)在第k幀處的跟關(guān)節(jié)位置;
表示重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)在第k幀處的跟關(guān)節(jié)位置;||·||表示取模;
ωj表示對(duì)應(yīng)關(guān)節(jié)的給定權(quán)值;
表示原始運(yùn)動(dòng)數(shù)據(jù)中關(guān)節(jié)j的轉(zhuǎn)動(dòng)數(shù)據(jù);
表示重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)中關(guān)節(jié)j的轉(zhuǎn)動(dòng)數(shù)據(jù);
的上標(biāo)-1表示求逆;
所有幀的重構(gòu)誤差的平均和為整個(gè)序列的重構(gòu)誤差Do-r,可用原始運(yùn)動(dòng)數(shù)據(jù)與重構(gòu)后的運(yùn)動(dòng)數(shù)據(jù)的整體誤差進(jìn)行表達(dá):
其中:
I為運(yùn)動(dòng)數(shù)據(jù)的總體幀數(shù)。
步驟304、所有選出的初始關(guān)鍵幀合并構(gòu)成完整的初始關(guān)鍵幀集合。
為了最終獲得最優(yōu)的關(guān)鍵幀集合,本發(fā)明優(yōu)化初始關(guān)鍵幀集合中關(guān)鍵幀為最優(yōu)關(guān)鍵幀,如圖4所示,包括如下步驟:
步驟401、用每一幀的前一幀與后一幀間的運(yùn)動(dòng)數(shù)據(jù)依次優(yōu)化除首尾幀外的所有關(guān)鍵幀;具體的,對(duì)除首尾幀外的任意一個(gè)關(guān)鍵幀作為當(dāng)前關(guān)鍵幀,在其前一關(guān)鍵幀與后一關(guān)鍵幀包含的原始運(yùn)動(dòng)數(shù)據(jù)所形成的運(yùn)動(dòng)序列內(nèi)的幀,采用局部搜索的方法判斷選擇當(dāng)前幀是否使得該運(yùn)動(dòng)序列的重構(gòu)誤差為最小,若選擇其它幀后獲得的重構(gòu)誤差更小則該幀替換當(dāng)前關(guān)鍵幀為新關(guān)鍵幀;接著按照上述方法再確定新關(guān)鍵幀的后一關(guān)鍵幀是否為最優(yōu),這樣可以依次完成所有關(guān)鍵幀的判斷與替換。
步驟402、重復(fù)優(yōu)化過(guò)程直到優(yōu)化過(guò)程收斂到所有關(guān)鍵幀位置不再變化。
當(dāng)前關(guān)鍵幀的后一關(guān)鍵幀發(fā)生變化則又會(huì)反過(guò)來(lái)影響前一關(guān)鍵幀的結(jié)果,因此優(yōu)化過(guò)程需要重復(fù)進(jìn)行,最終所有幀都將固定不再變化,即獲得所需的最優(yōu)關(guān)鍵幀。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出:對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。