一种基于面部解析和光照迁移的复杂妆容迁移方法
技术领域
本发明属于可视计算、计算机视觉领域,特别是妆容迁移方法,具体地说是一种基于面部解析和光照迁移的妆容迁移方法。
背景技术
面部图像妆容迁移是计算机视觉技术在图像方面新的应用需求,如何能够在图像上看到虚拟的妆容效果符合现在年轻女性人群的需要。真实的面部化妆是一种用粉底,散粉,乳液等特殊化妆品来改变外观的技术。在大多数情况下,特别是对于女性来说,化妆是用来增强外观的必需做法。乳液通常用于改变面部皮肤的质感,粉底主要用于隐藏缺陷并覆盖原始的皮肤纹理,散粉则是为皮肤引入新的,通常令人愉快的质地。最后,其他如眼线和阴影等通常涂在散粉的上层。
化妆技术不断发展的现在,延伸出针对女性不同的脸型、不同的场景、不同的年龄层、不同的皮肤状态的妆容,甚至针对不同的服装搭配不同的妆容以获得更好的外观。由于传统的物理化妆体验消耗时间且损伤女性皮肤,因此面对妆容的选择产生出虚拟化妆体验的需求,针对面部的妆容迁移的技术应用而生。
目前国内外妆容迁移方法的研究工作总结如下:2007年Tong等人提出了化妆迁移的方法[1],用同一面部的“妆前”和“妆后”的商用于表示妆容的变化,然后将商乘以参考图像,以实现化妆结果;2009年,Guo等人提出了更灵活的方法[2],只需要一个“妆后”的例子,并且采用了图像分层的方法,使得妆容迁移更灵活实用。然而该方法对人脸特征的提取不够精确,从而影响妆容迁移的效果;2010年,徐丹等人总结了Guo方法[3][4];2016年Liu等人提出了一种基于深度学习的深度化妆迁移网络[5],能够为目标图像提供推荐妆容并且对面部不同结构的妆容使用不同的迁移方法,但是该方法需要大量的参考图像提前训练模型,在高性能GPU的条件下迁移一张图片需要6秒,不具有实用性和普及性;2017年林剑楚等人,提出一种利用抑制光照和边缘自适应滤波实现数字人脸图像妆容高保真移植的方法[6],改进了Guo方法中会出现的颜色突变不均匀的问题。
在化妆中,改变面部皮肤的质地很常见。由于面部纹理因人而异,所以从“妆前”到“妆后”的变化在不同面部之间是不同的。因此,将参考图像妆容的变化直接应用于两个不同的面部纹理是不合适的。本发明方法直接将示例的皮肤纹理转移到目标图像,隐藏原始纹理,实现迁移妆容效果。
参考文献:
[1]Tong W S,Tang C K,Brown M S,et al.Example-based cosmetic transfer[C].Computer Graphics and Applications,2007.PG'07.15th Pacific Conferenceon.IEEE,2007:211-218.
[2]Guo D,Sim T.Digital face makeup by example[C].Computer Vision andPattern Recognition,2009.CVPR 2009.IEEE Conference on.IEEE,2009:73-79.
[3]甄蓓蓓.一种基于样例图片的数字人脸化妆技术[D].云南大学,2011.
[4]甄蓓蓓,吴昊,徐丹.一种基于样例的数字人脸化妆算法[J].云南大学学报(自然科学版),2010,32(S2):27-32.[2017-08-14].
[5]Liu S,Ou X,Qian R,et al.Makeup like a superstar:deep localizedmakeup transfer network[C].International Joint Conference on ArtificialIntelligence.AAAI Press,2016:2568-2575.
[6]林剑楚,肖泉,王守觉.一种高保真人脸图像妆容移植方法[J].计算机应用与软件,2015,32(08):187-189+210.[2017-08-14].
发明内容
本发明要解决技术问题为:克服现有妆容迁移方法的不足,提供一种基于面部解析和光照迁移的复杂妆容迁移方法,该方法能够有效的迁移浓妆,而且将头发的分离处理至像素级别,大大改善了复杂妆容的迁移效果,同时有效的将时间复杂性降低至秒级别以及将空间复杂性降低到O(n)。
本发明采用的技术方案为:一种基于面部解析和光照迁移的复杂妆容迁移方法,将面部解析和光照迁移以及妆容迁移算法相结合,首先利用色彩平衡和双边滤波算法将输入面部图像进行美白和磨皮的预处理,然后利用面部解析和面部妆容迁移算法将参考面部图像的妆容迁移到输入面部图像,最后利用光照迁移算法将参考面部图像的光照迁移到输入面部图像,完成对复杂面部妆容的迁移。该方法很容易通过软件实现,本发明可广泛应用推广到计算机视觉、视觉设计、数字娱乐和电影制片等中。
实现步骤如下:1、一种基于面部解析和光照迁移的复杂妆容迁移方法,其特征在于,包括以下步骤:
(1)选定与输入面部图像相匹配的参考面部图像,对输入面部图像进行色彩平衡和双边滤波预处理,得到预处理后的输入面部图像;
(2)将输入面部图像和参考面部图像进行面部解析,运用妆容迁移算法将参考面部图像的妆容迁移到输入面部图像,即得到初始妆容迁移结果;
(3)运用光照迁移算法,基于初始妆容迁移结果,将参考面部图像的光照状态迁移到输入面部图像上,得到复杂面部妆容迁移的最终结果;所述复杂妆容指的是化妆过程复杂、质感细腻精致的彩妆,即浓妆。
步骤(1)所述色彩平衡和双边滤波方法采取以下步骤:
(11)确定输入面部图像每个像素的高光、中间色调、阴影所占的比例;所述高光定义:图像中亮度很高,即图像像素的值很大,接近但不大于255的区域;中间色调定义:图像中亮度平均,即图像像素的值分布在128上下范围的区域;阴影定义:图像中亮度很低,即图像像素的值很小,接近但不小于0的区域;
(12)将每个像素的高光、中间色调和阴影分别以不同方式结合成R、G、B通道值;
①高光、中间色调和阴影结合成R通道值的方式为:
其中,i定义为输入面部图像像素的索引;highlights定义为输入面部图像的高光,highlights_sub意为减少输入面部图像的高光,α定义为控制高光像素量的相关系数,本发明设定其值为0;midtones定义为输入面部图像的中间色调,midtones_add意为增加输入面部图像的中间色调,β定义为控制中间色调像素量的相关系数,本发明设定其值为输入面部图像皮肤像素量占输入面部图像像素量的比值;shadows定义为输入面部图像的阴影,shadows_sub意为减少输入面部图像的阴影,γ定义为控制阴影像素量的相关系数,本发明设定其值为0;red定义为R通道值,由高光、中间色调和阴影中R通道值的组合决定;
②高光、中间色调和阴影结合成G通道值的方式为:
其中,其中,i定义为输入面部图像像素的索引;highlights定义为输入面部图像的高光,highlights_sub意为减少输入面部图像的高光,α定义为控制高光像素量的相关系数,本发明设定其值为0;midtones定义为输入面部图像的中间色调,midtones_add意为增加输入面部图像的中间色调,β定义为控制中间色调像素量的相关系数,本发明设定其值为输入面部图像皮肤像素量占输入面部图像像素量的比值;shadows定义为输入面部图像的阴影,shadows_sub意为减少输入面部图像的阴影,γ定义为控制阴影像素量的相关系数,本发明设定其值为0;green定义为G通道值,由高光、中间色调和阴影中G通道值的组合决定;
③高光、中间色调和阴影结合成B通道值的方式为:
其中,i定义为输入面部图像像素的索引;highlights定义为输入面部图像的高光,highlights_sub意为减少输入面部图像的高光,α定义为控制高光像素量的相关系数,本发明设定其值为0;midtones定义为输入面部图像的中间色调,midtones_add意为增加输入面部图像的中间色调,β定义为控制中间色调像素量的相关系数,本发明设定其值为输入面部图像皮肤像素量占输入面部图像像素量的比值;shadows定义为输入面部图像的阴影,shadows_sub意为减少输入面部图像的阴影,γ定义为控制阴影像素量的相关系数,本发明设定其值为0;blue定义为B通道值,由高光、中间色调和阴影中B通道值的组合决定;
(13)将R、G、B通道值分别赋值给输入面部图像的R、G、B通道,得到美白后的面部图像;
(14)对美白后的面部图像进行双边滤波,得到磨皮后的面部图像,从而完成预处理,得到输入面部图像。
步骤(2)具体采取以下步骤:
(21)对输入面部图像和参考面部图像进行面部解析,分别得到Mask;
(22)结合Mask,将皮肤部分和皮肤以外的Mask部分分别进行二值化;
(23)结合输入面部图像及其特征点和参考面部图像及其特征点对参考面部图像进行三角形仿射变换变形,使输入面部图像特征点和参考面部图像特征点与输入面部图像对齐;
(24)将输入面部图像和变形参考面部图像从RGB色彩空间转换为CIELAB色彩空间;
(25)将输入面部图像和变形参考面部图像分别在CIELAB色彩空间分离为亮度层L、色彩层a和色彩层b;
(26)在色彩层,将输入面部图像和变形参考面部图像的颜色按照妆容迁移算法迁移到输出结果图像;
(27)在亮度层,将输入面部图像和变形参考面部图像分别通过双边滤波分离为结构层和皮肤细节层;
(28)按照妆容迁移算法,将输入面部图像的结构层和变形参考面部图像的皮肤细节层迁移到输出结果图像,得到初始妆容迁移结果。
步骤(3)所述的光照迁移方法采取以下步骤:
(31)在结构层,将变形参考面部图像的光照按照光照迁移算法迁移到输出结果图像;所述光照迁移算法公式如下:
其中,p为图像像素点;R为权利要求1中步骤(2)得到的简单妆容迁移结果图像,Rs为结果图像的结构层;I为输入面部图像,Is为输入面部图像的结构层;ε为参考面部图像,εs为参考面部图像的结构层;β为光照迁移参数,本发明设定为30;C1为面部图像的皮肤区域;
若输入面部图像皮肤结构层像素的值不大于参考面部图像皮肤结构层,则保留输入面部图像皮肤结构层像素的值为结果图像皮肤结构层像素值;否则,将输入面部图像皮肤结构层像素的值与参考面部图像皮肤结构层像素的值的差值以设定的参数比例保留到结果图像皮肤结构层像素值;
(32)将输出结果图像分离的结构层、皮肤细节层、色彩层合并回CIELAB色彩空间;
(33)将CIELAB色彩空间下的输出结果图像转化为RGB色彩空间下的图像,得到最终复杂妆容迁移结果。
本发明的原理在于:
根据目前面部妆容迁移方案的缺陷和不足,可以总结出设计基于面部解析和光照迁移的复杂妆容迁移方法的一些规则,如下所述:
(1)在面部妆容迁移方法中,使用色彩平衡和双边滤波对输入面部图像的预处理以达到美白和磨皮效果,会极大的影响后期的审美体验;
(2)在面部解析领域,针对不同的面部有不同的几何形状,一般的面部解析算法并不能直接应用于所有的面部解析。因此,必须使用一个适用于所有面部的解析方法;在多种色彩空间中,CIELAB色彩空间能够更好的描述面部图像的光影效果和色彩效果,可以为面部图像的妆容迁移提供极好的处理空间。在CIELAB色彩空间内,为了在结构层、皮肤细节层、色彩层将参考面部图像的妆容迁移到输入面部图像,必须使用一个适用于不同层的妆容迁移算法;
(3)对于有代表性的浓妆,直接进行妆容迁移不能达到最好的效果。因此,必须采用光照迁移算法将参考面部图像的光照状态迁移到输入面部图像相应的部位中,完成复杂妆容的迁移。
根据上述规则,本发明利用色彩平衡、双边滤波、面部解析、妆容迁移和光照迁移方法,设计了一种新的复杂妆容迁移方案。在该方案中,色彩平衡和双边滤波用来对输入面部图像进行美白和磨皮的预处理,提高妆容迁移的美感。面部解析用来对输入面部图像化妆部位进行定位,三角化变形用来对参考面部图像与输入面部图像进行区域匹配,找到与输入面部图像对应的相似区域,对参考面部图像在像素级别进行重排。色彩空间变换是用来降低颜色对后期光照迁移的影响,提高妆容迁移效果的鲁棒性。结构层、皮肤细节层、色彩层各自的妆容迁移方法是将各层的妆容以不同方式进行迁移,提高妆容迁移的效果。光照迁移用来实行将参考面部图像光照效果迁移到输入面部图像中,提高对浓妆等复杂妆容迁移的处理效果。实验分析表明基于面部解析和光照迁移的复杂妆容迁移方法,能够适合实际的复杂面部图像妆容迁移应用。
本发明与现有的技术相比,其优势在于:
(1)该方法在多类型面部参考图像中都具有较强的鲁棒性,仅需单幅参考图像,大大降低了发明成本,节省了运行空间;不同于深度学习技术,大大节约了运行时间;
(2)将面部解析应用到面部妆容迁移中,能够精准的实现头发分割;
(3)将光照迁移应用到面部妆容迁移中,能够将浓妆等复杂面部妆容迁移。
附图说明
图1是本发明应用场景图;
图2是本发明方案流程图。
具体实施方式:
下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1和图2所示,本发明以输入面部图像I和参考面部图像ε作为输入,输出为结果图像其保留了输入面部图像I的结构同时应用了参考面部图像ε的妆容风格。采用的符号列举在下表中。
色彩平衡过程:
如图1和图2所示,本发明采用OpenCV色彩平衡算法完成面部美白。OpenCV公式如下:
其中,0≤i,red,green,blue≤255。highlights_sub定义为降低高光,midtones_add定义为增加中间色调,shadows_sub定义为降低阴影。i定义为256像素索引,red定义为RGB面部图像R通道的像素值,green定义为RGB面部图像G通道的像素值,blue定义为RGB面部图像B通道的像素值。α,β,γ为色彩平衡的相关系数,对于本发明,其由皮肤像素相对于图像像素的占比决定。
双边滤波过程:
如图1和图2所示,本发明采用OpenCV双边滤波算法完成面部磨皮。OpenCV公式如下:
其中,代表输出点;指以为中心的(2×N+1)2的大小的范围;f(k,l)代表(多个)输入点;代表经过两个高斯函数计算出的值。
面部解析过程:
如图1和图2所示,本发明定义不同的面部组件来得到每像素的组件标签,通过对不同的组件标签设定R、G、B值着色得到Mask,
三角化仿射变换过程:
如图1和图2所示,本发明将参考面部图像的三角形仿射变换过程放在妆容迁移前,作为对参考面部图像的预处理,不需在图中显示。采用基于仿射变换的三角化变形方法如下所述:
1)对输入面部图像以特征点进行三角形剖分;
2)对于输入面部图像中的每一个三角形,找到其在参考面部图像中对应三角形,根据三角形在输入面部图像和参考面部图像中的顶点坐标计算出两个三角形的仿射变换矩阵;
3)利用向后图像变形找到输入面部图像中每一个像素点在参考面部图像中对应的坐标值;
4)对于输入面部图像中的每个像素取其在参考面部图像中对应坐标处的值,即可得到变形后的参考面部图像。
将参考面部图像按照输入面部图像进行三角化变形过程为:将参考面部图像中的三角形按照输入面部图像中的对应三角形进行变形。对于输入面部图像中的每一个像素坐标,计算出其在参考面部图像中对应像素的坐标,像素间的对应关系由其各自所在三角形确定,设输入面部图像三角形和参考面部图像三角形相对应的三组坐标分别为(x1,y1)与(x′1,y′1),(x2,y2)与(x′2,y′2),以及(x3,y3)与(x′3,y′3)。则存在关系如下:
(x′1,y′1)=f(x1,y1),(x′2,y′2)=f(x2,y2),(x′3,y′3)=f(x3,y3) (7)
其中,(x′1,y′1)、(x′2,y′2)、(x′3,y′3)为参考面部图像的每一个三角形的3个顶点的横纵坐标;(x1,y1)、(x2,y2)、(x3,y3)为输入面部图像的每一个三角形的3个顶点的横纵坐标;f表示输入面部图像的每一个三角形的某个顶点的横纵坐标到参考面部图像的对应三角形的对应顶点的横纵坐标的映射函数。
三组对应点足以确定仿射变换关系Taffine,用矩阵表示有如下关系,
所以,
其中,Taffine为输入面部图像的每一个三角形的顶点坐标和参考面部图像的对应三角形的顶点坐标之间的仿射变换矩阵;(x′1,y′1)、(x′2,y′2)、(x′3,y′3)为参考面部图像的每一个三角形的3个顶点的横纵坐标;(x1,y1)、(x2,y2)、(x3,y3)为输入面部图像的每一个三角形的3个顶点的横纵坐标;补充[1 1 1]为保证矩阵是齐次变换矩阵,负1次方为矩阵的逆。
输入面部图像中的像素坐标(x,y),可计算出其在参考面部图像中对应像素的坐标(x′,y′)为
[x′ y′ 1]T=Taffine[x y 1]T (10)
其中,(x′,y′)是参考面部图像中的像素坐标;(x,y)是输入面部图像中的像素坐标;Taffine是输入面部图像的每一个三角形的顶点坐标和参考面部图像的对应三角形的顶点坐标之间的仿射变换矩阵;补充[1]为保证矩阵是齐次变换矩阵,T次方为矩阵的转置。
将输入面部图像所有像素坐标值赋值为其在参考面部图像中对应坐标处像素,得到变形参考面部图像,完成了图像中参考面部图像相对于输入面部图像的定位和对齐。
妆容迁移过程:
如图1和图2所示,本发明定义皮肤细节层即
解释说明如下:
其中,是妆容迁移结果图像,是妆容迁移结果图像的皮肤细节层;ε是参考面部图像,εd是参考面部图像的皮肤细节层。
该方法定义色彩层为输入面部图像和参考面部图像的CIELAB色彩空间颜色层的alpha混合系数,即
其中,是妆容迁移结果图像,是妆容迁移结果图像在CIELAB色彩空间的颜色层a和颜色层b;I是输入面部图像,Ia,b是输入面部图像在CIELAB色彩空间的颜色层a和颜色层b;ε是参考面部图像,εa,b是参考面部图像在CIELAB色彩空间的颜色层a和颜色层b;α为每一项的相关系数,控制两个颜色通道的混合权重。P为像素点,C1为皮肤区域。对于本发明,设定α=0.95。
其中,α为每一项的相关系数,控制两个颜色通道的混合权重。P为像素点,C1为皮肤区域。对于本发明,设定α=0.95。
该方法定义的梯度为
其中,是妆容迁移结果图像,为妆容迁移结果图像的面部结构层;ε是参考面部图像,εs为参考面部图像的面部结构层。
光照迁移过程:
如图1和图2所示,本发明定义如下公式实现光照迁移:
其中,p为图像像素点;R为权利要求1中步骤(2)得到的简单妆容迁移结果图像,Rs为结果图像的结构层;I为输入面部图像,Is为输入面部图像的结构层;ε为参考面部图像,εs为参考面部图像的结构层;β为光照迁移参数,本发明设定为30;C1为面部图像的皮肤区域。
总之,本发明中提出的基于面部解析和光照迁移的复杂妆容迁移方法能够适用于多种参考妆容面部图像的场景。本发明首次将色彩平衡和双边滤波以及面部解析和面部妆容迁移以及光照迁移相结合,并应用到复杂妆容迁移中,大大降低了运行空间,减少了运行时间,提高了运算效率。通过实验显示出本发明提出的方法能够有效减少以往参考多幅参考图像所占用的空间,大大降低了发明成本,节省了运行空间;通过使用非深度学习妆容迁移方法,大大节约了运行时间,提高了运行效率;通过使用面部解析,解决了妆容迁移过程中的头发精细分割;通过使用光照迁移,解决了浓妆等复杂妆容迁移。并且本发明的复杂面部图像妆容迁移方法很容易通过软件实现,本发明可广泛应用计算机视觉、视觉设计、数字娱乐和电影制片等中。
以上所述仅为本发明的一些基本说明,依据本发明的技术方案所做的任何等效变换,均应属于本发明的保护范围。