1. 引言
人脸的计算机模拟长期以来一直是计算机图形学及人机交互中非常活跃的研究领域,随着人脸识别技术、视频通信、人脸3D动画、虚拟技术的发展,三维人脸建模受到人们越来越多的关注,其中3D人脸模型重建是三维人脸建模的关键技术之一。
自Parke [1] 在1972年的开创性工作以来,在人脸建模方面已经有很多相关研究 [2] [3] 。根据输入数据的不同,人脸重建方法大致分为以下几类:基于扫描的方法,用数字化仪器(如3D激光自动扫描仪、立体摄像机等)获取人脸全景轮廓信息,得到重建模型,但是仪器的价格十分昂贵。从图像来建立人脸模型,Pighin等人 [4] 在利用多张人脸图像中标定特征点,从而重建人脸结构,但是仍然存在配准误差。Zhao、Chellappa等人 [5] [6] 在传统SFS (shape from shading)方法 [7] 的基础上,利用了人脸的对称性先验知识,提出了SSFS方法(symmetric SFS),该方法只需要一幅输入人脸图像即可,但它需要通过其他方法估计输入图像的光照情况以及精确的对称轴信息,增加了该方法在实用上的困难;Blanz、Vetter等人 [8] 使用主分量分析的方法表达输入人脸图像的形状、纹理及光照等情况,建立了复杂成像模型,难以满足有些实时系统的要求;Jiang等人 [9] - [11] 利用PCA技术,通过迭代求得人脸模型的姿态、缩放尺度、位置等参数,重构3D人脸形状模型,但其主要用在人脸识别方面,且重构精度有限;王成章等人 [12] 用遗传算法进行形变模型参数优化,但模型匹配时间较长。
本文提出一种基于单张输入图像人脸姿态估计的三维人脸形状模型的精确重构方法。首先介绍计算单张人像的三维姿态的方法,然后介绍了基于PCA技术的3D人脸形状重构算法及模型重建的过程,最后给出本文的实验结果。
2. 人脸姿态估计
根据人脸测量统计的知识,在人面部存在着一个平面区域(相对平行区),这部分由发际点、眼角点、口角点和颌下点连线构成一平面 [13] 。由于该区域内特征器官基本处在一个平面上,且在正视状态下该平面与Z轴垂直,因此人脸的姿态估计转化成为求该人脸平面的旋转角度问题。本文采用两个外眼角点E1、E2,两个内眼角点E3、E4,两个鼻翼点N1、N2,和两个口角点M1、M2作为对人脸姿态估计的特征点,如图1所示,它们在像平面上投影点分别对应为e1、e2、e3、e4、nl、n2、ml、m2。
利用以下的面貌形态特征:人脸部的眼角点在空间上连成一条直线,并且当人脸处于正视状态时,此直线平行于X轴;在空间上,两个口角点的连线与眼角点的连线平行;两条内眼角点和鼻翼点的连线(左右各一条)相互平行,且垂直于口角点连线和眼角点连线;以上四条直线在一个平面上。由于E1、E2的连线与M1、M2的连线平行,因此这两条直线若与像平面不平行,则它们在像平面上的投影线e1、e2和m1、m2将汇聚为一灭点vp1 (x1,y1,z1),同理,内眼角点和鼻翼点的连线E3、N1与E4、N2相互平行,它们在像平面上的投影线产生灭点vp2 (x2,y2,z2)。设向量M = {i,j,k}代表E1、E2连线的方向向量,N = {m,l,n}代表E3、N1连线的方向向量,F为人脸平面的法线向量,可得:F = M × N,又M垂直于

Figure 1. The feature points of face attitude estimation
图1. 人脸姿态估计特征点
N,故它们的内积为零,推导可得:
(1)
上式只与两个灭点的坐标有关,这样就可以求出人脸平面法线的方向向量,从而确定三维旋转姿态。设α、β、γ分别代表人脸相对X,Y,Z轴的旋转角度,则它们可通过下式计算得到 [11] :
(2)
对于γ,可由外眼角连线e1e2在像平面上的斜率得到,即关于Z轴的旋转角度就是外眼角连线与水平轴的夹角。
3. PCA算法分析
主成分分析算法就是利用相关模型的独立与非独立数据的关系来完成建模。最基本的要点就是将二维模型与三维模型分解到一个低维空间里,用主成分分析系数来表示真实模型
与
。
将表示人脸的n个顶点的坐标串接起来,组成形状向量来描述人脸的3D形状S,每个3D人脸形状向量可以描述为Si,其中
,m为样本库中用于训练的3D人脸形状模型的数目 [14] 。这些形状向量都已经在位置和尺度上进行了规一化处理,则任意一个新的3D人脸形状向量S可以表示为训练样
本形状向量的线性组合形式
。
采用PCA算法对训练集合中的3D形状向量进行分析,通过对协方差矩阵的特征值进行降序排列,根据所占能量选择前d个最大的特征值构成形状特征向量,得到投影矩阵P,形成统计变形模型:
,其中
是平均的人脸形状向量,t是对应于d维投影矩阵P的系数向量。当人脸姿态发生旋转时,则有:
其中R代表旋转矩阵,
代表旋转后的形状向量。根据上式,任意姿态下的3D人脸形状向量都可以由变换到同姿态下的PCA模型来表示,且重构系数不变。将提取的k个2D人脸图像上的关键点的坐标串接起来,表示为SI,本文试验系统中k = 28,如图2所示。
建立每一个2D的特征点与3D形状向量上的点的唯一的对应关系,将3D形状上的对应于2D特征

