Digital Face Makeup by Example

Digital Face Makeup by Example

摘要

在保留脸部特征结构的基础上,改变颜色和皮肤细节。首先将两张图片分成三个图层,面部结构层、皮肤细节层、颜色层。然后将一个图像的层迁移到另一个图像的相关层中。使得只使用一张图片实现妆容迁移。

简介

第一步将图片分解成三个图层,其中面部结构图层,只包含每个脸部组件的结构,比如眼睛鼻子和嘴巴。皮肤细节层包含皮肤的纹理,主要包括,缺陷比如法令纹。颜色图层知识包含颜色的特性。妆容迁移主要是迁移皮肤层以及颜色层。从样例图像迁移到目标图像中。

数据化妆

主要分成四步骤

  1. 目标图像与样例图像的人脸对齐。
  2. 图层分解,将目标图像和样例图像都分解成三个图层。
  3. 每一个图层的信息使用不同的方式迁移到目标图层中。(皮肤层使用堆叠的方式,颜色层的迁移使用阿尔法混合,高亮和阴影主要在面部结构层中)
  4. 然后将三个图层合到一起。生成一个新图片。

Digital Face Makeup by Example

人脸对齐

使用TPS将样例图像融合目标图像。如果使用关键点的话需要手动增加如下。

Digital Face Makeup by Example

使用的有82个关键点。

这些关键点能够定位到面部要素特征,眉毛,眼睛,鼻子等其余部位就是皮肤。这些组件被分成三个类别。这三个类别使用不同的颜色说明如下图

Digital Face Makeup by Example

其中不同的人的嘴唇变化不同,且嘴唇容易变形。所以需要使用特殊的方法针对这个区域。

层的分解

首先将层分解成颜色层和亮度层,然后将亮度层再次分解成机构层和皮肤细节层。

  1. 将图像转化到LAB空间,那么认为L channel 表示亮度,a,b channel表示颜色层。
  2. 第二步将light层转化成皮肤细节层和面部结构层。使用WLS算法(bilateral filting算法)

定义亮度层以及面部纹理层,为l, s。求解s问题可以转化成最小化东联函数

Digital Face Makeup by Example

其中皮肤细节层,可以使用L层减去面部结构层s获得。

在文中的下半部分将会使用

Digital Face Makeup by Example

代表结构层,皮肤细节层以及颜色层。

皮肤细节层转化

皮肤细节层转化特别的简单就是加权相加。

Digital Face Makeup by Example

但是当要达到扑粉的效果的时候,I的权重可以设为0.

也可以将I设置大于0的权重。这样会保留自己的皮肤特点。

这两个权重不需要相加等于1,如果两个权重的值太小的话图片会失真。

 

颜色转化

Digital Face Makeup by Example

意味着当属于皮肤区域的时候进行颜色转化,两者权重相加,一般使用的权重r=0.8

 

亮度和阴影转化

需要使用面部结构转化,包含大体架构,所以操作较为特殊。使用梯度编辑的算法。

Gradient-based editing 方法被使用。

嘴唇改变

嘴唇是容易改变的特殊区域,需要对每个像素进行改变,嘴唇化妆的结过,将merge到化妆的凸显上。嘴唇区域的L channel加到合成的L channel 上。

a, b channel 将嘴唇区域的值进行替换。