国外三维人脸识别的典型方法主要是利用深度图像自身的几何特征,利用深度图像处理技术,分析面貌曲面的曲率等几何特征,对面貌曲面进行凹凸区域的分割、正侧面轮廓边缘的提取。最早对三维图像面貌识别的研究有Lapreste 提出的基于轮廓线的方法,通过对人脸面貌曲率的分析,提取轮廓线上的特征点,利用轮廓线作为特征进行面貌的识别。Lee&Milios 从人脸面貌深度图像中抽取凸区域,这些凸区域形成了特征集,计算出所有凸区域相关的扩展高斯图,两幅面貌特征的匹配就是利用这些扩展高斯图像进行的。当然还有很多基于轮廓线和凸区域的改进方法,例如凸凹点多阶段融合过程方法、轮廓线的欧氏距离识别方法、轮廓线曲率比较方法等等。但这些方法还停留在理论研究的层次,没有实质的自动化系统的出现。国内三维人脸识别的研究也相应地展开,但与国外的研究相比还处于刚起步的状态。目前,三维数据获取已经成为可能,并已经成熟的在实际工作中使用(如三维激光扫描技术、CT成像技术、结构光方法等),使得三维图形识别技术得到了应用的可能,可以迅速地完成人头三维面貌数据获取。这也为我们的研究提供了实现的基础。
总的来说,要实现一个自动的人脸识别系统主要要完成以下的4个功能。
① 人脸检测(Detection)与分割(Segmentation)。从任意的场景中检测人脸的存在并进行定位,提取出一个人脸。
② 人脸的规范化(Normalization)。校正人脸在尺度、光照和旋转等方面的变化。
③ 人脸表征(Face Representation)。采用某种方法表示出数据库中的已知人脸和检测出的人脸,通常的方法有几何特征、代数特征、特征脸、固定特征模板等。
④ 人脸识别(Recognition)。根据人脸的表征方法,选择适当的匹配策略将得到的人脸与数据库中的已知人脸相比较。
我们研究的基于三维模型的人脸识别方法,与以往的系统的最主要区别就在于:人脸库中记录的不是像以前一样,记录着每个人的各种姿势、位置、表情的头部照片,而是存储的一个人脸的三维空间模型。由这个区别引申出人脸的表征和识别的方法也与二维识别方法不同。
由于人脸表征的区别,三维人脸识别系统也分两类,一是纯三维之间的对比,例如通过多角度拍照,系统自动构建人脸的三维模型,与库中的三维模型进行比较。这种方法中人脸的表征是一个基于三维的特征向量。由于人脸的三维重构目前还是一个正在研究的领域,其过程依然是一个病态的过程。因此我们没有选择这种方法进行我们的系统开发。第二种系统是通过三维模型增强了的二维之间的对比。即通过对三维模型的变化,我们可以找到和成像环境一致的三维模型的位置,通过其平面投影得到一个二维的图片,和原有的照片进行二维上的比较,实现识别的过程。在选择人脸表征时,使用了实时性最好的特征点表示法。使用人脸关键特征点所形成的几何特征来对人进行区别。
由这个主导思想,产生的新的人脸识别系统的主要功能如下。
① 人脸检测与分割。从任意的场景中、视频数据中检测人脸的存在,提取出一个人脸及各个区域部分。在人脸上自动标记出我们需要的特征点, 例如外眼点、内眼点、眉间点、鼻下点、颌下点、嘴角点等。
② 人脸的规范化。计算出人脸在尺度和旋转等方面的变化,得到摄像过程中人脸的实际位置,将库中的人脸三维模型也变化到同样的位置。这是几何特征识别的一个关键的问题。由于人脸的几何特征的相似性比较,受人脸拍摄角度的影响很大,当人脸偏转超过一定的角度的时候,许多重要的特征点在二维上不可见了,因此也无法计算出对应的特征向量。如果不能将人脸模型和照片保持在同样的偏转环境下,识别的可信性就不具备。对这个问题的解决可以结合人类学、面貌测量学多年来由统计而来的经验公式来完成。
③ 人脸表征。采用标记出的特征点的几何特性(例如特征点分布欧氏距离、B样条曲面等方法)表示出数据库中的已知人脸和检测出的人脸。对同一个照片的特征点采取多层次描述的方法,形成多个几何特征向量,这种多层次描述的方法可以有效地降低人脸识别过程中的误识现象的出现。同样,识别的过程也是采取多分类器合作的模式识别方法。
④人脸识别。根据获得的人脸照片特征点,计算出人脸的偏转角度,同时计算出多个特征向量,从数据库中取出已知的人脸特征点信息,构建出三维人脸特征点拓扑模型,对此模型进行偏转,使之与二维人脸照片的拍摄环境一致。计算出三维模型的多个特征向量,通过面貌特征的多层次描述、多分类器合作的模式识别方法,对投影结果与二维相应照片进行相似性度量。在进行识别时,对每个分类器设定一个阀值,对所有的特征向量的结果也设置一个阀值,一旦所有的度量结果都达到阀值的要求,即认定此次识别是成功的,否则继续从数据库中读数据,进行识别。
技术路线与设计方案
为了实现上面的研究内容,我们选择了一个可行的解决方案。使用Microsoft Visual Studio作为系统的开发平台,利用其提供的强大的图形图像处理功能,使用OPENGL专业三维引擎,最后配合Oracle数据库对异构数据的管理功能实现系统。其中,人脸三维数据的获取采用加拿大polhemus公司生产的手持式三维激光扫描仪FastSCAN以及Inspeck公司基于结构光栅拍摄的三维数据建模设备(Inspeck)。其中的关键技术如下所述。
(1) 供系统管理人员使用的管理平台。主要检测进行人脸三维数据的获取和预处理以及三维特征点的选择和存储等功能。利用Visual C++和OPENGL开发的三维模型的管理系统,通过激光扫描仪或结构光拍摄相机获得原始的人脸三维模型,由于得到的三维数据坐标不统一,为了便于计算使用,要进行坐标的统一,通过平台实现对原始模型的光滑平顺,坐标变换,根据分辨率要求,生成三维面貌表面数据。由于人脸
的三维特征点的选取工作不要求太强的实时性,故可以采取手工选取的方式,由系统管理员通过平台对特征点进行标定。全部标定结束后,记录入后台数据库中。当然管理平台还具备其他的功能,例如新用户的添加、用户的删除、信息修改等常用数据库管理功能。
(2)基于Visual C++、OpenGL和DirectShow开发出人脸的自动化识别系统。首先通过DirectShow对视频流进行分析,自动检测出人脸的存在并从图像中将其分割出来。找到人脸后,使用VC实现的ASM主动形状模型对人脸特征点进行自动的标定。得到特征点后,根据主要的特征点位置,计算出拍摄角度。对三维数据的进行读取,读取后使用OPENGL构建出人脸的抽象三维模型,同时按照拍摄角度的变化模型。当三维模型的平面投影和二维照片中人脸的旋转角度相同时,通过多特征向量生成、多分类器判别及阀值设定的方法实现识别。
(3)底层数据库使用Oracle数据库,利用它良好的异构数据存储性和大量数据的处理能力,实现系统需要使用到的三维空间信息和属性信息的统一存储,以及对海量数据的查询检索。
(4)不论是管理平台还是自动识别系统,对人脸数据库的读取都通过数据库中间件完成,统一的进行信息读取、维护、操作。
最终形成一个基于三维数据库中间件的三层C/S体系的应用程序。