阳 策,李 重,任 义,刘 恒
1(浙江理工大学 信息学院,杭州 310018)
2(浙江理工大学 理学院,杭州 310018)
近年来,人脸图像纹理合成和三维人脸重建已成为图形图像处理、计算机视觉、人工智能与模式识别等领域的研究热点内容.基于图像的三维人脸重建[1]由于能提升用户的体验感,在三维动画、计算机游戏、虚拟服装试衣等领域有着广泛的应用价值.
目前,基于图像的三维人脸重建可分为基于深度图像的重建[2]、基于多图像序列的重建[3]与基于单图像的重建[4]等方式.基于单张图像的三维人脸重建因使用人脸照片较少,操作实现方便,已成为人脸重建中的热点研究方向.基于单张图像的重建流程包括人脸图像特征点提取、肤色校正、人脸图像融合、人脸纹理图合成以及三维纹理映射等操作.现有的重建算法在人脸纹理合成时没有考虑光照不佳,眉毛遮挡等因素的影响,使得重建结果不够美观.因此,本文重点在肤色校正、人脸无缝融合以及眉毛重建等方面进行优化,充分利用单张图像上的信息生成具有真实感及美感的人脸纹理图.
在人脸特征点提取上,主动形状模型(Active Shape Model)[5,6]和主动表观模型(Active Appearance Model)[7]是两个最为经典的方法,开创了解决此类问题的两类经典架构;深度学习技术是近年来出现在机器学习领域的一种突出的信息分析建模技术,该技术基于多层神经网络架构实现对复杂模型的模拟和逼近,具有突出的揭示数据内在联系和结构的能力,有效推进了人脸特征点提取技术的发展.在肤色校正上,邱佳梁等人[8]提出肤色美白算法,能够较好地对光照不足的人脸进行提亮,但该算法无法对肤色偏差实现校正;Reinhard 等人[9]提出了经典的颜色转换算法,该算法对于图像全局的色调改变有一定的效果,但在局部颜色转换上存在问题;Chen 等人[10]使用基于局部线性嵌入算法的编辑传播,该方法要求用户手动选取需要被转换的区域以及不被转换的区域,没有实现完全自动化.在图像无缝融合上,常用的方法有加权平均法、高斯滤波法、多分辨率法、基于梯度域的融合法等.其中,加权平均法简单、计算速度快,但融合效果差,很难消除运动目标所形成的模糊阴影;高斯滤波法利用高斯核函数对图像重叠区域进行平滑处理,易造成局部模糊;多分辨率法将图像分解在不同频带,以实现整个图像的融合过渡,但需多次滤波,且计算量大,易造成信号减弱,导致图像模糊;基于梯度域的方法在梯度域实现图像的合成,利用已知图像的梯度信息引导插值融合,不会出现模糊现象,融合效果好.在轮廓提取上,Li 等人[11]提出不需要初始化的水平集模型,解决了传统的水平集模型重新初始化的问题,提高了轮廓拟合速度.
本文工作将对一张人脸图像采用基于局部线性嵌入算法的编辑传播来实现肤色的校正,对于需要转换的肤色区域,利用ASM 算法提取的特征点实现自动选取;采用泊松编辑方法将人脸五官区域与标准肤色图融合;同时,对于眉毛遮挡,本文提出一种结合Li模型与角点检测的方法重建眉毛轮廓;最后将生成的人脸纹理图映射到三维人脸模型上.
本文提出一个算法框架,对用户输入的人脸图像结合标准肤色进行美化处理,生成纹理图,实现三维人脸重建.首先,采用ASM 算法提取人脸特征点,用于区域约束和纹理映射;其次,采用基于局部线性嵌入算法的编辑传播来实现对人脸肤色的颜色转换;随后,通过泊松融合实现人脸区域与标准肤色图像的无缝融合,同时,分情况对遮挡眉毛进行还原重建.经过这一系列处理,得到美化后的人脸纹理图,将其映射到三维人脸模型上,得到重建人脸.算法流程图如图1所示.
本文采用ASM 算法提取人脸特征点.ASM 算法通过模型训练与模型搜索两个步骤实现特征点提取.在模型训练阶段,训练样本集建立主动形状模型与局部灰度模型;在模型搜索阶段,将第一步得到的初始形状对目标图像进行匹配,然后根据局部灰度模型调整参数,直至收敛.这样即得到最终的人脸特征点定位,实验结果如图2所示.
为实现人脸肤色的美白或修正由光照等外界因素造成的肤色偏差,我们采用颜色转换将原肤色转换为指定的肤色.自动颜色转换算法由Reinhard 等人首次提出.该算法统计原图像与目标图像在Lαβ颜色空间中像素的均值与标准差,通过如下色彩转换公式使原图像的色调与目标图像的色调保持一致.
图1 算法流程图
图2 人脸特征点提取
式中,c∈(r,g,b),Ir表示转换后的像素值,Is表示原图像像素值,means,meant分别表示原图像与目标图像的像素均值,devs,devt分别表示原图像与目标图像的像素标准差.
该算法对于图像全局的色调改变有一定的效果,但在局部颜色转换上存在问题,比如人脸的颜色转换.本文采用基于局部线性嵌入算法的编辑传播方法实现人脸的颜色转换.通过颜色转换,我们便排除了人脸照片拍摄时过亮、过暗等环境造成的不良影响.
(1)局部线性嵌入(LLE)算法
在颜色转换之时保持五官及皮肤的原有纹理,即保持数据的流形结构不变.局部线性嵌入(Locally Linear Embedding)算法在将数据从高维映射到低维的同时,保持数据流形结构不变,使得每个样本能够表示为其邻域的线性组合.我们用向量xi来表示在某个特征空间中一个像素点i.给定一个数据集x1,···,xN,对于每一个像素点xi,我们选取它的k个最近邻域,表示为xi1,···,xik,我们将计算出一组权重ϖij使得该k个邻域能够最好的重建像素点xi,LLE 算法通过最小化如下能量函数计算ϖij:
约束条件∑j∈Nϖij=1=1.求得ϖij后,与xi的邻域线性组合即可重建xi.
(2)编辑传播
接下来,我们将使用编辑传播的方法来实现颜色的转换.传统的编辑传播思想考虑两个条件:被传播的像素结果与用户输入(如指定颜色)接近;相似的像素经传播后具有相似的结果.基于LLE的编辑传播同样考虑第一点,不同的是第二点考虑在某个颜色空间中,由所有像素组成的数据流形结构保持不变.
给定原图像与目标图像,我们可以通过最小化如下能量函数来传递颜色:
其中,si是在像素点i处编辑后的结果,ti(i∈R)是指定的标准肤色.第一项维持在指定特征空间中数据流形结构的不变性,第二项保证最终结果与指定颜色接近,R是需要转换的区域.
该能量函数能够进一步地写成矩阵形式:
S是第i个元素为si的向量,I是单位矩阵,Λ是对角线元素为 λ的对角矩阵,T是第i个元素为ti的向量,W是元素为 ϖi j的矩阵.于是上面最小化能量函数的问题等价于求解如下稀疏线性方程:
本文采用三维人脸模型的标准肤色作为输入颜色,通过颜色转换,将原图像的肤色色调调整为与三维人脸模型一致.颜色转换结果如图3所示.
图3 颜色转换效果比较
本文通过泊松融合对人脸图像和标准肤色图实现无缝融合.泊松融合又叫泊松图像编辑[12],实质为在某个梯度向量场的引导下的图像插值,其基本原理如下:
设图像S上有一个闭合子区域 Ω,其边界为∂ Ω,V为原图像中待融合区域的梯度向量场,f为定义在S上的标量函数,已知f在∂ Ω上的取值为f∗,则f在 Ω内取V引导下的插值函数,即求解极值问题:
式中,∇f为f的梯度.因为该问题的解构成泊松方程,所以该方法被称为泊松融合.
图4 泊松融合示意图
本文通过ASM 算法检测得到的特征点自动选取出眉毛、眼睛、鼻子、嘴巴构成的区域作为待融合区域,这样初步排除了头发遮挡的问题.目标图像为一张标准肤色图,设定融合中心位于肤色图中心,使融合的人脸区域处于肤色图中间,这样得到一张无缝的人脸纹理图,用于三维人脸重建.由于标准肤色图的颜色是根据三维模型的颜色选取,纹理图的脸颊边缘颜色与三维模型的颜色一致,所以能够有效地解决边缘融合问题.
另外我们考虑眉毛被遮挡的情况,通过判断眉毛外侧角点邻域内的灰度值,检测得到眉毛被遮挡的不同情况.当出现眉毛遮挡时,泊松融合分两个区域进行,一部分为眼睛、鼻子、嘴巴组成的区域,另一部分眉毛区域则单独处理,可分三种情况:
(1)若一侧眉毛完整,另一侧眉毛被完全遮挡,利用人脸对称性,将完整的眉毛水平镜像映射到另一侧,如图5所示.
图5 眉毛镜像融合(一侧眉毛完整时)
(2)当两侧眉毛均被遮挡时,选取一对眉毛模板,将其融入两侧眉毛区域,如图6所示.
图6 眉毛模板融合(两侧眉毛不完整时)
(3)当一侧眉毛完整,另一侧眉毛仅部分被遮挡时,我们利用完整眉毛轮廓,同时结合另一侧未被遮挡的部分眉毛轮廓,来重建该侧眉毛,以达到更接近真实眉毛的效果.我们采用Li模型结合角点检测来修复该种情况的眉毛遮挡.首先,我们采用Canny 算子检测得到完整一侧的眉毛轮廓,然后将该轮廓线水平翻转,作为另一侧被遮挡眉毛的初始轮廓线.同时在被遮挡眉毛区域寻找中间角点,这样以角点为分界得到未被遮挡的部分,以此作为对Li模型演化的约束,演化得到最终的眉毛轮廓.如图7所示,图7(a)是完整眉毛区域,对其采用Canny 算子检测得到轮廓图7(b),将其水平翻转为图7(c).然后在有部分遮挡的眉毛区域寻找角点如图7(d),随后将图7(c)的轮廓以眉毛端点为基准贴合于该区域如图7(e),最后以角点为分界,在未被遮挡的眉毛区域通过Li模型演化得到最终的重建眉毛轮廓.得到重建眉毛轮廓后,将原图两侧眉毛以角点为分界进行融合.如图8所示,图8(a)选取未被遮挡的区域,图8(b)选取完整眉毛翻转后的外侧区域,将这两个区域融合得到重建后的眉毛,见图8(c),该重建眉毛利用了半遮挡眉毛的部分信息,更贴近于真实的眉毛.
图7 重建眉毛轮廓过程
图8 重建眉毛效果图
最终,我们将由上述算法得到的人脸纹理图映射到三维模型上.人脸纹理映射[13]可将二维图像上通过ASM 算法提取的特征点坐标与三维模型上对应的特征点坐标对应起来,最终可归结为一个最小二乘问题进行求解.本文利用OpenGL 提供的函数库来完成三维人脸模型的纹理映射.
该实验选取100 幅特定照片作为测试集,服务器端图像处理算法电脑CPU 为Intel 酷睿4 核4.20 GHz,内存为16 GB,在MyEclipse 运行环境中,通过Java 程序对待测人脸图像进行特征点提取、颜色转换、泊松融合以及眉毛修复等一系列操作.
为了验证本文算法对环境有较好的抗性,我们对不同光照背景下的人脸图像进行实验,可以看到,对于光线过暗的环境,算法能够较好地美白肤色,对于肤色偏差的情况,也能实现良好的肤色校正效果,实验结果如图10所示.
图9 三维人脸纹理映射
图10 人脸重建效果图(非正常肤色情况)
为了验证本文算法对眉毛遮挡的修复效果,我们对不同发型的人脸图像进行了实验,可以看到,算法能够较好地还原眉毛,实验结果如图11所示.
本文还与FaceGen 软件、深度学习方法[14]进行了比较,并记录重建完成所需要的时间(表1),实验结果表明,本文算法在时间上具有明显优势,有利于实时应用推广.本文结果在保持人脸相似度的同时,对人脸还进行了美化处理,并对头发进行了去除,眉毛进行了重建,使用户可以更换其他发型.FaceGen 在眉毛重建时眉梢会出现拉伸变形,在刘海去除上未能达到完全去除的效果;深度学习方法未实现对刘海的去除和眉毛重建.实验结果如图12所示:第一列为原图,第二列为本文方法结果,第三列为FaceGen 结果,第四列为深度学习方法结果.
图11 人脸重建效果图(眉毛被遮挡情况)
表1 本文方法与其他方法时间对比
图12 不同方法的三维重建效果比较
本文对人脸图像基于标准肤色进行美化处理,生成人脸纹理图,将其应用于三维人脸重建,得到个性化三维人脸模型.由于现实生活中拍摄的人脸图像可能存在头发遮挡,光照条件不佳等情况,对人脸图像的三维重建往往无法得到美观的效果,为此本文提出一个算法框架,能够对人脸实现自动检测及美化,从而得到较好的人脸重建结果.实验结果表明本文算法能够得到令人满意的重建效果,包括能够重建被遮挡的眉毛区域,并且较其他方法具有优越的运算效率,能够达到实时性.
本文在人脸纹理图生成时,要求输入图像为正面人脸图像,如何通过视频获取更多角度的人脸图像信息进行人脸纹理生成,以及考虑人脸偏转实现姿势矫正等,达到精度更高的重建效果将是我们今后的工作.同时,人脸上的装饰物(如眼镜)会影响纹理图的生成效果,如何去除装饰物影响也是我们的一项重要工作.另外,现有工作是通过标准纹理映射算法将人脸图像映射到三维人脸模型上,如何构造更加准确的纹理映射算法生成高质量三维重建人脸,也是今后的主要工作.