3D 模型的多姿态人脸识别张小平,李夏忠,刘志镜(西安电子科技大学计算机信息应用研究中心 陕西西安 710071)摘 要:多姿态人脸识别是当前人脸识别中的难点,识别率普遍不是很高。
本文提出了一种利用正面、侧面照片建立起三维虚拟人脸模型,然后对待识别照片进行角度估计,把模型库中的每一个3D 模型在该角度附近进行多次投影,搜索出与待识别照片相似度最高的照片。
这种方法可以有效的提高人脸识别率,增强人脸识别系统的鲁棒性。
关键词:人脸识别;三维模型;多姿态;角度计算中图分类号:T P 36811 文献标识码:B 文章编号:1004373X (2003)1405904Pose var ied Face Recogn ition Ba sed on 3D m odelZHAN G X iaop ing ,L I X iazhong ,L I U Zh ijing(Computer Info r m ati on R esearch Center ,X idian U niversity ,X i ′an ,710071,Ch ina )Abstract :Po se varied Face R ecogn iti on is a nu t of face recogn iti on and has a low rati o of recogn iti on at p resen t 1A w ay isp resen ted by bu ilding the 3D virtual person model u sing fron t and side face pho to and then m ak ing the p ro jecti on of the each 3D model near the ro tating angle esti m ated by the unknow n pho to fo r m any ti m es and finding ou t the si m ilar pho to 1R ecogn iti on rati o can be raised effectively and system ′s robu st is increased also by th is m ethodKeywords :face recogn iti on ;3D model ;po sevaried ;angle reckon收稿日期:200304221 引 言近年来,随着自动身份验证、视觉监视系统等应用领域的需求,计算机人脸识别技术受到了广泛的重视。
但目前大多数研究集中在正面人脸图像的识别上,然而图像中人脸的姿态不一定是固定的,研究多姿态人脸识别是非常必要的。
在这方面,B eym er 等采用引入虚视点的方法,即将二维的图像和三维的人脸模型相结合,对多姿态的人脸图像进行识别,用这种方法进行识别计算非常复杂[1]。
另外,L ades 等采用弹性匹配技术识别不同姿态的人脸[2],这种方法要求较为准确地定位特征,但是人脸通常缺乏足够的纹理信息难以满足这一要求。
当前,处理人脸多姿态识别主要有3种方法:一是利用多姿态人脸数据库,通过定位两个瞳孔点的位置加以配准,再对配准后特定姿态的人脸进行识别,这种方法需要很大的人脸数据库;二是利用与姿态无关的信息进行识别,如肤色模型,这种方法识别率不是很高;三是利用人脸三维几何特征进行识别,但对人脸旋转角度有限制。
本文采用建立人脸的三维虚拟模型的方法对人脸进行识别,可以有效地解决上述问题。
2 三维虚拟人脸建模本文采用从固定拓扑的一般人头模型变形的建模方法,由于人类面部特征的位置、分布基本上是一样的,特定人脸的模型可以通过对一个原始模型中特征和其他一些网格点位置进行自动或交互式的调整(保持拓扑不变)得到。
为了使标准人脸网格体在形状上与特定人相吻合,在特征细节上仍需进一步地调整与修改。
如果采用自动拟合方法,问题将转化为模式匹配问题,具体做法不在此讨论。
自动拟合方法虽然自动化程度高,但计算时间长,而且由于噪声的影响,结果常常不是很理想。
如果采用人机交互进行拟合,先将标准人脸图像的网格重叠到特定人的人脸图像上,然后利用鼠标拉动网格点使得标准人脸图像的眼眉、嘴、牙等主要对应部分尽可能地匹配,就可以使人脸模型更精确。
211 特定人脸3D 网格模型的建立这里采用的是人机交互方式,系统的内部有一个原始的人头模型,以后所有特定模型的建立都是基于这个原始模型。
假定包含整个原始模型的最小的立方体的高、宽、深度分别为h ,w ,d ,单位是象素点。
可按95以下步骤建立一个特定人脸模型:(1)显示正面的照片 用户在照片上定义人头所在的区域,区域的定义要求越小越好,正好把人头包括进去。
用户在正面照片上定义的矩形的高和宽为h f ,w f ,并给出了特定人头的最小外包含立方体的高h ′(=h f )和宽w ′(=w f )。
(2)显示侧面照片 用户定义人头侧面所在的最小矩形。
这个矩形的高和宽为h s ,w s 。
然后令h ′s =h f ,w ′s =w s h ′s h s ,最小外包含立方体的深度d ′=w ′s 。
本文对相机的焦距,相机和模特的距离不做任何要求(在文献[3]中,对相机的位置和焦距有严格的要求,而文献[4]中则使用了复杂的算法从多张照片恢复相机的位置),正面和侧面照片的焦距和距离可以有很大不同,其结果是有可能一张照片上的人头大,另一张照片上的人头小。
本文通过使h ′s =h f ,基本上使得两张照片上的人头大小相同。
(3)对原始模型中的所有点进行变换 x ′=xw ′ w ,y ′=y h ′ h ,z ′=zd ′ d 。
然后把原始模型网格的正面投影到正面的照片上,网格的侧面投影到侧面的照片上,如图1所示。
由于人类脸型和特征分布的规律性,原始网格和照片的形状和特征大致匹配。
图1 原始模型网络正侧面投影(4)对网格中和照片不相匹配的地方进行调整 为了达到在拉动模型网格点时周围其他网格点自动做相应的移动,即在现实上近似地模拟人脸皮肤的粘弹特性,需要建立一个自动变形模型。
设V ={v 0,v 1,…,v n ,v "1,v "2,…,v "m }是空间网格结点的集合,假设结点v 0被移动到v ′0,被该移动所影响的其他结点v 1,v 2,…,v n 做相应运动,v "1,v "2,…,v "m 是固定结点,其中移动结点的新位置是我们所需要求出的。
我们认为平衡状态是在结点移动和网线变化总和最小时达到,设v ′1,v ′2,…,v ′n 是结点v 1,v 2,…,v n 的新位置,e ′1,e ′2,…,e ′E 是平衡时的网线向量,T =(x ′1,y ′1,z ′1,x ′2,y ′2,z ′2,…,x ′n ,y ′n ,z ′n ),T 是结点v ′1,v ′2,…,v ′n 的坐标向量,其中E 是空间网格的网线个数。
这一问题可表示成如下优化问题:m in T ∈R3nf (T )=C∑ni =1‖vi-v i ′‖2+∑nj =1a j‖e j′‖2其中:c ,a 1,a 2,…,a E 是加权系数。
由于向量T 的元素个数较多,求解这一优化问题的计算量相对也较大。
为了降低计算复杂性,在具体计算中,可考虑采取一些简化。
我们称两结点间最少的网线个数为两结点“距离”。
一般来讲,距离越大,影响越小。
我们可以设定一个阈值,与被移动结点“距离”超过这一阈值的结点被当成固定点处理。
阈值的选择可根据具体移动距离的大小来决定,如果移动距离较小,阈值可以选择的较小。
实践中,通常我们在3~6间选择。
图2所示为与移动点v 相关的所有网格点的集合,取其中的距离阈值为3[5]。
图2 与移动点相关的点集最后三维网格点(x ,y ,z )中的x ,y 坐标来自网格正面投影与正面照片的拟合,z 坐标来自网格侧面投影与侧面照片的拟合。
经过这一步,得到特定人脸的3D 模型。
212 三维人脸网格体的磨光及显示完成了变换之后,就得到了一张具有特定人脸特征的中性三维人脸网格体,这必然要涉及一个如何将三维人脸网格体在计算机屏幕上显示为具有真实感的人脸图形的问题。
这就需要进行磨光、加光照等一系列可视化处理。
对于由空间多边形构成的三维人脸网格体,我们应用曲面磨光技术将其表示为B ézier 片的集合[6],然后加上眼白、瞳孔、头发等附加信息,最后由正面(图3(a ))、侧面(图3(b ))照片合成具有一定真实感的特定三维人脸计算机图形(图3(c ))。
3 旋转角度的估计及识别人脸姿态的变化可以有6个自由度,即沿x ,y ,z轴的平移和绕x ,y ,z 轴的旋转,如图4(a )所示。
对沿x ,y 的平移,在图像上表现为人脸位置的变化,可以通过适当的检测方法处理,对沿z 轴的平移,在图像上表现为比例的变化,这可以通过前述的比例归一化处理。
6文献[5]讨论的利用眼球旋转解决了处理绕z 轴的旋转。
因此上述6个自由度的变化只有2个难以直接从图像上确定,即绕x 和y 轴的旋转。
在一般的应用系统中主要用到对于绕y 轴旋转的斜视图像,所以这里重点讨论对于绕y 轴旋转的角度确定,用下面的算法进行初步估计: 图3 人脸模拟过程311 旋转角度的初步估计算法假设人脸是左右对称的,当人脸图像没有旋转时,其中分线正好位于人脸图像的中间,如图4b 所示,线AB 是旋转后的中分线,其偏离了人脸图像的中心位置,线CD 是图像的中心线位置。
人脸器官的中分线的旋转角度也就是图像的旋转角度。
图4 人脸的各种旋转如图4(c )所示嘴巴处的水平切面,P 是中分线在嘴巴处与水平切面的交点。
线O P 和Z 轴的夹角Ηro t _m ,就是从嘴部计算出的旋转角度。
其计算公式是:Ηro t _m =arcsin (dr )其中:d 是人脸器官中分线和轮廓中分线之间的距离;r 是嘴处脸的轮廓的宽度的1 2。
同样,如图4(c ),当d 是鼻子、眼睛处人脸器官中分线和轮廓中线之间的距离,而r 分别是鼻子、眼睛处脸的轮廓的宽度的1 2时,可以分别求出鼻子和眼睛处的旋转角度Ηro t _n ,Ηro t _e 。
为了减少旋转角度带来的误差,文献[7]取人脸的旋转角度Ηrot 为上述3个角度的均值,即:Ηro t =(Ηro t _m +Ηro t _n +Ηro t _e )3 在这里把他取为粗值(例如30°),对其进行进一步的角度推算。
312 旋转角度的精确计算和人脸识别过程利用D 1S 1C 法[8]进行角度的优化推算和人脸的识别,如图5所示。