APP下载

基于图像的头发建模技术综述

2018-11-13包永堂

计算机研究与发展 2018年11期
关键词:发型头发动态

包永堂 齐 越

1(山东科技大学计算机科学与工程学院 山东青岛 266590) 2(虚拟现实技术与系统国家重点实验室(北京航空航天大学) 北京 100083) 3(北京航空航天大学青岛研究院 山东青岛 266100) (baozi0221@163.com)

头发是人类特征的重要组成部分,是判断一个人的年龄、背景及身份等的重要依据[1].因此头发建模是虚拟现实和计算机图形学需要研究的重要内容之一.一个正常人的头发大约10万多根,数量很大;头发直径微小,形状、结构非常复杂,构造逼真3D头发模型的难度很大.因此开展3D头发建模研究具有重要的理论意义.在数字游戏和影视中,虚拟角色具有逼真的头发模型,不仅能提供丰富的视觉特性,而且能以特定的语言描述人物的特征和感情等.此外,在化妆、广告等领域对头发建模也有大量应用需求.因此研究头发建模具有重要的应用价值.

早期头发建模主要采用参数化的几何建模方式[2-3],通过设置不同的参数来表示头发[4-6].这些参数表示涉及参数曲面表示头发、三棱镜形式的头发缕或广义圆柱体.一些工作使用2D表面来表示头发组[7-9],这类方法大多使用如非均匀有理B样条(non-uniform rational B-splines, NURBS)的曲面来减少用于建立头发部分模型的几何对象的数量.发束、簇、缕和圆柱模型被作为直观的方法来控制以组的形式表示的多重头发的位置和形状[10-14].这些方法减少了用于定义发型的可控参数的数量,用户可以通过编辑曲线的位置来控制头发的形状.使用分层次的广义圆柱可以表示复杂的头发几何体[15-16],在建模过程中允许用户选择期望的控制水平.较高层次的聚集操作能够提供快速的全局形状编辑的有效方式,而较低水平的聚集允许对详细几何体直接操作.尽管参数化建模方法可以被用来快速地生成头发发型并进行仿真,但是由于使用头发条的表示方式,可以被建模的头发发型受到了限制.

同早期头发建模方式不同,当前头发建模主要有2种方法:1)基于物理的头发建模方法[17-19],采用符合物理规律的头发模型,通过设置相关参数构造出不同的头发,建模过程不直观、难以控制,计算量很大,构造的模型逼真度不高;2)基于图像的头发建模方法,利用采集的头发数据构造头发模型,具有建模速度快、模型逼真度高等优点,近几年受到研究者重视,出现了许多研究成果.

基于图像的头发建模方法大量融合计算机视觉的理论和工作,主要用于解决发型重建的问题,相关方法侧重于得到与实际照片近似的头发模型.当前,基于图像的头发建模方法还是新的研究领域,有许多科学问题急需解决,主要包括:如何得到与采集数据在发丝级别对应的逼真建模结果?如何得到发丝的生长分布与真实近似的结果?如何构造动态头发模型,有效解决动态头发碰撞和遮挡问题?如何编辑、重用已有的静态或动态头发模型?本文以基于图像的头发建模技术为主要论述对象,从基于单幅图像的头发建模、基于多幅图像的静态头发建模、基于视频的动态头发建模以及头发建模结果的编辑重用等方面,对当前已有的方法分别进行分析和总结,提出了该领域当前存在的问题和挑战,并指出了将来需要重点关注的研究方向.

1 基于单幅图像的头发建模方法

近年来,一些基于图像的头发建模方法开始探讨利用单幅图像进行头发建模的可能.根据重建方式的不同,基于单幅图像的头发建模方法主要有2种方式:1)基于方向场的头发建模;2)基于数据驱动的头发建模.

1.1 基于方向场的单幅图像的头发建模

基于方向场的单幅图像头发建模方法从单视点的照片中生成3D方向场,从头皮发根处生长出发丝,构造出在单视点下真实的3D头发模型.此类方法的难点在于如何构造逼真的3D方向场.2012年Chai等人[20]首次基于单幅肖像照片构造3D头发模型,实现了对照片中头发的编辑,如图1所示.他们生成的模型在视觉上与原图像形似,同时他们的头发模型是发丝级别的表示,因此可以对头发进行许多有趣的编辑和操作,例如为不同的人物交换发型,或者转换观察视点.但是这一方法生成的头发模型不具有物理正确性,其头发由漂浮在薄壳中的头发片段构成,而不是一根根从头皮生长出的完整头发.

