该论文是09年的一篇3D人脸重建综述文章。
目前的大部分3D人脸重建系统受限于3d扫描设备的一些不足:
1、在扫描过程中要求一定的光线条件
2、无法从多个物体同时获取3D数据
3、没有反射的区域无法获得正确数据(如头发)
4、无法实时
5、如果是激光扫描时,会伤到眼镜
6、在扫描时以及后处理需要人的辅助
7、3D扫描设备的大小和价格限制了现实生活中的应用
一个可选的方案是,直接从2D图片重建出3D人脸。该方法简单廉价,有比较大的应用市场。
概念术语
一个三维空间的曲面,可以用三角网格或者点云来表示。
三角网格: M=(V,T) M = ( V , T ) ,其中 V=p=(x,y,z) V = p = ( x , y , z ) 是顶点, T=(pi,pj,pk) T = ( p i , p j , p k ) 是一个三角面。
range image: S=(x,y,f(x,y)) S = ( x , y , f ( x , y ) ) ,也被称为2.5D image,surface profiles,depth images,depth maps。
下图是不同术语的一个可视例子。
3D人脸重建的一些主题
1、3D人脸数据集
3D重建算法,需要有从设备扫描得来的一些3D数据。学术界大多使用MPI和USF数据集。MPI数据集包括了200个扫描人脸,每个有7个视角。USF有218个扫描人脸。
3D人脸扫描数据集制作的原则:
a、样本要足够多
b、扫描人脸的顶点要足够多,这样才能准确的描述一张人脸
c、数据集应该包括各种类型的人脸,如性别、表情、年龄、人种等
d、应该公开
2、3D人脸对应
在实现3D人脸重建算法之前,3D扫描人脸的一对一对应非常重要。一般对应可分为,刚性和非刚性。刚性,使用仿射变换矩阵,使得两个3D人脸距离尽可能的近。而非刚性,是调整某一3D人脸,使其尽可能的于另一个3D人脸一样。
ICP算法是一种非常经典的刚性算法。但在3D人脸重建中ICP是不合适的。
Basel Face Model用的是光流法的非刚性对齐。该方法在纹理变化太大的时候效果不是很好,比如有胡子和没有胡子。因此需要比较多的条件约束(如必须没有胡子),同时使用平滑插值避免奇怪的结果。不过该方法能够适用于不同的分辨率。
Hutton使用了Thin Plate Splines方法。该方法要求至少有9个特征点,根据这些特征点用刚性变换初始化算法。然后调整其中某一3D人脸,使其尽可能与另一个3D人脸对齐。对齐后相邻最近的那些点被当做correspondences。
3、特征检测
2D图像的一些特征点检测。主要用来:
a、在model-based 3D重建(如BFM)中用来初始化3d人脸的位置信息
b、定位图片中侧脸和正脸的特征,这样才能根据给定的人脸调整已经生成的3D人脸
c、在video-based 3D重建中初始化点的跟踪
d、当人脸来自不同的视角时,能够有利于配准。
4、一些假设
很多3d人脸重建算法,都有一些重要的假设。
1、投影类型,包括正交投影和弱透视投影。正交投影不会改变投影后的大小,而弱透视投影会改变(会缩放)。这个假设,使得3d人脸位于图片的中心,并且距离镜头很近。
2、反射率。固定反射率,表示该物体的外观不因为视角的不同而产生变化。在3D人脸重建中,这个假设认为,人脸是平滑的,没有油脂、伤疤等纹理不连续。
3、冯氏光照模型,只有一个环境光和一个方向光。在同时拥有室内和室外光时,该假设会失效。
4、对称性状/纹理。该假设认为,只要重建出了一半脸,另一半脸可以镜像生成。
5、人脸方位约束。如,要求图片中的人脸必须为正脸。
5、可变形3D模型
1、立体线稿模型
该模型用一些连续的顶点表示一个3D人脸,CANDIDE是利用该方案的一个例子。该模型可以通过Action Units进行变形。Action Unints包括了刚性变换参数、inter-individual变异参数以及within-person变异参数。该模型的一个主要缺点是顶点数太少,以至于重建出来的3D人脸不是太好看。可以增加顶点数,但是同时计算量也会增加。下图是CANDIDE模型的一个例子。
2、统计模型
PCA-based模型是统计模型中应用广泛的一个模型。统计模型是通过训练集和脸部外貌达到重建目的。该方法需要同时为性状和纹理各自训练一个PCA模型,如下图:
重建时可以使用如下公式: