吳志誠, 陶玲鳳
(蕪湖職業(yè)技術(shù)學(xué)院 藝術(shù)傳媒學(xué)院,安徽 蕪湖 241000)
隨著圖像處理技術(shù)的不斷進(jìn)步,三維建模技術(shù)應(yīng)用越來與廣泛,特別是在影視動畫制作方面,已經(jīng)成為主流技術(shù)。傳統(tǒng)的人臉三維建模技術(shù)大多采用專用軟件(3DMax等)實(shí)現(xiàn),該方法具有精度高、適應(yīng)性強(qiáng)等特點(diǎn)[1],但是缺點(diǎn)也是顯而易見的,專用軟件成本高、效率低、建模過程復(fù)雜且對特定人臉建模不理想,由此可見,采用計(jì)算機(jī)技術(shù)直接實(shí)現(xiàn)快速三維人臉重建具有巨大的經(jīng)濟(jì)和社會價(jià)值。目前來說,在直接構(gòu)建三維人臉的研究上,國內(nèi)外主流方法主要有兩種,第一種是基于三維激光掃描設(shè)備的直接采集法,該方法具有采集數(shù)據(jù)量豐富、模型立體感和真實(shí)感較強(qiáng)[2],但是價(jià)格昂貴且只能針對多張照片而言,單一照片的掃描效果不佳;第二種方法是基于給定真實(shí)照片,直接重構(gòu)人臉三維造型,該方法具有簡單易行、價(jià)格低廉、適應(yīng)性較強(qiáng)等優(yōu)勢[3],但是精度較低,在精度要求不是很高的場合是最佳選擇。本文基于第二種方法開發(fā)了一種基于分區(qū)識別的一般人臉特征提取算法,可以較好地實(shí)現(xiàn)真實(shí)照片的三維重構(gòu)工作,該算法可以廣泛應(yīng)用于影視動畫制作領(lǐng)域。
由于人臉圖像數(shù)據(jù)是連續(xù)的,為了節(jié)約資源,提高人臉識別效率,采用核心特征點(diǎn)選取法來進(jìn)行人臉識別。顧名思義,核心特征點(diǎn)就是僅對選取的特征點(diǎn)進(jìn)行識別而忽略其它特征點(diǎn),核心特征點(diǎn)選取的好壞直接影響到人臉識別效果,通過查閱大量相關(guān)文獻(xiàn),結(jié)合自身研究感悟,選取眼睛核心特征點(diǎn)、鼻子核心特征點(diǎn)、嘴唇核心特征點(diǎn),通過檢測并標(biāo)定上述核心特征點(diǎn),對一般三維人臉模型進(jìn)行調(diào)整,進(jìn)而生成與真實(shí)照片相對應(yīng)的個性化人臉三維模型[4]。
一般來說,眼睛核心特征點(diǎn)的外形為大體對稱的桃仁形狀,其外漏的結(jié)構(gòu)包括近似球形的眼球部分和上下眼皮部分,結(jié)合我們的生活經(jīng)驗(yàn)可知,上眼皮呈標(biāo)準(zhǔn)弧形,以眼球中線的對稱點(diǎn)為中心點(diǎn),形成一個較大的弧線,下眼皮呈非標(biāo)準(zhǔn)弧形,以眼球中線的對稱點(diǎn)為中心點(diǎn),形成一個較小的弧線;鼻子核心特征點(diǎn)為其大致位于整個臉輪廓的物理中心點(diǎn),其周圍被眼鏡和嘴唇環(huán)繞,鼻子特征點(diǎn)的大致外形呈現(xiàn)較規(guī)則的三棱錐形狀,中間有分割,左右各有較為對稱的鼻孔一個;嘴唇特征點(diǎn)其外形大致呈規(guī)則的弓形,外形略微突出,上下弓形弧度吻合較好。
基于上述選取的人臉核心特征點(diǎn)和給出的各個特征點(diǎn)的主要外形特征,本小節(jié)設(shè)計(jì)了一種基于圖像的人臉核心特征點(diǎn)檢測算法,可以快速實(shí)現(xiàn)人臉核心特征點(diǎn)的檢測,如圖1所示,算法主要流程如下:S1:首先進(jìn)行真實(shí)照片的邊緣化處理,統(tǒng)一其尺寸和分辨率;S2:對預(yù)處理過的人臉圖像進(jìn)行相似度計(jì)算并對圖像進(jìn)行灰度化處理;S3:根據(jù)選定的人臉核心特征點(diǎn)進(jìn)行核心特征點(diǎn)的識別,針對眼睛核心特征點(diǎn)[5],基于顏色的特征識別法(眼睛的顏色是黑色的,在臉部唯一),針對鼻子核心特征點(diǎn),采用分段曲線識別法(形狀為三棱錐),針對嘴唇核心特征點(diǎn),采用對稱曲線識別法;S4:整合特征點(diǎn)識別信息,為標(biāo)定做準(zhǔn)備。
圖1基于圖像的人臉核心特征點(diǎn)檢測算法流程圖
圖2基于圖像的人臉核心特征點(diǎn)標(biāo)定算法流程圖
本小節(jié)進(jìn)行基于圖像的人臉核心特征點(diǎn)標(biāo)定算法設(shè)計(jì),可以快速實(shí)現(xiàn)人臉核心特征點(diǎn)的標(biāo)定,如圖2所示,算法主要流程如下:S1:根據(jù)整合的人臉核心特征點(diǎn)檢測信息,進(jìn)行分時(shí)特征點(diǎn)標(biāo)定操作;S2:根據(jù)變形模板計(jì)算眼睛核心特征點(diǎn)的主輪廓并進(jìn)行輪廓標(biāo)定操作;S3:根據(jù)人臉主輪廓物理對稱點(diǎn)和雙眼連線對稱軸上的交叉區(qū)域確定鼻子核心特征點(diǎn)的輪廓信息并進(jìn)行標(biāo)定操作[6];S4:根據(jù)嘴唇的特色確定其大致輪廓,然后定位信息準(zhǔn)確確定其外形輪廓并進(jìn)行標(biāo)定操作;S5:整合特征點(diǎn)標(biāo)定信息,為人臉三維建模做準(zhǔn)備。
在上文完成人臉核心特征點(diǎn)檢測和標(biāo)定的基礎(chǔ)上,為了提高系統(tǒng)整體的適應(yīng)性,需要對一般人臉特征進(jìn)行提取,此時(shí),針對的對象不僅僅局限于真實(shí)照片,可以是任何包含人臉圖像的影像載體。為了實(shí)現(xiàn)上述目的,設(shè)計(jì)了一種基于分區(qū)識別的一般人臉特征提取算法,該算法主要思想是首先通過粗略劃分人臉整體輪廓為特定的特征區(qū)[7],進(jìn)而針對每一個特征區(qū)進(jìn)行細(xì)化識別,識別步驟與上文類似。完成上述步驟后,需要對模型進(jìn)行局部和整體調(diào)整,生成特定的三維人物頭像,如圖3所示,該過程要用到徑向基函數(shù)(RBF)的插值和位移傳播子函數(shù),該過程的核心代碼如下:
const int N=80;
vector
vector
const int H=18; //設(shè)置隱藏節(jié)點(diǎn)的個數(shù)
vector
vector
double Green[N][H];
vector
const double eta=0.01; //設(shè)置學(xué)習(xí)效率
const double ERR=0.6;
const int ITERATION_CEIL=1000;
vector
圖3徑向基函數(shù)(RBF)工作示意圖
在實(shí)現(xiàn)基于分區(qū)識別的一般人臉特征提取算法后,就可以利用采集到的核心特征點(diǎn)信息進(jìn)行三維人臉建模,基于應(yīng)用場合的實(shí)際考慮,本文著重關(guān)注如何快速而精確地恢復(fù)人臉的三維圖像形狀信息和紋理信息[8],因此,建模過程分為兩步,本小節(jié)僅論述三維人臉幾何模型重建,三維人臉模型重建的基本思想是根據(jù)上文提出的核心特征點(diǎn)信息對通用的三維人臉模型進(jìn)行個性化處理,以精確重現(xiàn)真實(shí)照片中的人物圖像。由于真實(shí)照片中的不包括人臉圖像深度信息,選取通用三維人臉模型的典型值,基于上述論述,如圖4所示,三維人臉建模算法主要流程如下:S1:首先選取通用三維人臉模型[9],選擇Candide-3通用人臉三維模型并對相關(guān)參數(shù)進(jìn)行設(shè)置;S2:根據(jù)上文得出的核心特征點(diǎn)對通用人臉三維模型進(jìn)行全局調(diào)整,全局調(diào)整的目的是符合人機(jī)工程學(xué)標(biāo)準(zhǔn),一般應(yīng)使三維人臉模型的眼睛核心特征點(diǎn)、嘴唇核心特征點(diǎn)與真實(shí)照片中的投影特征點(diǎn)相吻合;S3:三維人臉模型在經(jīng)過全局調(diào)整的基礎(chǔ)上進(jìn)行局部調(diào)整,局部調(diào)整的目的是凸顯三維人臉圖像的個性化[10],主要保證真實(shí)照片中的人臉與三維模型中的人臉器官的大小、間距和位置完全相同;S4:對非核心特征點(diǎn)進(jìn)行程序化調(diào)整。與上述過程相對應(yīng),核心代碼如下(基于Opencv插件):
Video Candide-3 camera(0); //選擇Candide-3通用人臉三維模型
while (true)
{
Mat camerFrame;
camera >> camerFrame;
if (camerFrame.Quanju())
std::cerr << "全局調(diào)整完成" << std::endl; //全局調(diào)整成功
getchar.Jubu();
exit(1);
std::cerr << "局部調(diào)整完成" << std::endl; //局部調(diào)整成功
Mat displayedFrame(camerFrame.Feite(),CV_8UC3); //進(jìn)行非特征點(diǎn)調(diào)整
}
圖4 三維人臉建模算法流程示意圖
圖5柱面映射模式示意圖
上文已經(jīng)指出,三維人臉建模過程分為兩步,本小節(jié)給出建模的第二步,在得出經(jīng)過局部調(diào)整的三維人臉模型的基礎(chǔ)上進(jìn)一步進(jìn)行后期真實(shí)感構(gòu)建設(shè)計(jì)[11],主要工作是從真實(shí)照片中獲取人臉面部的紋理信息并融合到三維人臉模型上,使模型具有真實(shí)感?;趯?shí)際情況,采用紋理映射來進(jìn)行真實(shí)感構(gòu)建,如圖5所示,采用柱面映射模式,過程是首先把采集到的三維紋理映射到紋理平面上,然后與真實(shí)照片提取的真實(shí)紋理進(jìn)行對比,最后根據(jù)對比結(jié)果進(jìn)行紋理調(diào)整。
為了實(shí)際驗(yàn)證上文所提算法的有效性和實(shí)用性,在vs2008環(huán)境下采用OpenGL三維開源插件接口開發(fā)了一款三維人臉自動建模系統(tǒng),該系統(tǒng)可以實(shí)現(xiàn)通用人臉三維模型的導(dǎo)入與設(shè)置、人臉核心特征點(diǎn)檢測與標(biāo)定、一般人臉特征點(diǎn)提取、基于真實(shí)照片的三維人臉個性化建模、后期真實(shí)感渲染等功能,系統(tǒng)實(shí)際運(yùn)行界面如圖6所示。
系統(tǒng)開發(fā)的三維人臉自動建模系統(tǒng)首先獲得原始的三維灰度數(shù)據(jù)圖像,然后進(jìn)行填洞插值操作,此后重新對圖像進(jìn)行采樣,防止spike凸起的出現(xiàn)[12],由于人臉一般來說都是鼻尖具有最大深度,首先進(jìn)行鼻尖檢測,通過上文給出的算法重構(gòu)鼻尖,然后依次進(jìn)行嘴唇重構(gòu)和眼睛重構(gòu),最終進(jìn)行降噪、去spike操作得到如圖7所示的個性化三維人臉模型。
圖6三維人臉自動建模系統(tǒng)界面示意圖圖7三維人臉自動建模系統(tǒng)得到的最終人臉三維模型
本文研究了基于真實(shí)照片的三維模型生成方法及其在影視動畫制作領(lǐng)域的應(yīng)用情況,依次設(shè)計(jì)了人臉核心特征點(diǎn)檢測與標(biāo)定算法、一般人臉特征提取算法、三維人臉建模設(shè)計(jì)算法、后期真實(shí)感構(gòu)建算法等,在此基礎(chǔ)上,在vs2008環(huán)境下采用OpenGL三維開源插件接口開發(fā)了一款三維人臉自動建模系統(tǒng)并對系統(tǒng)的性能進(jìn)行了實(shí)際測試。實(shí)際測試表明,基于真實(shí)照片的三維模型生成方法建模速度快、信息需求量較小、建模精度較高,重構(gòu)出的人臉三維模型具有較強(qiáng)的真實(shí)感,可以較好滿足該技術(shù)在影視動畫制作領(lǐng)域的應(yīng)用需求,具有一定的實(shí)際推廣價(jià)值。