Figure 2. Feature points extraction of shape model
图2. 形状模型特征点提取
点SI的点抽取出来,表示为
。对平均形状向量和投影矩阵做同样的处理,得到
和
,再经旋转矩阵处理后可得:
(3)
把变换后的3D模型经过投影矩阵L投影到输入图像的平面上,则有下面等式成立:
(4)
通过将
投影到变换后的特征空间
中,求得重构系数t,公式如下:
(5)
其中
为SI,即输入提取的图像的特征点,
是伪逆转置矩。
4. 人脸库建立
利用GTAV Face Database里的人脸正面、侧面两张图像对三维人脸样本库进行了建立,对每个人的正面图像手动提取56个特征点,如图3(a)所示,并在candide模型中找到对应的点,依据Radial Basis Function变换确定其他点的x、y坐标,径向基函数选择
;在侧面图像中选取25个特征点,如图3(b)所示,也在candide模型中找到对应的点,依据RBF变换确定其他点的y、z坐标;然后把正、侧面模型的尺度进行规一化处理,建立3D人脸模型,如图3(c)所示;最后把所有的3D人脸模型统一到一个尺度(本实验把瞳孔距离统一到同一尺度),并规定眉心为坐标原点,并且认为人脸中轴线上的点的x坐标都为零,即都在人脸对称平面上。
5. 实验结果
首先根据本文算法估计出旋转角度并重构出稀疏的3D人脸形状向量,然后利用RBF变换把一般的密集3D人脸形状模型变换为特定的密集3D人脸形状模型,图4所示为重构的3D人脸形状模型效果图,第一行为输入的带偏转角度的人脸图像,第二行为重构的3D人脸形状模型正面图像,第三行为原有的人脸正面图像。
对比第二行和第三行可看出本文算法的重构效果可以令人满意。
为了衡量本文算法的精确性和对旋转姿态、特征点定位误差的鲁棒性,以真实的3D人脸模型经过旋转、投影后得到的特征点作为无噪声时的输入参数,并对这些特征点加均值为0、方差为0,1.0,2.0的高斯噪声,分别进行3D人脸形状重建,按式(6)计算误差,从而验证本文算法的精确性和鲁棒性,如图5所示,实线为本文算法,点线为传统算法。第1行到第3行分别表示输入特征点加上均值为0、方差为0.0,1.0,2.0的高斯噪声后的重构误差图,第1列到第3列对应α = 0:10:20,γ = 0:1:2,每个小图的x轴的0:15对应β = 0:2:30,α和β单位为度,y轴表示误差值。试验结果表明,对人脸旋转姿态和噪声来说,本文算法的误差无明显变化,且有噪声时本文算法误差比传统算法[9] 误差减小一半以上,证明了本文算法有很好的精确性和鲁棒性。
(6)
式中:Sr和S分别代表重构的和真实的3D人脸形状模型;k为特征点数;c为模型尺度。
(a) 正面特征点 (b) 侧面特征点 (c) 3D人脸模型
Figure 3. Setting up 3D face model
图3. 建立3D人脸模型

Figure 5. Error comparison chart of traditional algorithm and text algorithm
图5. 本文算法与传统算法图误差对比图
6. 结论
本文首先把输入图像中提取的特征点变换到以眉心为坐标原点,去掉位置变化的影响;再根据输入图像人脸的高度对所建的模型进行尺度调整,使其形状大小大致匹配,去掉比例的变化;根据输入人脸图像上两个灭点位置计算出旋转矩阵R;通过所建立的3D人脸模型样本库得到平均人脸,对其进行旋转并投影;最终根据计算式重构出人脸形状向量。
本文算法用较少的特征点对输入人脸图像的姿态进行了估计,重构时间在1 s以内,可以满足实时应用。但对某些比较特殊的人脸图像重构误差较大,其主要原因是有限的三维人脸样本库,因此下一步将考虑进一步扩充三维人脸库,同时考虑通过对图像的处理,找到一种可靠、自动的人脸特征点提取方法,实现特征点的自动定位。
资助信息
秦皇岛市科学技术研究与发展指导计划资助项目(2012021A048)。