Fig. 1 Hair modeling from single image[20]图1 基于单幅图像的头发建模方法[20]

为了得到具有空间连续性的更加符合物理的头发模型,2013年Chai等人[21]继续了之前的工作,改进了方法中存在的物理不够真实的特点.他们利用用户的简单交互,为方向场提供了指引方向,生成了完整的物理可靠的方向场.从头皮生长出头发,构造出物理上更逼真的头发模型,从而可以对发型进行修剪、增加头发、进行简单的头发仿真等操作.在这一工作中,他们还展示了从单视点视频中重建头发模型并进行编辑的结果,尽管他们的结果比较真实,但由于单视点下采集的信息少,他们也仅能保证建模结果在单视点投影下近似真实.

Fig. 2 Hair modeling result[22]图2 头发建模方法结果[22]

Echevarria等人[22]使用特征保留的颜色滤波和抽象的几何细节构建3D头发模型,实现了表面头发模型的3D打印,如图2所示.他们的方法生成的头发模型能够保留模型结构细节,适用于传统的雕像制作,但却不能生成发丝级别的精确头发模型.Yeh等人[23]从具有连贯的分层和遮挡关系的单张卡通图片中生成头发模型,但由于生成的头发模型是2.5D的,并不能保证头发模型建模和编辑的真实性.2015年Chai等人[24]提出了一种基于混合方式的高质量头发建模方法.利用单幅图像对应一个参数化的可变形脸部模型,利用遮挡和轮廓限制重建出基本形状;利用从阴影计算形状(shape-from-shading)的方法,估计出头发表面的法向量;利用3D螺旋线优先的方法重建出头发的几何细节.综合这3方面信息,通过求解能量最小化方程构建最终头发的深度图.用该方法得到的模型效果较为逼真,可以应用于重新渲染和3D打印等,但不具备物理真实性.2016年Ding等人[25]使用方向场和螺旋线匹配策略构建单视点的头发模型,结果如图3所示.同文献[20-22]提到的方法相比,该方法能够生成更为精确的发丝深度估计,但最终头发模型是由漂浮在薄壳中的头发片段构成,仍然不具有物理正确性.

Fig. 3 Single-view hair modeling by orientation & helix fitting[25]图3 基于方向场和螺旋线匹配的单视点头发建模结果[25]

1.2 基于数据驱动的单幅图像的头发建模

Fig. 4 Single-view hair modeling using a hairstyle database[26]图4 基于模型数据库的单幅图像头发建模方法[26]

基于数据驱动的方法首先需要构建头发模型数据库,之后从数据库中查找生成3D头发模型.最近,基于数据驱动的单幅图像建模方法开始兴起.2015年Hu等人[26]首次提出基于头发模型数据库的单幅图像头发建模方法.用户在头发图像上交互输入发丝引导曲线,他们的方法就能从头发模型数据库中查找出几类对应的头发模型,再根据头发模型融合策略最终生成头发模型,如图4所示.该方法基于单幅照片首次生成了真3D的头发模型,但其建模结果取决于用户手工所画引导发丝的质量,同时也受限于头发模型数据库的大小.

2016年Chai等人[27]提出了一种基于单幅图像的完全自动的头发建模方法.他们将深度卷积神经网络应用到头发分割和头发生长方向估计中,构建3D头发模型样例库,研发了一种基于数据驱动的头发匹配和建模方法,如图5所示.同以往需要用户交互的头发建模方式[20-21,24,26]相比,该方法实现了自动头发模型重建.但由于依赖于人脸对齐技术,该方法并不适用于无人脸的图像,建模结果的好坏也依赖于头发模型数据库的大小.

Fig. 5 Fully automatic hair modeling from a single image[27]图5 全自动的单幅图像头发建模方法[27]

表1给出了基于方向场和基于数据驱动的2种单幅图像的头发建模方法在用户控制程度、时间消耗、自动化程度和建模结果真实性等方面的比较,同时还给出了每种方法对应的典型参考文献.从表1中我们可以看出,基于方向场的方法自动化程度较低,需要较多的用户交互控制,建模速度相对较快,但建模结果不是真3D的;而基于数据驱动的单幅图像头发建模方法自动化程度较高,需要较少的用户交互控制并且能够得到3D的头发模型,但所需花费的时间较多.

