包永堂 齊 越
1(山東科技大學計算機科學與工程學院 山東青島 266590) 2(虛擬現(xiàn)實技術(shù)與系統(tǒng)國家重點實驗室(北京航空航天大學) 北京 100083) 3(北京航空航天大學青島研究院 山東青島 266100) (baozi0221@163.com)
頭發(fā)是人類特征的重要組成部分,是判斷一個人的年齡、背景及身份等的重要依據(jù)[1].因此頭發(fā)建模是虛擬現(xiàn)實和計算機圖形學需要研究的重要內(nèi)容之一.一個正常人的頭發(fā)大約10萬多根,數(shù)量很大;頭發(fā)直徑微小,形狀、結(jié)構(gòu)非常復雜,構(gòu)造逼真3D頭發(fā)模型的難度很大.因此開展3D頭發(fā)建模研究具有重要的理論意義.在數(shù)字游戲和影視中,虛擬角色具有逼真的頭發(fā)模型,不僅能提供豐富的視覺特性,而且能以特定的語言描述人物的特征和感情等.此外,在化妝、廣告等領(lǐng)域?qū)︻^發(fā)建模也有大量應用需求.因此研究頭發(fā)建模具有重要的應用價值.
早期頭發(fā)建模主要采用參數(shù)化的幾何建模方式[2-3],通過設置不同的參數(shù)來表示頭發(fā)[4-6].這些參數(shù)表示涉及參數(shù)曲面表示頭發(fā)、三棱鏡形式的頭發(fā)縷或廣義圓柱體.一些工作使用2D表面來表示頭發(fā)組[7-9],這類方法大多使用如非均勻有理B樣條(non-uniform rational B-splines, NURBS)的曲面來減少用于建立頭發(fā)部分模型的幾何對象的數(shù)量.發(fā)束、簇、縷和圓柱模型被作為直觀的方法來控制以組的形式表示的多重頭發(fā)的位置和形狀[10-14].這些方法減少了用于定義發(fā)型的可控參數(shù)的數(shù)量,用戶可以通過編輯曲線的位置來控制頭發(fā)的形狀.使用分層次的廣義圓柱可以表示復雜的頭發(fā)幾何體[15-16],在建模過程中允許用戶選擇期望的控制水平.較高層次的聚集操作能夠提供快速的全局形狀編輯的有效方式,而較低水平的聚集允許對詳細幾何體直接操作.盡管參數(shù)化建模方法可以被用來快速地生成頭發(fā)發(fā)型并進行仿真,但是由于使用頭發(fā)條的表示方式,可以被建模的頭發(fā)發(fā)型受到了限制.
同早期頭發(fā)建模方式不同,當前頭發(fā)建模主要有2種方法:1)基于物理的頭發(fā)建模方法[17-19],采用符合物理規(guī)律的頭發(fā)模型,通過設置相關(guān)參數(shù)構(gòu)造出不同的頭發(fā),建模過程不直觀、難以控制,計算量很大,構(gòu)造的模型逼真度不高;2)基于圖像的頭發(fā)建模方法,利用采集的頭發(fā)數(shù)據(jù)構(gòu)造頭發(fā)模型,具有建模速度快、模型逼真度高等優(yōu)點,近幾年受到研究者重視,出現(xiàn)了許多研究成果.
基于圖像的頭發(fā)建模方法大量融合計算機視覺的理論和工作,主要用于解決發(fā)型重建的問題,相關(guān)方法側(cè)重于得到與實際照片近似的頭發(fā)模型.當前,基于圖像的頭發(fā)建模方法還是新的研究領(lǐng)域,有許多科學問題急需解決,主要包括:如何得到與采集數(shù)據(jù)在發(fā)絲級別對應的逼真建模結(jié)果?如何得到發(fā)絲的生長分布與真實近似的結(jié)果?如何構(gòu)造動態(tài)頭發(fā)模型,有效解決動態(tài)頭發(fā)碰撞和遮擋問題?如何編輯、重用已有的靜態(tài)或動態(tài)頭發(fā)模型?本文以基于圖像的頭發(fā)建模技術(shù)為主要論述對象,從基于單幅圖像的頭發(fā)建模、基于多幅圖像的靜態(tài)頭發(fā)建模、基于視頻的動態(tài)頭發(fā)建模以及頭發(fā)建模結(jié)果的編輯重用等方面,對當前已有的方法分別進行分析和總結(jié),提出了該領(lǐng)域當前存在的問題和挑戰(zhàn),并指出了將來需要重點關(guān)注的研究方向.
近年來,一些基于圖像的頭發(fā)建模方法開始探討利用單幅圖像進行頭發(fā)建模的可能.根據(jù)重建方式的不同,基于單幅圖像的頭發(fā)建模方法主要有2種方式:1)基于方向場的頭發(fā)建模;2)基于數(shù)據(jù)驅(qū)動的頭發(fā)建模.
基于方向場的單幅圖像頭發(fā)建模方法從單視點的照片中生成3D方向場,從頭皮發(fā)根處生長出發(fā)絲,構(gòu)造出在單視點下真實的3D頭發(fā)模型.此類方法的難點在于如何構(gòu)造逼真的3D方向場.2012年Chai等人[20]首次基于單幅肖像照片構(gòu)造3D頭發(fā)模型,實現(xiàn)了對照片中頭發(fā)的編輯,如圖1所示.他們生成的模型在視覺上與原圖像形似,同時他們的頭發(fā)模型是發(fā)絲級別的表示,因此可以對頭發(fā)進行許多有趣的編輯和操作,例如為不同的人物交換發(fā)型,或者轉(zhuǎn)換觀察視點.但是這一方法生成的頭發(fā)模型不具有物理正確性,其頭發(fā)由漂浮在薄殼中的頭發(fā)片段構(gòu)成,而不是一根根從頭皮生長出的完整頭發(fā).
Fig. 1 Hair modeling from single image[20]圖1 基于單幅圖像的頭發(fā)建模方法[20]
為了得到具有空間連續(xù)性的更加符合物理的頭發(fā)模型,2013年Chai等人[21]繼續(xù)了之前的工作,改進了方法中存在的物理不夠真實的特點.他們利用用戶的簡單交互,為方向場提供了指引方向,生成了完整的物理可靠的方向場.從頭皮生長出頭發(fā),構(gòu)造出物理上更逼真的頭發(fā)模型,從而可以對發(fā)型進行修剪、增加頭發(fā)、進行簡單的頭發(fā)仿真等操作.在這一工作中,他們還展示了從單視點視頻中重建頭發(fā)模型并進行編輯的結(jié)果,盡管他們的結(jié)果比較真實,但由于單視點下采集的信息少,他們也僅能保證建模結(jié)果在單視點投影下近似真實.
Fig. 2 Hair modeling result[22]圖2 頭發(fā)建模方法結(jié)果[22]
Echevarria等人[22]使用特征保留的顏色濾波和抽象的幾何細節(jié)構(gòu)建3D頭發(fā)模型,實現(xiàn)了表面頭發(fā)模型的3D打印,如圖2所示.他們的方法生成的頭發(fā)模型能夠保留模型結(jié)構(gòu)細節(jié),適用于傳統(tǒng)的雕像制作,但卻不能生成發(fā)絲級別的精確頭發(fā)模型.Yeh等人[23]從具有連貫的分層和遮擋關(guān)系的單張卡通圖片中生成頭發(fā)模型,但由于生成的頭發(fā)模型是2.5D的,并不能保證頭發(fā)模型建模和編輯的真實性.2015年Chai等人[24]提出了一種基于混合方式的高質(zhì)量頭發(fā)建模方法.利用單幅圖像對應一個參數(shù)化的可變形臉部模型,利用遮擋和輪廓限制重建出基本形狀;利用從陰影計算形狀(shape-from-shading)的方法,估計出頭發(fā)表面的法向量;利用3D螺旋線優(yōu)先的方法重建出頭發(fā)的幾何細節(jié).綜合這3方面信息,通過求解能量最小化方程構(gòu)建最終頭發(fā)的深度圖.用該方法得到的模型效果較為逼真,可以應用于重新渲染和3D打印等,但不具備物理真實性.2016年Ding等人[25]使用方向場和螺旋線匹配策略構(gòu)建單視點的頭發(fā)模型,結(jié)果如圖3所示.同文獻[20-22]提到的方法相比,該方法能夠生成更為精確的發(fā)絲深度估計,但最終頭發(fā)模型是由漂浮在薄殼中的頭發(fā)片段構(gòu)成,仍然不具有物理正確性.
Fig. 3 Single-view hair modeling by orientation & helix fitting[25]圖3 基于方向場和螺旋線匹配的單視點頭發(fā)建模結(jié)果[25]
Fig. 4 Single-view hair modeling using a hairstyle database[26]圖4 基于模型數(shù)據(jù)庫的單幅圖像頭發(fā)建模方法[26]
基于數(shù)據(jù)驅(qū)動的方法首先需要構(gòu)建頭發(fā)模型數(shù)據(jù)庫,之后從數(shù)據(jù)庫中查找生成3D頭發(fā)模型.最近,基于數(shù)據(jù)驅(qū)動的單幅圖像建模方法開始興起.2015年Hu等人[26]首次提出基于頭發(fā)模型數(shù)據(jù)庫的單幅圖像頭發(fā)建模方法.用戶在頭發(fā)圖像上交互輸入發(fā)絲引導曲線,他們的方法就能從頭發(fā)模型數(shù)據(jù)庫中查找出幾類對應的頭發(fā)模型,再根據(jù)頭發(fā)模型融合策略最終生成頭發(fā)模型,如圖4所示.該方法基于單幅照片首次生成了真3D的頭發(fā)模型,但其建模結(jié)果取決于用戶手工所畫引導發(fā)絲的質(zhì)量,同時也受限于頭發(fā)模型數(shù)據(jù)庫的大小.
2016年Chai等人[27]提出了一種基于單幅圖像的完全自動的頭發(fā)建模方法.他們將深度卷積神經(jīng)網(wǎng)絡應用到頭發(fā)分割和頭發(fā)生長方向估計中,構(gòu)建3D頭發(fā)模型樣例庫,研發(fā)了一種基于數(shù)據(jù)驅(qū)動的頭發(fā)匹配和建模方法,如圖5所示.同以往需要用戶交互的頭發(fā)建模方式[20-21,24,26]相比,該方法實現(xiàn)了自動頭發(fā)模型重建.但由于依賴于人臉對齊技術(shù),該方法并不適用于無人臉的圖像,建模結(jié)果的好壞也依賴于頭發(fā)模型數(shù)據(jù)庫的大小.
Fig. 5 Fully automatic hair modeling from a single image[27]圖5 全自動的單幅圖像頭發(fā)建模方法[27]
表1給出了基于方向場和基于數(shù)據(jù)驅(qū)動的2種單幅圖像的頭發(fā)建模方法在用戶控制程度、時間消耗、自動化程度和建模結(jié)果真實性等方面的比較,同時還給出了每種方法對應的典型參考文獻.從表1中我們可以看出,基于方向場的方法自動化程度較低,需要較多的用戶交互控制,建模速度相對較快,但建模結(jié)果不是真3D的;而基于數(shù)據(jù)驅(qū)動的單幅圖像頭發(fā)建模方法自動化程度較高,需要較少的用戶交互控制并且能夠得到3D的頭發(fā)模型,但所需花費的時間較多.
Table 1 Analysis of Two Types of Single-Image Based Hair Modeling Methods表1 基于單幅圖像的2種頭發(fā)建模方法分析
根據(jù)建模方式的不同,基于多幅圖像的靜態(tài)頭發(fā)建模方法可以分為基于方向場的多幅圖像靜態(tài)頭發(fā)建模方法和基于數(shù)據(jù)驅(qū)動的多幅圖像靜態(tài)頭發(fā)建模方法這2類.
基于方向場的多幅圖像靜態(tài)頭發(fā)建模方法的主要流程包括:采集靜態(tài)頭發(fā)圖像,根據(jù)圖像生成頭發(fā)的方向場、內(nèi)部場、基于樣例頭發(fā)等約束條件,用頭發(fā)追蹤生長等算法構(gòu)造出3D頭發(fā)模型.
Fig. 6 Filter-based hair modeling from multiple images[30]圖6 使用濾波函數(shù)的多幅圖像頭發(fā)建模方法[30]
1997年Kong等人[28]首次使用真實的頭發(fā)圖片重建出頭發(fā)模型.他們的方法先通過從不同視點采集的頭發(fā)照片構(gòu)建3D頭發(fā)體,隨后使用啟發(fā)式方法從頭發(fā)體中生成頭發(fā)模型.該方法只重建頭發(fā)幾何,并且僅適用于簡單的發(fā)型,并不保證頭發(fā)方向的可靠度.隨后,Grabli等人[29]提出利用頭發(fā)的光照性質(zhì),從圖像中提取頭發(fā)的局部方向場.他們的系統(tǒng)通過學習在不同控制光照條件下目標頭發(fā)的反射情況而完成重建,系統(tǒng)中獲取照片的視點是始終不變的.通過一個固定的視點和單獨的濾波器來檢測頭發(fā)絲的方向,他們的方法僅能重建頭發(fā)的一部分,并且需要嚴格控制光照條件.2004年P(guān)aris等人[30]通過多個濾波函數(shù)和不同的視點,把Grabli等人[29]的方法擴展為一種更準確的情況,得到了不錯的建模結(jié)果,如圖6所示.他們的策略是將一組待測試的方向濾波函數(shù)作用于一個2D圖像的局部區(qū)域,選取有最大可靠度的結(jié)果作為局部的方向.他們的方法獲取了頭發(fā)可見區(qū)域的方向信息,由此生成出關(guān)于原始發(fā)型可信的結(jié)果.Mao等人[31]基于繪制的草圖建立卡通頭發(fā)模型,但他們的方法僅能建立簡單的卡通頭發(fā)模型,不能夠構(gòu)建現(xiàn)實世界中的常見頭發(fā)模型.Wei等人[32]通過提取多視點下固有的幾何約束,進一步提升了Paris等人[30]方法的靈活性.該方法使用單個相機在普通光照條件下多視點采集頭發(fā)數(shù)據(jù),用三角化方法生成頭發(fā)3D方向場,定義粗糙的視覺殼作為頭發(fā)生長邊界,利用方向場構(gòu)造3D頭發(fā)模型,結(jié)果如圖7所示.他們的方法不再需要控制的光照條件,也不再需要復雜的設備,但很難構(gòu)造凹凸、卷曲的發(fā)型.
Fig. 7 Triangle-based hair modeling from multi-view images[32]圖7 三角化的多視點頭發(fā)建模方法[32]
隨著圖形學領(lǐng)域?qū)趫D像的靜態(tài)頭發(fā)建模方法的不斷關(guān)注,越來越多的研究者開始利用復雜而專門設計的采集設備達到高質(zhì)量的頭發(fā)建模.2008年P(guān)aris等人[33]引入了一種獨特的多視點采集系統(tǒng),能夠準確地得到外圍的發(fā)絲位置,從而得到逼真的建模結(jié)果,如圖8所示.這一工作利用文獻[30]中的方法分析圖像中的頭發(fā)方向,借助Wei等人[32]的多視點思想將方向轉(zhuǎn)化為3D的方向場.Paris等人設計的采集系統(tǒng),可以直接獲取三角化的表面頭發(fā).該工作把利用方向場從頭皮生長而來的頭發(fā)與表面發(fā)絲結(jié)合,得到整個頭發(fā)模型.
Fig. 8 Geometric and photometric acquisition of real hairstyles[33]圖8 采集幾何和頭發(fā)外觀的真實發(fā)型頭發(fā)建模方法[33]
為了生成發(fā)絲級別的頭發(fā)模型,Jakob等人[34]設計了一個淺焦深的采集系統(tǒng),能夠重建發(fā)絲級別的頭發(fā)模型.淺焦深的采集系統(tǒng)能夠精確地區(qū)分發(fā)絲并消除遮擋作用.該方法在不同的角度下,通過推進相機,掃描并拍攝整個頭發(fā)模型.根據(jù)單根發(fā)絲上某點最清晰的照片位置和焦距來判斷該發(fā)絲在拍攝方向上的位置,由多個拍攝方向進行三角化就可以得到該點在3D空間上的位置.該方法是少有的對應到發(fā)絲級別的采集頭發(fā)建模的方法.該方法使用了多個如圖9所示的濾波器在圖像上判斷評價最高的方向,得到發(fā)絲方向,以使得發(fā)絲的結(jié)合和生長更加可靠,這種估計方向的方法隨后被多次使用.但由于采集設備也相對復雜,該方法很難直接采集真人身上的頭發(fā).2012年Herrera等人[35]使用熱成像數(shù)據(jù)重建頭發(fā)模型,避免了使用RGB圖像建模時受光照、陰影等因素導致的頭發(fā)生長方向無法分析的問題.Beeler等人[36]使用多視點立體方法能夠同時重建稀疏的面部毛發(fā)和皮膚,但是由于發(fā)絲間的遮擋閉合等原因,他們的方法不能重建稠密的發(fā)型.
Fig. 9 Gabor filter in different angles to estimate orientation圖9 確定方向的Gabor濾波器
近年來,基于圖像的頭發(fā)建模方法開始向普通的多視點采集方式傾斜.Luo等人提出基于多視點[37]和寬基線[38]的頭發(fā)建模方法,利用多臺相機采集數(shù)據(jù),從頭發(fā)方向信息重建頭發(fā)外殼的幾何,結(jié)果如圖10和圖11所示.區(qū)別于傳統(tǒng)的基于顏色的幾何建模方法,該方法利用了在頭發(fā)照片中更具代表性的方向場來重建頭發(fā)外殼的幾何體.該方法獲取的頭發(fā)幾何具有較好的視覺效果,但該方法僅重建了頭發(fā)的表面幾何網(wǎng)格,并未重建出發(fā)絲級別的幾何形態(tài).
Fig. 10 Multi-view hair capture using orientation fields[37]圖10 基于多視點的頭發(fā)表面幾何重建[37]
Fig. 11 Surface construction of hairstyle using wide-baseline[38]圖11 基于寬基線的頭發(fā)表面幾何重建[38]
隨著計算機視覺技術(shù)在點云重建方法上的巨大發(fā)展,2013年Luo等人[39]提出了一種能重建發(fā)絲幾何的多視點的頭發(fā)采集重建方法,能夠得到結(jié)構(gòu)上具有連續(xù)性、發(fā)絲之間局部有序、更接近真實的頭發(fā)模型,如圖12所示.該方法并不直接從頭皮生長發(fā)絲,而是利用點云和方向場逐漸在頭發(fā)表面聚類出代表局部頭發(fā)結(jié)構(gòu)的發(fā)束,最后再從發(fā)束重建完整的發(fā)絲.但該方法重建的結(jié)果不能保持頭發(fā)內(nèi)部特性,發(fā)根和發(fā)絲的分布與真實情況也相差較大.為了生成外部與采集照片近似,內(nèi)部發(fā)根和發(fā)絲的分布接近真實的頭發(fā)模型,2016年Bao等人[40]提出了一種基于混合方向場的靜態(tài)頭發(fā)建模方法,他們提出的混合方向場是由多個方向場組合而成,考慮了發(fā)型內(nèi)部頭發(fā)之間的分布和外部頭發(fā)的結(jié)構(gòu)細節(jié).其建模結(jié)果如圖13所示.同文獻[32,39]相比,該方法能夠生成相對真實的頭發(fā)模型.
Fig. 12 Structure-aware hair capture[39]圖12 基于結(jié)構(gòu)的頭發(fā)建模[39]
Fig. 13 Static hair modeling from a hybrid orientation field[40]圖13 基于混合方向場的靜態(tài)頭發(fā)建模[40]
最近,基于數(shù)據(jù)驅(qū)動的多幅圖像靜態(tài)頭發(fā)建模方法得到快速發(fā)展.2014年Hu等人[41]提出一種基于數(shù)據(jù)驅(qū)動的頭發(fā)采集和重建方法,發(fā)束連接采用基于數(shù)據(jù)樣例匹配的方法,將重建過程中有用的發(fā)束信息自動組織起來,省去了采集圖像背景剔除等繁雜的數(shù)據(jù)預處理工作,實現(xiàn)了從采集數(shù)據(jù)到頭發(fā)3D幾何的自動建模,所構(gòu)造模型的逼真度與文獻[39]相似,但在視覺上和模型結(jié)構(gòu)上并沒有質(zhì)的改變.Yu等人[42]提出了一種基于圖像和CAD操作的混合頭發(fā)重建方法,該方法能夠重建多種復雜的發(fā)型,但是重建的結(jié)果并不能逼近于真實的采集頭發(fā)圖像.Hu等人[43]提出了一種基于數(shù)據(jù)驅(qū)動的可以自動重建辮子發(fā)型的頭發(fā)建模方法,該方法使用深度相機采集發(fā)型數(shù)據(jù),并使用數(shù)據(jù)庫中的辮子塊來匹配數(shù)據(jù),生成結(jié)構(gòu)合理的辮子頭發(fā)模型,結(jié)果如圖14所示.與文獻[39]中方法類似,在建模過程中該方法也需要提前手動將頭發(fā)幾何從采集圖像中分割出來,并且該方法也只能重建辮子頭發(fā)發(fā)型.為了魯棒地重建頭發(fā)模型,2017年Zhang等人[44]提出了一種基于4個視點圖像的數(shù)據(jù)驅(qū)動的頭發(fā)建模方法.該方法使用多源的頭發(fā)紋理合成算法,并不要求所有的輸入圖像必須來自相同的發(fā)型,能夠重建大部分的長直發(fā)型,但不能重建發(fā)髻和辮子等受約束的發(fā)型.
Fig. 14 Capturing braided hairstyles[43]圖14 辮子發(fā)型頭發(fā)建模[43]
表2給出了基于方向場和基于數(shù)據(jù)驅(qū)動的2種多幅圖像靜態(tài)頭發(fā)建模方法在所需照片數(shù)目、用戶控制程度、時間消耗和建模結(jié)果真實性等方面的比較,同時還給出了每種方法對應的典型參考文獻.從表2我們可以看出基于方向場的方法需要更多的輸入圖像,用戶控制程度相對較小,建模速度較慢,但建模結(jié)果更為真實;而基于數(shù)據(jù)驅(qū)動的方法需要較少的輸入圖像,用戶控制程度較大,建模速度較快,但建模質(zhì)量相對不夠真實.
Table 2 Analysis of Two Types of Multiple-Images Based Static Hair Modeling Methods表2 基于多幅圖像的2類靜態(tài)頭發(fā)建模方法比較
當前基于多幅圖像的頭發(fā)建模研究主要集中于靜態(tài)頭發(fā)幾何建模,對動態(tài)頭發(fā)建模方法涉及不多,動態(tài)頭發(fā)建模結(jié)果還不夠理想.
2007年Ishikawa等人[45]首次提出基于采集數(shù)據(jù)的動態(tài)頭發(fā)建模方法,利用采集數(shù)據(jù)構(gòu)造頭部和主頭發(fā)的運動矩陣,計算每一幀主頭發(fā)的位置,然后插值生成其余頭發(fā)的位置,但由于誤差累積等原因,導致很難準確計算每一幀對應的運動變化矩陣.Yamaguchi等人[46]使用時間平滑限制生成頭發(fā)序列,由于過度限制了頭發(fā)生長方向,該方法僅適用于頭部固定、運動統(tǒng)一的直發(fā)型.
2011年Luo等人[47]根據(jù)采集到的頭發(fā)圖像序列,對每一幀頭發(fā)模型均按照靜態(tài)頭發(fā)建模方法生成相應的3D頭發(fā)模型,隨后在時間域上對方向信息進行優(yōu)化,重建出各幀對應的表面幾何,最終在頭發(fā)表面生長出發(fā)絲線段作為最終結(jié)果,如圖15所示.盡管這種方法在每一幀的頭發(fā)建模結(jié)果與采集圖像都近似,但由于其沒有考慮頭發(fā)在相鄰幀之間的對應問題,也沒有重建出從頭皮生長的完整發(fā)絲,這一方法構(gòu)造的動態(tài)頭發(fā)模型結(jié)果并不理想.
Fig. 15 Surface reconstruction of dynamic hair capture[47]圖15 動態(tài)頭發(fā)表面重建結(jié)果[47]
Fig. 16 Dynamic hair modeling from single view[21]圖16 基于單視點的動態(tài)頭發(fā)建模[21]
為了便于標定和采集頭發(fā)數(shù)據(jù),F(xiàn)ukusato等人[48]提出了基于頭發(fā)束采集頭發(fā)運動的方法,該方法能夠重建發(fā)束級別的頭發(fā)運動,但卻無法應用于發(fā)絲級別的頭發(fā)模型.Chai等人[21]定義了由3D剛性變化矩陣和2D變形場構(gòu)成的頭發(fā)變化矩陣,基于單幅圖像生成了運動較真實的結(jié)果,頭發(fā)運動在單一視點投影下與采集數(shù)據(jù)接近,如圖16所示.由于誤差累積的影響,該方法只適用于局部相鄰幀之間變化較小且頭發(fā)運動幅度不能過大的情況.2012年Zhang等人[49]首先構(gòu)造各幀對應的3D頭發(fā)模型,然后提出一種基于粒子的局部最優(yōu)化方案,從相鄰各幀的對應關(guān)系中迭代生成主仿真頭發(fā)的速度場,并利用此速度場對初始的頭發(fā)幾何進行迭代優(yōu)化,實現(xiàn)了動態(tài)頭發(fā)建模,圖17展示了其動態(tài)建模過程的4幀結(jié)果.其結(jié)果得到了完整的頭發(fā)幾何,且各幀頭發(fā)的幾何形態(tài)連續(xù),頭發(fā)的運動較為自然.但該方法只適用于直發(fā),而且由于對頭發(fā)運動連續(xù)性的過度追求,其結(jié)果在各幀的幾何形態(tài)上與采集圖像差距較大.從圖17我們可以看到,各幀頭發(fā)幾何十分平滑,采集數(shù)據(jù)中頭發(fā)的幾何細節(jié)大部分丟失.
Fig. 17 Dynamic hair modeling by simulating guide hair[49]圖17 仿真主頭發(fā)的動態(tài)頭發(fā)建模結(jié)果[49]
早期基于數(shù)據(jù)采集的動態(tài)頭發(fā)建模主要從時間域上保證相鄰幀之間的對應和連貫,而沒有從空間域上考慮發(fā)絲間的對應關(guān)系.2014年Xu等人[50]提出一種基于時空優(yōu)化的動態(tài)頭發(fā)建模方法,從視頻中提取頭發(fā)運動路徑,在時間域和空間域上分別優(yōu)化,利用多視點的運動路徑和靜態(tài)頭發(fā)建模信息重建動態(tài)頭發(fā)模型,結(jié)果如圖18所示.該方法首次較為全面地構(gòu)造了動態(tài)頭發(fā)模型,得到了時間和空間上信息保留較為完整的建模結(jié)果,但是局限于直發(fā)或接近直發(fā)的發(fā)型,未能解決頭發(fā)與物體交互時出現(xiàn)的穿透問題,也不能處理比較復雜的頭發(fā)運動.2017年Hu等人[51]首次提出了重建動態(tài)頭發(fā)模型并估計運動發(fā)型的物理參數(shù).但他們的方法計算所需時間過長,并且重建和仿真的運動結(jié)果并不能與輸入數(shù)據(jù)很好地匹配.
Fig. 18 Dynamic hair capture using space-time optimization[50]圖18 基于時空優(yōu)化的動態(tài)頭發(fā)建模[50]
基于數(shù)據(jù)采集的動態(tài)頭發(fā)建模方法,通過分析真實的頭發(fā)運動形態(tài),構(gòu)造逼真的動態(tài)頭發(fā)運動模型,研究人員已經(jīng)從時間連續(xù)性和空間模型相似性上進行了上述大量的研究,但由于發(fā)絲之間的遮擋等原因,動態(tài)頭發(fā)建模現(xiàn)在還只能處理相對簡單的發(fā)型,無法精確構(gòu)造復雜發(fā)型的動態(tài)頭發(fā)運動序列.
表3給出了基于多幅圖像的靜態(tài)頭發(fā)建模方法和基于視頻的動態(tài)頭發(fā)建模方法在可建模發(fā)型、困難程度、時間消耗和建模結(jié)果真實性等方面的比較.從表3中我們可以看出,基于多幅圖像的靜態(tài)頭發(fā)建模方法可以重建各種發(fā)型,復雜程度也較低,所需時間較少并且建模結(jié)果相對真實,但只能重建單幀靜態(tài)頭發(fā)模型;而基于視頻的動態(tài)頭發(fā)建模方法能重建直發(fā)等簡單的發(fā)型,重建的困難較大,建模所需時間較多,但動態(tài)重建結(jié)果相對不夠真實.這是因為動態(tài)頭發(fā)建模方法不僅需要重建每一幀的頭發(fā)模型,而且需要保證各幀頭發(fā)模型在時間域和空間域上的連貫性.
Table 3 Analysis of Multiple-Images Based Static Hair Modeling Methods and Video-Based Dynamic Hair Modeling Methods
根據(jù)編輯方式的不同,對頭發(fā)建模結(jié)果的編輯重用可以分為基于幾何的頭發(fā)模型編輯重用方法和基于物理仿真的頭發(fā)模型編輯重用方法.基于幾何的編輯方法通過編輯頭發(fā)模型的外觀生成新的發(fā)型,基于物理的方法則通過物理仿真的形式對頭發(fā)模型進行編輯.
基于草圖的方式編輯生成發(fā)型是早期常用的頭發(fā)模型編輯方法.Choe等人[52]使用靜態(tài)發(fā)束模型和偽物理的方法交互構(gòu)建頭發(fā)模型.該方法能夠編輯生成發(fā)髻、編織辮子及凌亂的發(fā)型等,但他們的方法不能處理發(fā)束太過稠密的發(fā)型.Malik等人[53]使用草圖界面構(gòu)建和編輯頭發(fā)模型,用戶使用壓力敏感板即可模擬現(xiàn)實世界中的剪發(fā)、梳發(fā)、燙發(fā)等各類操作,也可以進行頭發(fā)種植、發(fā)型移植等,結(jié)果如圖19所示.從編輯結(jié)果可以看出,該方法生成的編輯結(jié)果相對不夠真實.
Fig. 19 Sketching interface for modeling and editing hairstyle[53]圖19 基于草圖界面的發(fā)型編輯建模[53]
隨后一些研究人員開始從用戶輸入中提取頭發(fā)生長相關(guān)信息,先構(gòu)建頭發(fā)物理模型或方向場,再編輯生成最終頭發(fā)模型.2007年Wither等人[54]使用草圖和物理模型編輯生成頭發(fā)模型,他們的方法從用戶輸入的草圖中提取頭發(fā)物理模型的相關(guān)參數(shù),再基于物理模型生成對應發(fā)型.該方法能夠生成相對復雜的發(fā)型,但編輯結(jié)果仍不夠逼真.Fu等人[55]提出了基于草圖界面的交互發(fā)型設計方法,結(jié)果如圖20所示.該方法從輸入草圖構(gòu)建頭發(fā)生長方向場,能夠快速構(gòu)建相對真實的方向場,但該方法只能編輯生成直發(fā)等相對簡單的發(fā)型.
Fig. 20 Editing orientation hairstyle by sketching[55]圖20 基于草圖的方向場發(fā)型編輯[55]
直接通過手工或從圖片中重建3D頭發(fā)模型都是相對復雜的過程.為了從已有發(fā)型中快速生成新的發(fā)型,2009年Wang等人[56]提出了一種基于樣例的頭發(fā)幾何合成方法,使用分層的頭發(fā)合成框架交互地編輯頭發(fā)幾何模型,從粗糙層頭發(fā)模型映射合成新的發(fā)型.如圖21(a)(b)可以編輯合成圖21(c)所示的結(jié)果.該方法能夠?qū)崿F(xiàn)特征保留的梳頭發(fā)以及不同發(fā)型間的細節(jié)轉(zhuǎn)移,但不適用于披散的長發(fā)型.Bonneel等人[57]開發(fā)了一種頭發(fā)外觀估計方法,能夠從一張照片中恢復出一個近似的3D頭發(fā)模型.他們的照片利用一個閃光燈和一個灰度卡在室內(nèi)拍攝,能夠生成一個與輸入照片在視覺上相似的發(fā)型結(jié)果,通過編輯可達到理想的建模效果.然而,由于在輸入照片上的限制,他們的方法無法對一般的日常人物照片進行計算.Chai等人[20]基于單視點照片構(gòu)造頭發(fā)模型,可以替換不同發(fā)型.他們的方法可以實現(xiàn)在圖像空間編輯頭發(fā)模型,但視角范圍不能太大.隨著頭發(fā)插值技術(shù)的發(fā)展,2013年Weng等人[58]提出了一種頭發(fā)插值肖像操作方法,編輯結(jié)果如圖22所示.該方法使用多尺度聚類的方法,有效計算2個或多個頭發(fā)模型之間多對多的對應關(guān)系,并根據(jù)給定的2個3D頭發(fā)模型產(chǎn)生一系列的頭發(fā)幾何模型.該方法能夠生成逼真的建模結(jié)果,但不符合物理規(guī)律.
Fig. 22 Hair interpolation for portrait morphing[58]圖22 頭發(fā)插值肖像編輯[58]
基于物理的編輯方法根據(jù)頭發(fā)物理模型實現(xiàn)編輯.傳統(tǒng)的頭發(fā)運動模型是根據(jù)物理模型構(gòu)造的.1991年Rosenblum等人[59]使用質(zhì)點彈簧模型構(gòu)造頭發(fā)運動模型,實現(xiàn)頭發(fā)運動仿真.Baraff等人[60]提出了隱式積分方法,有效求解硬彈簧模型,保證在較大的時間步長仍然保持解的穩(wěn)定性.Plante等人[61-62]使用了一個約束的質(zhì)點彈簧模型來進行仿真.這一工作利用不可分散的成體積的發(fā)束來表示頭發(fā).該方法中,每一束頭發(fā)都具有3層結(jié)構(gòu):第1層是由質(zhì)點彈簧模型描述的骨骼曲線,定義了大尺度的運動;第2層是一個可變形的外殼,包裹了骨骼曲線,定義了發(fā)束的形變;第3層是數(shù)目預定的發(fā)絲,存在于外殼內(nèi)部,不參與仿真計算,初始造型時發(fā)絲在發(fā)束內(nèi)部隨機分布.為了提高仿真速度,2004年Ward等人[63]采取自適應的層次結(jié)構(gòu)仿真頭發(fā)運動,該方法放棄了單純的發(fā)束表示,具有層次性、模擬速度快等優(yōu)點.Choe等人[17]提出了一種混合模型,保留了質(zhì)點彈簧模型和多剛體鏈模型的優(yōu)點,隱式求解動力學方程,魯棒地解決了頭發(fā)和身體間的碰撞問題.2008年Selle等人[19]改進了質(zhì)點彈簧模型,能夠約束頭發(fā)的扭率,該模型的參數(shù)設置簡單,特別適合表示直發(fā)等簡單發(fā)型,其建模結(jié)果如圖23所示.該成果近期得到了廣泛應用[21,49,64].
Fig. 23 A mass-spring model for hair simulation editing[19]圖23 改進的質(zhì)點彈簧頭發(fā)模型仿真編輯[19]
為了能夠處理卷發(fā)等更為復雜的發(fā)型,Bertails等人[18]引入一種新的頭發(fā)參數(shù)化方法,用處理靜態(tài)彈性桿的基爾霍夫模型,自動生成頭發(fā)的幾何模型,包括自然頭發(fā)的波浪和發(fā)卷.2006年他們進一步研究頭發(fā)運動模擬[65],將構(gòu)造單根頭發(fā)的物理模型稱作超級螺旋線模型,用拉格朗日力學原理仿真頭發(fā)運動,如圖24所示.該方法生成的頭發(fā)運動序列能表現(xiàn)豐富的頭發(fā)運動細節(jié),但運算時間相對較長.
Fig. 24 Super-helices model for predicting the dynamics of hair[65]圖24 超級螺旋線模型描述動態(tài)頭發(fā)特性[65]
超級螺旋線模型能表示相對復雜的發(fā)型,如卷發(fā)等,近期廣泛應用于動態(tài)頭發(fā)動態(tài)建模[41,66-69].2011年Daviet等人[68]在超級螺旋線模型基礎(chǔ)上建立優(yōu)化方法,實現(xiàn)了頭發(fā)之間碰撞摩擦的有效建模,進一步提高了頭發(fā)動態(tài)仿真的逼真度,但需要求解大量物理參數(shù),無法實時.2013年Derouet-Jourdan等人[70]利用超級螺旋線模型實現(xiàn)了頭發(fā)之間的碰撞、摩擦,進一步提高了頭發(fā)動態(tài)模擬的逼真度.該方法先將手工設計或采集生成的頭發(fā)模型轉(zhuǎn)換為動態(tài)頭發(fā)物理模型,再對模型施加庫倫摩擦力并進行受力分析,反求物理模型在初始靜止狀態(tài)時的物理參數(shù),生成頭發(fā)運動序列.該方法在實施過程中需要求解大量的物理參數(shù),難以實時.Ward等人[63,71-72]通過改變頭發(fā)模型的物理屬性實現(xiàn)頭發(fā)的加濕、風吹、修剪、燙卷等功能.2009年Yuksel等人[73]從頭發(fā)網(wǎng)格構(gòu)建頭發(fā)模型,使得頭發(fā)建模類似于多邊形曲面建模.該方法可以直接控制頭發(fā)模型的整體形態(tài),再經(jīng)樣式操作編輯后得到發(fā)絲細節(jié).2013年Derouet-Jourdan等人[74]用浮點切線算法將頭發(fā)幾何模型轉(zhuǎn)換為超級螺旋線模型,解決了仿真運動開始時頭發(fā)靜止形狀下垂的問題.
當前,動態(tài)頭發(fā)交互仿真技術(shù)得到了進一步發(fā)展.Aras等人[75]提出一種基于草圖的動態(tài)頭發(fā)建模仿真方法,通過使用物理屬性和關(guān)鍵幀技術(shù)實現(xiàn)實時動態(tài)頭發(fā)仿真.但該方法不能處理發(fā)絲分布稠密的頭發(fā)模型.2014年Chai等人[64]提出一種基于數(shù)據(jù)驅(qū)動的實時頭發(fā)交互仿真方法,其結(jié)果如圖25所示.該方法從訓練中得到驅(qū)動運動信息,用簡化的主頭發(fā)仿真整個頭發(fā)交互過程,并提出基于主頭發(fā)上的粒子插值生成其余頭發(fā)的方法,得到了較好的效果,算法在性能和時間都有較大改進.2016年Wu等人[76]使用頭發(fā)網(wǎng)格實時仿真頭發(fā)運動.通過體積力模型和變形最小化方法恰當?shù)靥幚砼鲎矄栴},但他們的方法要求發(fā)絲束在運動中不能被分開.Chai等人[77]針對頭發(fā)和固體之間的交互仿真提出了一種自適應的頭發(fā)蒙皮算法,計算符合條件的主頭發(fā)集合以及基于發(fā)絲的頭發(fā)蒙皮模型間的對應插值關(guān)系.該方法通過仿真主頭發(fā)和固體之間的碰撞交互即可實時求得整個發(fā)型的仿真運動形態(tài).除了仿真頭發(fā)和固體之間的交互碰撞,2017年Fei等人[78]提出了一種新穎的多組件仿真框架用于仿真流體和頭發(fā)之間的交互,得到了理想的效果,結(jié)果如圖26所示.為了從靜態(tài)頭發(fā)建模結(jié)果中生成動態(tài)頭發(fā)運動序列,近期Bao等人[79-80]提出了一種自適應的浮動切線匹配算法,可以將頭發(fā)幾何模型轉(zhuǎn)換為基于物理的頭發(fā)模型,經(jīng)仿真得到動態(tài)頭發(fā)運動序列.
Fig. 25 A reduced model for interactive hair[64]圖25 精簡頭發(fā)模型的交互仿真編輯[64]
Fig. 26 Multi-scale model for simulating liquid-hair interaction[78]圖26 多尺度模型的流體頭發(fā)交互仿真[78]
基于物理的頭發(fā)模型編輯重用方法,通過求解復雜的物理方程實現(xiàn)頭發(fā)的動態(tài)編輯建模,通過對邊界條件的控制實現(xiàn)對建模結(jié)果的控制,編輯建模過程不夠直觀,難以直接獲取與真實發(fā)型對應的頭發(fā)運動結(jié)果.
如第1~4節(jié)所述,頭發(fā)建模技術(shù)在計算機圖形學和虛擬現(xiàn)實領(lǐng)域展現(xiàn)出巨大潛力,得到國內(nèi)外研究人員廣泛的關(guān)注.本文論述了近年來基于圖像的頭發(fā)建模以及頭發(fā)模型編輯重用等方面的一些研究成果.基于圖像的建模方法主要用于解決發(fā)型重建的問題,相關(guān)方法側(cè)重于得到與實際照片近似的頭發(fā)模型.頭發(fā)模型編輯重用方法則以現(xiàn)有發(fā)型為基礎(chǔ),編輯生成新的頭發(fā)模型,以物理模型為基礎(chǔ)生成動態(tài)頭發(fā)運動序列.這些研究成果在游戲、影視、廣告化妝等領(lǐng)域得到了一定的應用.但隨著應用需求的不斷提高,現(xiàn)有的技術(shù)逐漸變得不能滿足需求,未來研究的發(fā)展趨勢可能有4個方面:
1) 發(fā)絲級別的頭發(fā)幾何重建.目前,大多數(shù)基于圖像的頭發(fā)建模方法構(gòu)造的模型在視覺上都沒有達到與采集圖像數(shù)據(jù)在發(fā)絲級別一致,重建結(jié)果只是在整體形態(tài)和特征上逼近采集數(shù)據(jù),個別發(fā)絲級別的頭發(fā)重建方法依賴于復雜精密的采集設備.因此,如何在多視點圖像采集的條件下實現(xiàn)更為逼真的頭發(fā)建模,使重建結(jié)果的外表發(fā)絲與采集圖像基本對應,是未來頭發(fā)建模需解決的主要問題之一.
2) 發(fā)絲生長和分布逼真的頭發(fā)建模.真實頭發(fā)一般具有3個特點:①發(fā)根在頭皮上均勻分布;②頭發(fā)內(nèi)部的發(fā)絲生長方向連續(xù),距離接近的發(fā)絲其生長方向趨于一致,發(fā)絲的曲率過渡平滑;③頭發(fā)在其占據(jù)空間內(nèi)是密集的,發(fā)絲充滿從頭皮到頭發(fā)表面的所有區(qū)域.目前靜態(tài)建模方法最好的結(jié)果只是外表與采集圖像近似,但發(fā)絲分布并不準確.未來需要研究頭發(fā)重建方法,在保證外表頭發(fā)足夠真實的前提下,使發(fā)絲的生長和分布更加真實可靠.
3) 單幅圖像頭發(fā)建模方法.由于信息大量缺失,目前大多數(shù)基于單幅圖像頭發(fā)建模方法只能生成2.5D的深度映射頭發(fā)模型,少數(shù)基于頭發(fā)模型數(shù)據(jù)庫查找的方法生成的頭發(fā)模型缺乏真實性.未來需要研究頭發(fā)模型查找與融合方法,生成真3D的頭發(fā)模型,并保證建模結(jié)果與頭發(fā)圖像基本相似.
4) 頭發(fā)模型編輯重用.當獲取頭發(fā)模型之后,如何對模型數(shù)據(jù)加以編輯重用,現(xiàn)階段研究人員還沒有想到太多的方法.對靜態(tài)頭發(fā)建模結(jié)果,絕大部分的研究人員還停留在僅對建模結(jié)果與采集發(fā)型外觀上的比較.而形態(tài)上編輯或者運動模擬的方法還比較少.僅有少數(shù)工作嘗試在模型變換和仿真方面進行編輯或者重用生成新的數(shù)據(jù).如何將幾何信息表示的靜態(tài)頭發(fā)模型數(shù)據(jù)轉(zhuǎn)換為基于物理的頭發(fā)模型表示是當前研究的難點問題,研究自適應的浮點切線算法、構(gòu)造頭發(fā)物理模型、使頭發(fā)模型的運動符合物理真實,這些都是未來需要解決的關(guān)鍵問題.此外,如何研究基于頭發(fā)幾何特征的編輯方法、實現(xiàn)發(fā)型間的對應轉(zhuǎn)換、生成連續(xù)的頭發(fā)模型轉(zhuǎn)化結(jié)果、研究動態(tài)頭發(fā)模型時間編輯和運動重用方法,這些也是未來需要解決的科學問題.