Digital Face Makeup by Example
Digital Face Makeup by Example
摘要
在保留脸部特征结构的基础上,改变颜色和皮肤细节。首先将两张图片分成三个图层,面部结构层、皮肤细节层、颜色层。然后将一个图像的层迁移到另一个图像的相关层中。使得只使用一张图片实现妆容迁移。
简介
第一步将图片分解成三个图层,其中面部结构图层,只包含每个脸部组件的结构,比如眼睛鼻子和嘴巴。皮肤细节层包含皮肤的纹理,主要包括,缺陷比如法令纹。颜色图层知识包含颜色的特性。妆容迁移主要是迁移皮肤层以及颜色层。从样例图像迁移到目标图像中。
数据化妆
主要分成四步骤
- 目标图像与样例图像的人脸对齐。
- 图层分解,将目标图像和样例图像都分解成三个图层。
- 每一个图层的信息使用不同的方式迁移到目标图层中。(皮肤层使用堆叠的方式,颜色层的迁移使用阿尔法混合,高亮和阴影主要在面部结构层中)
- 然后将三个图层合到一起。生成一个新图片。
人脸对齐
使用TPS将样例图像融合目标图像。如果使用关键点的话需要手动增加如下。
使用的有82个关键点。
这些关键点能够定位到面部要素特征,眉毛,眼睛,鼻子等其余部位就是皮肤。这些组件被分成三个类别。这三个类别使用不同的颜色说明如下图
其中不同的人的嘴唇变化不同,且嘴唇容易变形。所以需要使用特殊的方法针对这个区域。
层的分解
首先将层分解成颜色层和亮度层,然后将亮度层再次分解成机构层和皮肤细节层。
- 将图像转化到LAB空间,那么认为L channel 表示亮度,a,b channel表示颜色层。
- 第二步将light层转化成皮肤细节层和面部结构层。使用WLS算法(bilateral filting算法)
定义亮度层以及面部纹理层,为l, s。求解s问题可以转化成最小化东联函数
其中皮肤细节层,可以使用L层减去面部结构层s获得。
在文中的下半部分将会使用
代表结构层,皮肤细节层以及颜色层。
皮肤细节层转化
皮肤细节层转化特别的简单就是加权相加。
但是当要达到扑粉的效果的时候,I的权重可以设为0.
也可以将I设置大于0的权重。这样会保留自己的皮肤特点。
这两个权重不需要相加等于1,如果两个权重的值太小的话图片会失真。
颜色转化
意味着当属于皮肤区域的时候进行颜色转化,两者权重相加,一般使用的权重r=0.8
亮度和阴影转化
需要使用面部结构转化,包含大体架构,所以操作较为特殊。使用梯度编辑的算法。
Gradient-based editing 方法被使用。
嘴唇改变
嘴唇是容易改变的特殊区域,需要对每个像素进行改变,嘴唇化妆的结过,将merge到化妆的凸显上。嘴唇区域的L channel加到合成的L channel 上。
a, b channel 将嘴唇区域的值进行替换。