Table 1 Analysis of Two Types of Single-Image Based Hair Modeling Methods表1 基于单幅图像的2种头发建模方法分析

2 基于多幅图像的静态头发建模方法

根据建模方式的不同,基于多幅图像的静态头发建模方法可以分为基于方向场的多幅图像静态头发建模方法和基于数据驱动的多幅图像静态头发建模方法这2类.

2.1 基于方向场的多幅图像静态头发建模方法

基于方向场的多幅图像静态头发建模方法的主要流程包括:采集静态头发图像,根据图像生成头发的方向场、内部场、基于样例头发等约束条件,用头发追踪生长等算法构造出3D头发模型.

Fig. 6 Filter-based hair modeling from multiple images[30]图6 使用滤波函数的多幅图像头发建模方法[30]

1997年Kong等人[28]首次使用真实的头发图片重建出头发模型.他们的方法先通过从不同视点采集的头发照片构建3D头发体,随后使用启发式方法从头发体中生成头发模型.该方法只重建头发几何,并且仅适用于简单的发型,并不保证头发方向的可靠度.随后,Grabli等人[29]提出利用头发的光照性质,从图像中提取头发的局部方向场.他们的系统通过学习在不同控制光照条件下目标头发的反射情况而完成重建,系统中获取照片的视点是始终不变的.通过一个固定的视点和单独的滤波器来检测头发丝的方向,他们的方法仅能重建头发的一部分,并且需要严格控制光照条件.2004年Paris等人[30]通过多个滤波函数和不同的视点,把Grabli等人[29]的方法扩展为一种更准确的情况,得到了不错的建模结果,如图6所示.他们的策略是将一组待测试的方向滤波函数作用于一个2D图像的局部区域,选取有最大可靠度的结果作为局部的方向.他们的方法获取了头发可见区域的方向信息,由此生成出关于原始发型可信的结果.Mao等人[31]基于绘制的草图建立卡通头发模型,但他们的方法仅能建立简单的卡通头发模型,不能够构建现实世界中的常见头发模型.Wei等人[32]通过提取多视点下固有的几何约束,进一步提升了Paris等人[30]方法的灵活性.该方法使用单个相机在普通光照条件下多视点采集头发数据,用三角化方法生成头发3D方向场,定义粗糙的视觉壳作为头发生长边界,利用方向场构造3D头发模型,结果如图7所示.他们的方法不再需要控制的光照条件,也不再需要复杂的设备,但很难构造凹凸、卷曲的发型.

Fig. 7 Triangle-based hair modeling from multi-view images[32]图7 三角化的多视点头发建模方法[32]

随着图形学领域对基于图像的静态头发建模方法的不断关注,越来越多的研究者开始利用复杂而专门设计的采集设备达到高质量的头发建模.2008年Paris等人[33]引入了一种独特的多视点采集系统,能够准确地得到外围的发丝位置,从而得到逼真的建模结果,如图8所示.这一工作利用文献[30]中的方法分析图像中的头发方向,借助Wei等人[32]的多视点思想将方向转化为3D的方向场.Paris等人设计的采集系统,可以直接获取三角化的表面头发.该工作把利用方向场从头皮生长而来的头发与表面发丝结合,得到整个头发模型.

Fig. 8 Geometric and photometric acquisition of real hairstyles[33]图8 采集几何和头发外观的真实发型头发建模方法[33]

为了生成发丝级别的头发模型,Jakob等人[34]设计了一个浅焦深的采集系统,能够重建发丝级别的头发模型.浅焦深的采集系统能够精确地区分发丝并消除遮挡作用.该方法在不同的角度下,通过推进相机,扫描并拍摄整个头发模型.根据单根发丝上某点最清晰的照片位置和焦距来判断该发丝在拍摄方向上的位置,由多个拍摄方向进行三角化就可以得到该点在3D空间上的位置.该方法是少有的对应到发丝级别的采集头发建模的方法.该方法使用了多个如图9所示的滤波器在图像上判断评价最高的方向,得到发丝方向,以使得发丝的结合和生长更加可靠,这种估计方向的方法随后被多次使用.但由于采集设备也相对复杂,该方法很难直接采集真人身上的头发.2012年Herrera等人[35]使用热成像数据重建头发模型,避免了使用RGB图像建模时受光照、阴影等因素导致的头发生长方向无法分析的问题.Beeler等人[36]使用多视点立体方法能够同时重建稀疏的面部毛发和皮肤,但是由于发丝间的遮挡闭合等原因,他们的方法不能重建稠密的发型.

