周 悅 劉 凱
(四川大學(xué)電氣工程學(xué)院 四川 成都 610065)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,逼真的人體建模與動(dòng)作模擬在動(dòng)畫、游戲、教育、醫(yī)學(xué)研究等領(lǐng)域[1-2]有了普遍的應(yīng)用。在人體行為模擬中,由于真實(shí)人臉表情復(fù)雜多變,是情感表達(dá)的重要載體,三維表情模擬一直是計(jì)算機(jī)圖形學(xué)領(lǐng)域內(nèi)研究的熱門與難點(diǎn)。
自20世紀(jì)70年代初Parke[3]開(kāi)創(chuàng)式地設(shè)計(jì)出第一個(gè)可以模擬表情的人臉模型以來(lái),國(guó)內(nèi)外專家學(xué)者在三維表情合成領(lǐng)域做了大量研究工作,目前存在的方法大致可分為以下四類:(1) 基于關(guān)鍵幀插值的方法[4],通過(guò)對(duì)表情變化時(shí)頂點(diǎn)移動(dòng)軌跡的計(jì)算,只需定義臉部少數(shù)關(guān)鍵幀,即可產(chǎn)生一段簡(jiǎn)單表情動(dòng)畫,但產(chǎn)生的表情真實(shí)感較差;(2) 基于參數(shù)的方法[5-6],通過(guò)對(duì)人臉表面參數(shù)的控制實(shí)現(xiàn)表情合成,但控制點(diǎn)多,參數(shù)設(shè)置復(fù)雜;(3) 基于生理模型的方法[7],利用解剖學(xué)知識(shí),對(duì)真實(shí)人臉的骨骼、肌肉、皮膚進(jìn)行建模,模仿真實(shí)表情的形變。這類方法合成的人臉逼真表情豐富,但模型復(fù)雜,在人臉上搭建困難;(4) 基于偽肌肉模型變形的方法[8-9],利用幾何形變模擬人臉肌肉運(yùn)動(dòng),此類方法相比肌肉模型結(jié)構(gòu)簡(jiǎn)單,但缺少對(duì)表情細(xì)節(jié)的模擬。
本文對(duì)傳統(tǒng)肌肉模型缺點(diǎn)作出改進(jìn),使仿真的表情更具有真實(shí)感,并提出一種自適應(yīng)肌肉參數(shù)配置方法,快速獲取特定人臉上各個(gè)肌肉的參數(shù)。
三維人臉模型是表情合成的基礎(chǔ),經(jīng)過(guò)許多研究學(xué)者的探索,目前三維人臉模型的來(lái)源通常有以下幾種:基于三維建模軟件的方法,最常見(jiàn)的軟件有Maya、3dmax、Rhino等;基于二維照片特征對(duì)一般人臉模型形變的方法[10-11];基于激光掃描真實(shí)人臉的點(diǎn)云重建方法[12-13]。
在這些方法中,因?yàn)槎S圖像獲取的門檻低、速度快,本文便基于單幅正面人臉圖片對(duì)平均人臉模型變形獲得特定三維人臉模型。
對(duì)于一個(gè)三維人臉模型,可表示為形狀向量和紋理向量的組合。設(shè)平均人臉模型的形狀向量S和紋理向量T的定義如下:
S=(x1,y1,z1,x2,y2,z2,…,xn,yn,zn)
(1)
T=(R1,G1,B1,R2,G2,B2,…,Rn,Gn,Bn)
(2)
式中:(xi,yi,zi,)是三維網(wǎng)格模型中第i個(gè)頂點(diǎn)的三維坐標(biāo);(Ri,Gi,Bi,)是第i個(gè)頂點(diǎn)的紋理值;n是網(wǎng)格模型中的頂點(diǎn)總數(shù)。用主成分分析法對(duì)形狀和紋理向量進(jìn)行統(tǒng)計(jì)剖析,那么特定人臉模型的形狀S′和紋理T′可表示為:
S′=S+λα
(3)
T′=T+τβ
(4)
式中:λ和τ分別是前m個(gè)形狀和紋理特征向量組成的特征矩陣;α和β分別是形狀和紋理系數(shù)向量。
因?yàn)槿四樐P偷男螤顝?fù)雜,僅考慮剛性形變很難從模板人臉轉(zhuǎn)化為特定人臉,在二維人臉圖像上選取11個(gè)特征點(diǎn)作為模型非剛性形變的依據(jù),具體特征點(diǎn)選擇見(jiàn)圖1。
(a) 模板人臉 (b) 輸入人臉圖1 二維圖像人臉特征點(diǎn)
抽象肌肉模型是根據(jù)人體解剖學(xué)和肌肉力學(xué)知識(shí),通過(guò)模仿肌肉的收縮或拉伸牽扯網(wǎng)格模型發(fā)生形變,模擬出人臉表情。Waters[14]基于解剖模型,在人臉上劃分出18個(gè)肌肉群組作為表情模擬的肌肉向量,并將常用肌肉模型定義為兩大類:一種是括約肌,另一種是線性肌。括約肌控制實(shí)現(xiàn)嘴唇部分的變形,其影響范圍可用橢球體表示。線性肌的數(shù)學(xué)模型是一個(gè)向量,向量的兩端分別代表肌肉附著在相應(yīng)骨骼上的固定端點(diǎn)和肌肉與皮膚組織相連的移動(dòng)端點(diǎn)。在傳統(tǒng)肌肉模型中,大部分人臉肌肉的運(yùn)動(dòng)都是通過(guò)線性肌模擬實(shí)現(xiàn)的。
(5)
(6)
圖2 線性肌模型[14]
上述數(shù)學(xué)模型較好地模擬出了人臉肌肉對(duì)于皮膚的牽扯作用,在學(xué)術(shù)研究、工程實(shí)踐中均有了廣泛的使用。但在實(shí)際操作中發(fā)現(xiàn)這種線性肌模型存在不足之處:當(dāng)受力系數(shù)較大時(shí),形變后的網(wǎng)格會(huì)堆積在肌肉固定端,出現(xiàn)尖銳突起現(xiàn)象;而當(dāng)受力系數(shù)過(guò)大時(shí),網(wǎng)格拓?fù)浣Y(jié)構(gòu)被破壞,人臉模型出現(xiàn)破損,如圖3所示。
(a) 受力系數(shù)為0 (b) 受力系數(shù)為3
(c) 受力系數(shù)為5 (d) 受力系數(shù)為10圖3 受力系數(shù)分別為0、3、5、10時(shí)線性肌變形效果
由人體肌肉力學(xué)與實(shí)際現(xiàn)象可知,肌肉收縮或拉伸造成的皮膚形變?cè)诳拷∪馄瘘c(diǎn)處逐漸緩和,最終在固定點(diǎn)處平滑。為了修復(fù)尖銳突起問(wèn)題,使合成的表情更接近于真實(shí),本節(jié)對(duì)線性肌模型提出改進(jìn)。
三角面片受到來(lái)自肌肉固定端的拉力發(fā)生形變,被控點(diǎn)P受到的拉力為fmp,但同時(shí),根據(jù)生理學(xué)知識(shí),肌肉是具有彈性的彈簧模型,皮膚組織在被肌肉牽引的同時(shí),也會(huì)承受因肌肉收縮帶來(lái)的斥力,基于此原理,本文在線性肌模型靠近骨節(jié)點(diǎn)處加入斥力彈簧模型,對(duì)網(wǎng)格被牽引產(chǎn)生的位移進(jìn)行修正。
設(shè)彈簧的起點(diǎn)為固定端V1,作用半徑為R,位于作用范圍內(nèi)的一網(wǎng)格頂點(diǎn)在松弛狀態(tài)的坐標(biāo)為Pi,在受到線性肌牽引力移動(dòng)后的坐標(biāo)為Pj,那它受到彈簧模型的斥力為:
(7)
式中:Δp=Pj-Pi;k為勁度系數(shù)。對(duì)于肌肉彈簧模型作用范圍內(nèi)每一點(diǎn),勁度系數(shù)并不是一個(gè)常量,它與被控點(diǎn)所位于彈簧中的初始位置相關(guān),當(dāng)網(wǎng)格越接近肌肉固定端,形變改變就越困難,即勁度系數(shù)越大。因此,用非線性函數(shù)(式(8))對(duì)勁度系數(shù)進(jìn)行調(diào)節(jié):
(8)
式中:α是非線性因子;k0為初始勁度系數(shù)。
在近固定端加入斥力彈簧模型后能解決尖銳突起問(wèn)題,使網(wǎng)格形變?cè)诮潭ǘ颂幾兊脠A潤(rùn)平滑,因?yàn)槌饬椈蓜哦认禂?shù)的非線性特性,對(duì)于不同的網(wǎng)格產(chǎn)生的斥力不同,當(dāng)彈簧區(qū)域內(nèi)的網(wǎng)格形變被斥力抵消一部分后,位移修正程度小或不受到斥力修正的網(wǎng)格會(huì)重疊甚至穿過(guò)修正程度大的網(wǎng)格,造成網(wǎng)格拓?fù)浣Y(jié)構(gòu)被破壞,這也是傳統(tǒng)線性肌模型需要解決的第二個(gè)問(wèn)題。圖4是三角網(wǎng)格在外力作用下發(fā)生形變的示意圖,三角網(wǎng)格拓?fù)浣Y(jié)構(gòu)破壞的原因是因?yàn)榫W(wǎng)格頂點(diǎn)與其對(duì)邊重疊甚至越過(guò)了對(duì)邊,如圖4中(c)和(d)兩種情況。
(a) (b)
(c) (d)圖4 三角網(wǎng)格受力形變分析
為了解決該問(wèn)題,參考皮膚彈性模型[15],對(duì)網(wǎng)格模型引入邊約束。邊約束的思想是在三角網(wǎng)格的頂點(diǎn)與其所在三角面片的對(duì)邊之間垂線相連建立質(zhì)點(diǎn)彈簧模型,其作用使得節(jié)點(diǎn)始終不能越過(guò)對(duì)邊網(wǎng)格。
(9)
式中:di為初始狀態(tài)下彈簧pei的長(zhǎng)度;β是應(yīng)力強(qiáng)度因子;δ是應(yīng)力尺度因子。
圖5 邊約束模型
在加入兩種改進(jìn)后的人臉模型中肌肉作用范圍內(nèi)網(wǎng)格頂點(diǎn)除了受到來(lái)自線性肌的拉力fmp,還受到斥力彈簧的斥力fR以及周圍網(wǎng)格的邊約束力fers的合力,總受力變?yōu)椋?/p>
(10)
若要實(shí)現(xiàn)肌肉模型控制人臉實(shí)現(xiàn)表情動(dòng)畫,需要給三維人臉模型裝配上相應(yīng)肌肉模型的固定端、移動(dòng)端、起始半徑、終止半徑和控制范圍等參數(shù)。在以往研究中很少有對(duì)特定人臉相應(yīng)肌肉參數(shù)特定化的研究,多為手動(dòng)調(diào)試實(shí)現(xiàn)。為了減少手動(dòng)調(diào)試時(shí)間,快速實(shí)現(xiàn)肌肉參數(shù)特定化,本節(jié)基于一般人臉與特定人臉的特征映射關(guān)系,提出一種自適應(yīng)肌肉參數(shù)獲取方法。
人臉主要由臉形、眼睛、鼻子、嘴唇等元素組成,一般人臉模型可以看作一張具有所有人臉基本元素但不具備任何明顯特征的人臉,而根據(jù)人臉照片特征點(diǎn)對(duì)一般人臉模型形變生成的具有個(gè)性特征的人臉模型便是特定人臉模型。一般人臉模型與形變生成的特定人臉模型均具有MPEG- 4定義的人臉通用特征。
參考Waters肌肉模型,在人臉模型上設(shè)置18個(gè)線性肌模型用來(lái)合成表情,具體分布情況見(jiàn)圖6(a),因?yàn)樘囟ㄈ四樐P偷男巫兂潭炔⒉皇钦w均衡分布,通過(guò)分析線性肌與MPEG- 4定義的人臉特征點(diǎn)的分布(圖6(b)),將人臉模型劃為6個(gè)區(qū)塊(左半張臉劃分見(jiàn)圖6(c)),劃分時(shí)盡可能讓功能相同的肌肉模型分布在同一區(qū)塊內(nèi),每個(gè)區(qū)塊內(nèi)肌肉模型的參數(shù)便取決于該區(qū)塊的局部形狀分析。
(a) (b) (c)圖6 肌肉模型分布與區(qū)塊劃分
將一般人臉模型的每個(gè)肌肉向量的所有參數(shù)設(shè)為pk,特定人臉模型對(duì)應(yīng)肌肉參數(shù)為qk,通過(guò)分析肌肉向量與人臉特征點(diǎn)的關(guān)系和所在區(qū)塊的形狀特征,得到參數(shù)的映射關(guān)系使pk→qk。
肌肉模型參數(shù)中最為重要的便是肌肉端點(diǎn)位置,它是能擬合真實(shí)感人臉表情的基礎(chǔ)。Waters設(shè)置肌肉模型時(shí),參考了真實(shí)人臉表情肌分布,由人臉解剖學(xué)知識(shí)可知[16],肌肉通過(guò)收縮牽扯五官和皮膚位置形狀改變產(chǎn)生表情,對(duì)于不同的人臉均有著相同的面部表情肌結(jié)構(gòu),且表情肌的分布位置相對(duì)其作用區(qū)域的五官特征的位置是大致不變的,如此才可使長(zhǎng)相各異的人們產(chǎn)生同樣的表情。但每個(gè)區(qū)塊內(nèi)可能有上千個(gè)頂點(diǎn),直接從區(qū)塊內(nèi)根據(jù)特征點(diǎn)相對(duì)位置關(guān)系搜尋符合要求的頂點(diǎn)耗時(shí)長(zhǎng)且誤差大,為了縮小查找范圍,再對(duì)區(qū)塊進(jìn)行細(xì)分。對(duì)于人臉劃分后的區(qū)塊Si(i=1,2,3,…,6),其寬度w、高度h和深度d分別是所在區(qū)塊內(nèi)頂點(diǎn)坐標(biāo)在X軸、Y軸和Z軸上最大與最小的差值。因?yàn)槿S人臉模型是一個(gè)由曲面構(gòu)成的模型,對(duì)于一般人臉模型和特定人臉模型,都沿著X軸和Y軸方向分別將對(duì)應(yīng)區(qū)塊等分為M和N份。對(duì)于人臉區(qū)塊中任意網(wǎng)格頂點(diǎn)p,它對(duì)應(yīng)的單元塊編號(hào)為Vij:
(11)
式中:cx=(Xmax-Xmin)/M;cy=(Ymax-Ymin)/N。
對(duì)于肌肉向量的兩個(gè)端點(diǎn),可以通過(guò)與其相近的三個(gè)人臉特征點(diǎn)的相對(duì)位置關(guān)系獲得。設(shè)一般人臉上該肌肉端點(diǎn)V和對(duì)應(yīng)的三個(gè)相近人臉特征點(diǎn)為A、B和C,特定人臉上對(duì)應(yīng)的肌肉端點(diǎn)為V′,對(duì)應(yīng)特征點(diǎn)為A′、B′和C′。端點(diǎn)V所在的單元塊編號(hào)為Vmn,則在特定人臉該區(qū)塊內(nèi)同樣位置編號(hào)的單元塊內(nèi),搜索滿足以下關(guān)系的頂點(diǎn)坐標(biāo):
(12)
式中:D(,)是兩點(diǎn)間在曲面上的測(cè)地線距離;δ是設(shè)置的閾值。若單元塊內(nèi)滿足位置關(guān)系的頂點(diǎn)不止一個(gè),采用求和均值的方式選定。
(13)
本文實(shí)驗(yàn)研究所用特定人臉模型由二維圖片重建獲得,共獲取45個(gè)不同正臉樣本數(shù)據(jù),一般人臉模型使用人臉制作軟件FaceGen Modeller導(dǎo)出,由12 108個(gè)三角面片、36 324個(gè)頂點(diǎn)組成。實(shí)驗(yàn)采用Intel? CoreTMi7- 8500U 2.0 GHz、16 GB內(nèi)存的PC平臺(tái)。
第1節(jié)中針對(duì)Waters傳統(tǒng)肌肉模型的缺點(diǎn)提出兩種改進(jìn),一是加入斥力彈簧模型,二是在網(wǎng)格模型中加入邊約束。為了驗(yàn)證本文方法的效果,分別在二維肌肉模型上進(jìn)行仿真,并與當(dāng)前方法進(jìn)行對(duì)比。
圖7是同一線性肌模型在相同較大受力系數(shù)情況下二維網(wǎng)格形變效果。文獻(xiàn)[17]通過(guò)設(shè)置形變終止半徑來(lái)解決尖銳突出的問(wèn)題。可明顯看出,本文方法與文獻(xiàn)[17]均能解決近固定端的尖銳突出,且均存在網(wǎng)格拓?fù)浣Y(jié)構(gòu)被破壞的問(wèn)題。但對(duì)比可見(jiàn),文獻(xiàn)[17]改善后的網(wǎng)格形變?cè)诮K止半徑處戛然而止,形變過(guò)渡突兀,最終形變處不像真實(shí)表情皮膚形變一樣圓滑。而本文所提出的斥力彈簧方法改善后的網(wǎng)格形變效果過(guò)渡自然,在近固定端逐漸變得圓潤(rùn)平滑。
(a) 原始線性肌模型
(b) 加入文獻(xiàn)[17]方法
(c) 加入本文斥力彈簧方法圖7 尖銳突起問(wèn)題改善效果
圖8是同一線性肌模型在相同過(guò)大受力系數(shù)情況下二維網(wǎng)格拓?fù)浣Y(jié)構(gòu)崩潰效果。文獻(xiàn)[18]提出對(duì)網(wǎng)格產(chǎn)生的位移進(jìn)行約束改善拓?fù)浣Y(jié)構(gòu)被破壞的問(wèn)題。圖8中改善前后效果對(duì)比證明了文獻(xiàn)[18]方法與本文邊約束方法均能解決網(wǎng)格因受力過(guò)大而超出肌肉模型控制區(qū)域的問(wèn)題,但文獻(xiàn)[18]方法改善后在肌肉控制區(qū)域內(nèi)部網(wǎng)格仍然存在頂點(diǎn)與對(duì)邊重疊的現(xiàn)象,而本文所提出的邊約束方法改善后肌肉控制區(qū)域內(nèi)部網(wǎng)格間也無(wú)重疊現(xiàn)象。
(a) 原始線性肌模型
(b) 加入文獻(xiàn)[18]方法
(c) 加入本文邊約束方法圖8 網(wǎng)格拓?fù)浣Y(jié)構(gòu)破壞問(wèn)題改善效果
圖9是在三維人臉模型上以左顴大肌為參考肌肉加入本文所提出的兩種方法改進(jìn)前后對(duì)比結(jié)果,上圖為改進(jìn)前,下圖為改進(jìn)后。可以看出,改進(jìn)后的線性肌模型能明顯避免網(wǎng)格拓?fù)浔黄茐模⒕徍土斯潭ǘ颂幖怃J突出現(xiàn)象。
圖9 改進(jìn)前后三維人臉肌肉變形效果
圖10 人臉建模和肌肉端點(diǎn)定位
表1 左半張臉肌肉參數(shù)誤差值
經(jīng)過(guò)多次測(cè)試,本文方法可以大大縮短為三維人臉配置肌肉模型的時(shí)間,能在10分鐘至20分鐘內(nèi)完成肌肉模型參數(shù)計(jì)算和后續(xù)微調(diào),與當(dāng)前主流手動(dòng)添加模型相比,效率明顯提升。特定人臉模型裝配上肌肉模型后,能通過(guò)調(diào)整受力系數(shù),模擬出真實(shí)表情。
本文提出一種基于改進(jìn)肌肉模型的自適應(yīng)參數(shù)獲取方法。針對(duì)傳統(tǒng)肌肉模型的缺點(diǎn),對(duì)線性肌提出兩點(diǎn)改進(jìn),一是在肌肉模型中加入斥力彈簧模型;二是對(duì)網(wǎng)格進(jìn)行邊約束。經(jīng)過(guò)實(shí)驗(yàn)發(fā)現(xiàn)改進(jìn)效果好,杜絕了網(wǎng)格拓?fù)涫軗p壞的問(wèn)題。自適應(yīng)肌肉參數(shù)通過(guò)特定人臉與一般人臉的映射關(guān)系獲得,顯著提升了為三維人臉配置肌肉模型的效率,減少了表情合成所需時(shí)間。
但是本文的研究均基于線性肌,對(duì)于控制眼睛和嘴巴開(kāi)閉的括約肌模型沒(méi)有研究,下一步將在人臉模型中加入括約肌,并研究其自適應(yīng)參數(shù)算法。