Fig. 9 Gabor filter in different angles to estimate orientation图9 确定方向的Gabor滤波器

近年来,基于图像的头发建模方法开始向普通的多视点采集方式倾斜.Luo等人提出基于多视点[37]和宽基线[38]的头发建模方法,利用多台相机采集数据,从头发方向信息重建头发外壳的几何,结果如图10和图11所示.区别于传统的基于颜色的几何建模方法,该方法利用了在头发照片中更具代表性的方向场来重建头发外壳的几何体.该方法获取的头发几何具有较好的视觉效果,但该方法仅重建了头发的表面几何网格,并未重建出发丝级别的几何形态.

Fig. 10 Multi-view hair capture using orientation fields[37]图10 基于多视点的头发表面几何重建[37]

Fig. 11 Surface construction of hairstyle using wide-baseline[38]图11 基于宽基线的头发表面几何重建[38]

随着计算机视觉技术在点云重建方法上的巨大发展,2013年Luo等人[39]提出了一种能重建发丝几何的多视点的头发采集重建方法,能够得到结构上具有连续性、发丝之间局部有序、更接近真实的头发模型,如图12所示.该方法并不直接从头皮生长发丝,而是利用点云和方向场逐渐在头发表面聚类出代表局部头发结构的发束,最后再从发束重建完整的发丝.但该方法重建的结果不能保持头发内部特性,发根和发丝的分布与真实情况也相差较大.为了生成外部与采集照片近似,内部发根和发丝的分布接近真实的头发模型,2016年Bao等人[40]提出了一种基于混合方向场的静态头发建模方法,他们提出的混合方向场是由多个方向场组合而成,考虑了发型内部头发之间的分布和外部头发的结构细节.其建模结果如图13所示.同文献[32,39]相比,该方法能够生成相对真实的头发模型.

Fig. 12 Structure-aware hair capture[39]图12 基于结构的头发建模[39]

Fig. 13 Static hair modeling from a hybrid orientation field[40]图13 基于混合方向场的静态头发建模[40]

2.2 基于数据驱动的多幅图像静态头发建模方法

最近,基于数据驱动的多幅图像静态头发建模方法得到快速发展.2014年Hu等人[41]提出一种基于数据驱动的头发采集和重建方法,发束连接采用基于数据样例匹配的方法,将重建过程中有用的发束信息自动组织起来,省去了采集图像背景剔除等繁杂的数据预处理工作,实现了从采集数据到头发3D几何的自动建模,所构造模型的逼真度与文献[39]相似,但在视觉上和模型结构上并没有质的改变.Yu等人[42]提出了一种基于图像和CAD操作的混合头发重建方法,该方法能够重建多种复杂的发型,但是重建的结果并不能逼近于真实的采集头发图像.Hu等人[43]提出了一种基于数据驱动的可以自动重建辫子发型的头发建模方法,该方法使用深度相机采集发型数据,并使用数据库中的辫子块来匹配数据,生成结构合理的辫子头发模型,结果如图14所示.与文献[39]中方法类似,在建模过程中该方法也需要提前手动将头发几何从采集图像中分割出来,并且该方法也只能重建辫子头发发型.为了鲁棒地重建头发模型,2017年Zhang等人[44]提出了一种基于4个视点图像的数据驱动的头发建模方法.该方法使用多源的头发纹理合成算法,并不要求所有的输入图像必须来自相同的发型,能够重建大部分的长直发型,但不能重建发髻和辫子等受约束的发型.

Fig. 14 Capturing braided hairstyles[43]图14 辫子发型头发建模[43]

表2给出了基于方向场和基于数据驱动的2种多幅图像静态头发建模方法在所需照片数目、用户控制程度、时间消耗和建模结果真实性等方面的比较,同时还给出了每种方法对应的典型参考文献.从表2我们可以看出基于方向场的方法需要更多的输入图像,用户控制程度相对较小,建模速度较慢,但建模结果更为真实;而基于数据驱动的方法需要较少的输入图像,用户控制程度较大,建模速度较快,但建模质量相对不够真实.

Table 2 Analysis of Two Types of Multiple-Images Based Static Hair Modeling Methods表2 基于多幅图像的2类静态头发建模方法比较

3 基于视频的动态头发建模方法

当前基于多幅图像的头发建模研究主要集中于静态头发几何建模,对动态头发建模方法涉及不多,动态头发建模结果还不够理想.

2007年Ishikawa等人[45]首次提出基于采集数据的动态头发建模方法,利用采集数据构造头部和主头发的运动矩阵,计算每一帧主头发的位置,然后插值生成其余头发的位置,但由于误差累积等原因,导致很难准确计算每一帧对应的运动变化矩阵.Yamaguchi等人[46]使用时间平滑限制生成头发序列,由于过度限制了头发生长方向,该方法仅适用于头部固定、运动统一的直发型.

2011年Luo等人[47]根据采集到的头发图像序列,对每一帧头发模型均按照静态头发建模方法生成相应的3D头发模型,随后在时间域上对方向信息进行优化,重建出各帧对应的表面几何,最终在头发表面生长出发丝线段作为最终结果,如图15所示.尽管这种方法在每一帧的头发建模结果与采集图像都近似,但由于其没有考虑头发在相邻帧之间的对应问题,也没有重建出从头皮生长的完整发丝,这一方法构造的动态头发模型结果并不理想.

Fig. 15 Surface reconstruction of dynamic hair capture[47]图15 动态头发表面重建结果[47]

Fig. 16 Dynamic hair modeling from single view[21]图16 基于单视点的动态头发建模[21]

为了便于标定和采集头发数据,Fukusato等人[48]提出了基于头发束采集头发运动的方法,该方法能够重建发束级别的头发运动,但却无法应用于发丝级别的头发模型.Chai等人[21]定义了由3D刚性变化矩阵和2D变形场构成的头发变化矩阵,基于单幅图像生成了运动较真实的结果,头发运动在单一视点投影下与采集数据接近,如图16所示.由于误差累积的影响,该方法只适用于局部相邻帧之间变化较小且头发运动幅度不能过大的情况.2012年Zhang等人[49]首先构造各帧对应的3D头发模型,然后提出一种基于粒子的局部最优化方案,从相邻各帧的对应关系中迭代生成主仿真头发的速度场,并利用此速度场对初始的头发几何进行迭代优化,实现了动态头发建模,图17展示了其动态建模过程的4帧结果.其结果得到了完整的头发几何,且各帧头发的几何形态连续,头发的运动较为自然.但该方法只适用于直发,而且由于对头发运动连续性的过度追求,其结果在各帧的几何形态上与采集图像差距较大.从图17我们可以看到,各帧头发几何十分平滑,采集数据中头发的几何细节大部分丢失.

Fig. 17 Dynamic hair modeling by simulating guide hair[49]图17 仿真主头发的动态头发建模结果[49]

早期基于数据采集的动态头发建模主要从时间域上保证相邻帧之间的对应和连贯,而没有从空间域上考虑发丝间的对应关系.2014年Xu等人[50]提出一种基于时空优化的动态头发建模方法,从视频中提取头发运动路径,在时间域和空间域上分别优化,利用多视点的运动路径和静态头发建模信息重建动态头发模型,结果如图18所示.该方法首次较为全面地构造了动态头发模型,得到了时间和空间上信息保留较为完整的建模结果,但是局限于直发或接近直发的发型,未能解决头发与物体交互时出现的穿透问题,也不能处理比较复杂的头发运动.2017年Hu等人[51]首次提出了重建动态头发模型并估计运动发型的物理参数.但他们的方法计算所需时间过长,并且重建和仿真的运动结果并不能与输入数据很好地匹配.

Fig. 18 Dynamic hair capture using space-time optimization[50]图18 基于时空优化的动态头发建模[50]

基于数据采集的动态头发建模方法,通过分析真实的头发运动形态,构造逼真的动态头发运动模型,研究人员已经从时间连续性和空间模型相似性上进行了上述大量的研究,但由于发丝之间的遮挡等原因,动态头发建模现在还只能处理相对简单的发型,无法精确构造复杂发型的动态头发运动序列.

表3给出了基于多幅图像的静态头发建模方法和基于视频的动态头发建模方法在可建模发型、困难程度、时间消耗和建模结果真实性等方面的比较.从表3中我们可以看出,基于多幅图像的静态头发建模方法可以重建各种发型,复杂程度也较低,所需时间较少并且建模结果相对真实,但只能重建单帧静态头发模型;而基于视频的动态头发建模方法能重建直发等简单的发型,重建的困难较大,建模所需时间较多,但动态重建结果相对不够真实.这是因为动态头发建模方法不仅需要重建每一帧的头发模型,而且需要保证各帧头发模型在时间域和空间域上的连贯性.

Table 3 Analysis of Multiple-Images Based Static Hair Modeling Methods and Video-Based Dynamic Hair Modeling Methods

4 头发建模结果的编辑重用方法

根据编辑方式的不同,对头发建模结果的编辑重用可以分为基于几何的头发模型编辑重用方法和基于物理仿真的头发模型编辑重用方法.基于几何的编辑方法通过编辑头发模型的外观生成新的发型,基于物理的方法则通过物理仿真的形式对头发模型进行编辑.

4.1 基于几何的头发模型编辑重用方法

基于草图的方式编辑生成发型是早期常用的头发模型编辑方法.Choe等人[52]使用静态发束模型和伪物理的方法交互构建头发模型.该方法能够编辑生成发髻、编织辫子及凌乱的发型等,但他们的方法不能处理发束太过稠密的发型.Malik等人[53]使用草图界面构建和编辑头发模型,用户使用压力敏感板即可模拟现实世界中的剪发、梳发、烫发等各类操作,也可以进行头发种植、发型移植等,结果如图19所示.从编辑结果可以看出,该方法生成的编辑结果相对不够真实.

Fig. 19 Sketching interface for modeling and editing hairstyle[53]图19 基于草图界面的发型编辑建模[53]

随后一些研究人员开始从用户输入中提取头发生长相关信息,先构建头发物理模型或方向场,再编辑生成最终头发模型.2007年Wither等人[54]使用草图和物理模型编辑生成头发模型,他们的方法从用户输入的草图中提取头发物理模型的相关参数,再基于物理模型生成对应发型.该方法能够生成相对复杂的发型,但编辑结果仍不够逼真.Fu等人[55]提出了基于草图界面的交互发型设计方法,结果如图20所示.该方法从输入草图构建头发生长方向场,能够快速构建相对真实的方向场,但该方法只能编辑生成直发等相对简单的发型.

Fig. 20 Editing orientation hairstyle by sketching[55]图20 基于草图的方向场发型编辑[55]

直接通过手工或从图片中重建3D头发模型都是相对复杂的过程.为了从已有发型中快速生成新的发型,2009年Wang等人[56]提出了一种基于样例的头发几何合成方法,使用分层的头发合成框架交互地编辑头发几何模型,从粗糙层头发模型映射合成新的发型.如图21(a)(b)可以编辑合成图21(c)所示的结果.该方法能够实现特征保留的梳头发以及不同发型间的细节转移,但不适用于披散的长发型.Bonneel等人[57]开发了一种头发外观估计方法,能够从一张照片中恢复出一个近似的3D头发模型.他们的照片利用一个闪光灯和一个灰度卡在室内拍摄,能够生成一个与输入照片在视觉上相似的发型结果,通过编辑可达到理想的建模效果.然而,由于在输入照片上的限制,他们的方法无法对一般的日常人物照片进行计算.Chai等人[20]基于单视点照片构造头发模型,可以替换不同发型.他们的方法可以实现在图像空间编辑头发模型,但视角范围不能太大.随着头发插值技术的发展,2013年Weng等人[58]提出了一种头发插值肖像操作方法,编辑结果如图22所示.该方法使用多尺度聚类的方法,有效计算2个或多个头发模型之间多对多的对应关系,并根据给定的2个3D头发模型产生一系列的头发几何模型.该方法能够生成逼真的建模结果,但不符合物理规律.

Fig. 22 Hair interpolation for portrait morphing[58]图22 头发插值肖像编辑[58]

4.2 基于物理仿真的头发模型编辑重用方法

基于物理的编辑方法根据头发物理模型实现编辑.传统的头发运动模型是根据物理模型构造的.1991年Rosenblum等人[59]使用质点弹簧模型构造头发运动模型,实现头发运动仿真.Baraff等人[60]提出了隐式积分方法,有效求解硬弹簧模型,保证在较大的时间步长仍然保持解的稳定性.Plante等人[61-62]使用了一个约束的质点弹簧模型来进行仿真.这一工作利用不可分散的成体积的发束来表示头发.该方法中,每一束头发都具有3层结构:第1层是由质点弹簧模型描述的骨骼曲线,定义了大尺度的运动;第2层是一个可变形的外壳,包裹了骨骼曲线,定义了发束的形变;第3层是数目预定的发丝,存在于外壳内部,不参与仿真计算,初始造型时发丝在发束内部随机分布.为了提高仿真速度,2004年Ward等人[63]采取自适应的层次结构仿真头发运动,该方法放弃了单纯的发束表示,具有层次性、模拟速度快等优点.Choe等人[17]提出了一种混合模型,保留了质点弹簧模型和多刚体链模型的优点,隐式求解动力学方程,鲁棒地解决了头发和身体间的碰撞问题.2008年Selle等人[19]改进了质点弹簧模型,能够约束头发的扭率,该模型的参数设置简单,特别适合表示直发等简单发型,其建模结果如图23所示.该成果近期得到了广泛应用[21,49,64].

Fig. 23 A mass-spring model for hair simulation editing[19]图23 改进的质点弹簧头发模型仿真编辑[19]

为了能够处理卷发等更为复杂的发型,Bertails等人[18]引入一种新的头发参数化方法,用处理静态弹性杆的基尔霍夫模型,自动生成头发的几何模型,包括自然头发的波浪和发卷.2006年他们进一步研究头发运动模拟[65],将构造单根头发的物理模型称作超级螺旋线模型,用拉格朗日力学原理仿真头发运动,如图24所示.该方法生成的头发运动序列能表现丰富的头发运动细节,但运算时间相对较长.

Fig. 24 Super-helices model for predicting the dynamics of hair[65]图24 超级螺旋线模型描述动态头发特性[65]

超级螺旋线模型能表示相对复杂的发型,如卷发等,近期广泛应用于动态头发动态建模[41,66-69].2011年Daviet等人[68]在超级螺旋线模型基础上建立优化方法,实现了头发之间碰撞摩擦的有效建模,进一步提高了头发动态仿真的逼真度,但需要求解大量物理参数,无法实时.2013年Derouet-Jourdan等人[70]利用超级螺旋线模型实现了头发之间的碰撞、摩擦,进一步提高了头发动态模拟的逼真度.该方法先将手工设计或采集生成的头发模型转换为动态头发物理模型,再对模型施加库伦摩擦力并进行受力分析,反求物理模型在初始静止状态时的物理参数,生成头发运动序列.该方法在实施过程中需要求解大量的物理参数,难以实时.Ward等人[63,71-72]通过改变头发模型的物理属性实现头发的加湿、风吹、修剪、烫卷等功能.2009年Yuksel等人[73]从头发网格构建头发模型,使得头发建模类似于多边形曲面建模.该方法可以直接控制头发模型的整体形态,再经样式操作编辑后得到发丝细节.2013年Derouet-Jourdan等人[74]用浮点切线算法将头发几何模型转换为超级螺旋线模型,解决了仿真运动开始时头发静止形状下垂的问题.

当前,动态头发交互仿真技术得到了进一步发展.Aras等人[75]提出一种基于草图的动态头发建模仿真方法,通过使用物理属性和关键帧技术实现实时动态头发仿真.但该方法不能处理发丝分布稠密的头发模型.2014年Chai等人[64]提出一种基于数据驱动的实时头发交互仿真方法,其结果如图25所示.该方法从训练中得到驱动运动信息,用简化的主头发仿真整个头发交互过程,并提出基于主头发上的粒子插值生成其余头发的方法,得到了较好的效果,算法在性能和时间都有较大改进.2016年Wu等人[76]使用头发网格实时仿真头发运动.通过体积力模型和变形最小化方法恰当地处理碰撞问题,但他们的方法要求发丝束在运动中不能被分开.Chai等人[77]针对头发和固体之间的交互仿真提出了一种自适应的头发蒙皮算法,计算符合条件的主头发集合以及基于发丝的头发蒙皮模型间的对应插值关系.该方法通过仿真主头发和固体之间的碰撞交互即可实时求得整个发型的仿真运动形态.除了仿真头发和固体之间的交互碰撞,2017年Fei等人[78]提出了一种新颖的多组件仿真框架用于仿真流体和头发之间的交互,得到了理想的效果,结果如图26所示.为了从静态头发建模结果中生成动态头发运动序列,近期Bao等人[79-80]提出了一种自适应的浮动切线匹配算法,可以将头发几何模型转换为基于物理的头发模型,经仿真得到动态头发运动序列.

Fig. 25 A reduced model for interactive hair[64]图25 精简头发模型的交互仿真编辑[64]

Fig. 26 Multi-scale model for simulating liquid-hair interaction[78]图26 多尺度模型的流体头发交互仿真[78]

基于物理的头发模型编辑重用方法,通过求解复杂的物理方程实现头发的动态编辑建模,通过对边界条件的控制实现对建模结果的控制,编辑建模过程不够直观,难以直接获取与真实发型对应的头发运动结果.

5 总结与展望

如第1~4节所述,头发建模技术在计算机图形学和虚拟现实领域展现出巨大潜力,得到国内外研究人员广泛的关注.本文论述了近年来基于图像的头发建模以及头发模型编辑重用等方面的一些研究成果.基于图像的建模方法主要用于解决发型重建的问题,相关方法侧重于得到与实际照片近似的头发模型.头发模型编辑重用方法则以现有发型为基础,编辑生成新的头发模型,以物理模型为基础生成动态头发运动序列.这些研究成果在游戏、影视、广告化妆等领域得到了一定的应用.但随着应用需求的不断提高,现有的技术逐渐变得不能满足需求,未来研究的发展趋势可能有4个方面:

1) 发丝级别的头发几何重建.目前,大多数基于图像的头发建模方法构造的模型在视觉上都没有达到与采集图像数据在发丝级别一致,重建结果只是在整体形态和特征上逼近采集数据,个别发丝级别的头发重建方法依赖于复杂精密的采集设备.因此,如何在多视点图像采集的条件下实现更为逼真的头发建模,使重建结果的外表发丝与采集图像基本对应,是未来头发建模需解决的主要问题之一.

2) 发丝生长和分布逼真的头发建模.真实头发一般具有3个特点:①发根在头皮上均匀分布;②头发内部的发丝生长方向连续,距离接近的发丝其生长方向趋于一致,发丝的曲率过渡平滑;③头发在其占据空间内是密集的,发丝充满从头皮到头发表面的所有区域.目前静态建模方法最好的结果只是外表与采集图像近似,但发丝分布并不准确.未来需要研究头发重建方法,在保证外表头发足够真实的前提下,使发丝的生长和分布更加真实可靠.

3) 单幅图像头发建模方法.由于信息大量缺失,目前大多数基于单幅图像头发建模方法只能生成2.5D的深度映射头发模型,少数基于头发模型数据库查找的方法生成的头发模型缺乏真实性.未来需要研究头发模型查找与融合方法,生成真3D的头发模型,并保证建模结果与头发图像基本相似.

4) 头发模型编辑重用.当获取头发模型之后,如何对模型数据加以编辑重用,现阶段研究人员还没有想到太多的方法.对静态头发建模结果,绝大部分的研究人员还停留在仅对建模结果与采集发型外观上的比较.而形态上编辑或者运动模拟的方法还比较少.仅有少数工作尝试在模型变换和仿真方面进行编辑或者重用生成新的数据.如何将几何信息表示的静态头发模型数据转换为基于物理的头发模型表示是当前研究的难点问题,研究自适应的浮点切线算法、构造头发物理模型、使头发模型的运动符合物理真实,这些都是未来需要解决的关键问题.此外,如何研究基于头发几何特征的编辑方法、实现发型间的对应转换、生成连续的头发模型转化结果、研究动态头发模型时间编辑和运动重用方法,这些也是未来需要解决的科学问题.

猜你喜欢

发型头发动态
国内动态
国内动态
国内动态
我的头发『断了』
动态
头发飘起来了
头发剪坏的你可以这么办
MY HAIRS TYLE ISON POINT
发型
头发