1. 引言
人类通常对事物的感知是从三维的角度出发的,而且由于人类特殊的视觉系统,即使是二维的人脸照片,人类也能自动生成其三维形状。如果计算机可以模拟实现和人类视觉系统相同的功能,那么计算机对人脸图像的认知、检索和分辨能力都将有很大的提高。而这就要求计算机能够利用二维人脸图像自动重建相应的三维形状模型 [1] 。
人脸三维重建技术改变了传统的人脸图像检索和识别手段,可以根据实际需求模拟出各种情况下的人脸状态。而且三维模型比普通的二维图像更接近真实状态,能够更好地模拟实际情况,更便于理解和操作。迄今为止,在国内和国外仍然有很多研究机构都在进行三维人脸建模的研究工作,目前人脸三维模型已经广泛应用在医学手术、三维动画制作、人脸识别、视频通话等领域 [2] 。人脸三维模型的重建已成为计算机视觉的一个重要研究领域和挑战性课题。关于人脸三维重建的方法较多,结合双目立体视觉和形变模型的优势,本文提出了一种实现人脸三维重建的方法。
2. 系统组成
本系统由七部分组成,分别是相机标定功能、图像获取功能、图像处理功能、图像校正功能、人脸鉴别功能、人脸匹配功能和三维重建功能(图1)。相机标定使用鲁棒性和准确性较高的张正友标定方法;实验使用图像通过硬件工业相机模拟双目进行获取;利用滤波技术将图像进行初步处理,以减少噪音,突出边界等作用,配合标定出的相机内外参数,对图像进行畸变和立体校正;人脸识别使用。
3. 识别算法与重建
3.1. 匹配算法
SIFT算法是David Lowe于1999年提出的基于局部区域的特征描述子,能同时解决两幅图像之间发生的各种任意的旋转和平移,以及不同角度的仿射变换等情况下的匹配问题;另外SIFT扩展性强,可以很方便的与其他形式的特征向量进行联合 [3] 。
SIFT特征匹配分为三个工序:提取关键点,生成特征描述器,特征点匹配。SIFT算法先求解图像每
一个像素点的Hessian矩阵,并提取图像的特征点,然后进行计算高斯卷积 [4] ,将Hessian矩阵的行列式中的区域极大值点认为图像特征点。
当提取特征点的时候是在特征点邻接矩形区域内进行,利用Sobel算子来计算特征点区域水平和垂直方向的梯度,接着公式(1)和公式(2)计算幅值g和方向theta [5] 。
(1)
(2)
每个像素点都有一个幅值和方向,对于有颜色的图像会在R、G、B三个基色分量上计算梯度,并最终选取最大的幅值作为该像素点的最终幅值。然后对20 × 20 (单位为pixel)区域划分为4 × 4 (或2 × 2)的子区域,每个子域计算8 bin直方图(即每45˚为一个方向块) [6] 。最后根据计算出的梯度幅值和方向,将结果根据比例相加在直方图对应的方向块(即对应bin)中,形成梯度直方图得出该区域相关方向数据。
最后通过特征点描述子之间的欧式距离作为相似性度量结果。首先计算获得模板图的关键点描述子
和实时图的关键点描述子
[7] ,然后计算任意两描述子相识性度量
(3)
SURF构造的金字塔图像与SIFT有非常大的不同点。SIFT使用的是DOG特征,而SURF [8] 使用的是Hessian矩阵行列式中的近似值图像,使得检测速度变快。图像中某个像素点的Hessian矩阵如下:
(4)
对某个像素点都有对应一个Hessian矩阵。在计算Hessian矩阵前,都需要对其先进行高斯滤波一下 [9] 。滤波后再进行求解Hessian矩阵,如公式(5)所示:
(5)
是高斯滤波之后的图像在x方向的二阶导数,而
、
为普通二阶导数。为了尽可能的减小相应的计算复杂度,就应该使用积分图像,该方法目的是在模糊图像的基础之上把原本的模块再近似。
使用一般方法计算图像的二阶导数比较复杂,所以引入了积分图的方法。它是指当前像素点所在的位置距离原点(0,0)坐标所包围面的所有灰度值之和 [10] 。计算图像中某一块矩形的区域灰度和
利用矩形的4个顶点
(
,按从上到下、先左后右的顺序)的积分值
即可。
(6)
在函数定义之前要计算出每一坐标点原本的积分图像,然后才能计算essian的特征值情况。因为函数模板是相似的,所以需要修正特征值的计算方式:
(7)
其中0.9是一个经验值。
3.2. 三维坐标求解算法
在重建中,实验涉及三个坐标,分别是世界坐标、相机坐标和图像坐标。在重建中,实验涉及三个坐标,分别是世界坐标、相机坐标和图像坐标。世界坐标系是目标物体位置的参考系。在标定时确定标定物的位置,盛放重建后的物体的三维坐标。摄像机坐标系:其是摄像机站在自己角度上衡量的物体的坐标系。它是与拍摄物体发生联系的桥头堡,世界坐标系下的物体需先经历刚体变化转到摄像机坐标系,然后在和图像坐标系发生关系。它是图像坐标与世界坐标之间发生关系的纽带,沟通了世界上最远的距离。而图像坐标系:其是以摄像机拍摄的二维照片为基准建立的坐标系。用于指定物体在照片中的位置。
空间点的重建不仅与空间点或者空间结构在图像中的位置有关还与摄像机的内部和外部参数有关。三维重建的原理在于三种坐标之间的转换。
实验用最小二乘法来对特征点的三维坐标进行第一次求解。对图像中的特征点的坐标进行处理,使其为齐次坐标。并利用特征算法进行左右图像上的特征点匹配,并记录其齐次坐标,进而计算出投影矩阵,得出特征点的世界坐标。因为实际应用中提取的数据含有噪声,所以采用最小二乘法的方法来再次求解特征点的世界坐标值。
紧接着针对双目立体视觉系统,采用一种特殊的三维空间点求解方法,即基于视差原理的视差测距法两个摄像机平行共面放置,两个摄像机的光轴也互相平行,并且还有一对坐标轴共线,通过使用两个内参数相同的摄像机,使放置的双目视觉系统的基线距离固定,然后再获取摄像机的内参数求解物点的空间三维坐标。
对于图像中的一个特征点,获取其在左右图像的投影点坐标,并且计算出视差。因为两个摄像机中心连线距离即为基线,由公式(8),计算出特征点的三维坐标。利用第一次测得的特征点坐标与本次测得的坐标进行均值,降低了实验误差,提高了测量精度。
(8)
其中
为特征点的三维坐标,
为左图像的投影点坐标,d为视差,B为两个摄像机中心连线距离,f为焦距。
通过采用基于视差测距法和最小二乘法来求解三维坐标,得出实验精度与摄像机焦距、摄像机之间的基线长都有关系,焦距越长,基线越长,精度就越高。验证了三维重建的正确性和可行性,可以有效的应用于计算机视觉的应用中。
3.3. 人脸三维重建算法
人脸检测是人脸识别(Face Recognition)的基础,其经过几十年的发展已渐趋成熟。早期使用人工提取人脸特征,训练分类器,进行人脸检测的方法。缺点是当环境较复杂且变化强烈时,检测效果不理想。后来出现从通用的目标检测中移植过来的人脸检测方法效果较好,并能适应于复杂的环境变化,但很耗时。综合二者的优缺点,出现了基于级联结构的卷积神经网络的人脸检测算法,时间和效率皆优。
由于本实验只需得到人脸的大致区域,对算法精度没有过高要求。重点在于人脸的三维重建。所以本实验是利用Opencv提供的接口进行人脸检测并截取出人脸。
Opencv的人脸检测主要通过Haar分类器实现,预先训练好物体的检测器(xml格式),包括正脸、侧脸、眼睛等特征。大概思路是首先将图像均衡归一化到同样大小,利用多级高检测率低拒绝率的多层树分类器逐步拒绝所有的非人脸部分,最后剩下的就是人脸区域。将人其标记截取出来。
对截取后的人脸利用SIFT算法进行特征点提取和匹配,然后利用匹配点坐标计算视差,求出对应点的三维坐标。
实验中提出了一种双目下基于形变模型的人脸重建方法。传统的基于形变模型的三维人脸重建一般分为两部分:一是获取原始人脸数据并建立组合模型;二是针对特定人脸图像使用模型进行匹配实现三维人脸的重建。本实验中的创新之处在于,原始人脸数据是利用三维测量原理计算得到,而非寻找二维与三维坐标的大致转换关系 [11] ,视差计算得到三维坐标的精度比之高很多。
三维人脸可视为线性子空间,即公式(9)。
(9)
为组合因子,满足
。
人脸的三维形状信息可用匹配点的坐标表示,即
(10)
其中k为匹配点的数目。直接使用三维人脸数据重建三维人脸,计算量巨大。这里采用的是主成分分析(PCA)理论对样本数据库进行降维 [12] ,得到
(11)
其中
为平均三维人脸,P为选取的主成分对应的特征向量集合,
为形变因子。
采用基于贝叶斯最大后验概率的最优解法,令目标函数为
(12)
其中
权重系数。根据奇异值分解,有
,其中
为特征值构成的对角矩阵,U由
的特征向量构成,V由
的特征向量构成。得最优解为
(13)
将公式(13)的计算结果代入公式(11),得到三维数据的重建结果为:
(14)
然后为三维重建结果加上纹理图 [5] ,即完成了人脸的三维重建。
4. 实验结果与分析
4.1. 特征匹配
对目标进行人脸特征匹配时,会出现对无用点的匹配,既浪费时间,也浪费资源,相关数据见表1。因此在对目标人脸进行人脸识别前,需要图片中的人脸进行截取,为保证还原的保真度,我们采用保持截取人脸的图像尺寸不变的原则。
程序输出得到若干个包含人脸的矩形框位置(x, y, w, h)。其中x与y表示人脸在原图中坐标,w与h表示获取得到的人脸的宽与高。对匹配点的坐标进行适当的线性变换便可得到该特征点在原像素坐标系中的坐标。
截取后,立体匹配区域显然变小,匹配效率自然会大幅度提高。实验表明,从图像中获取人脸区域再进行立体匹配可以极大提高匹配的效率。
特征匹配前使用SIFT算法对人脸的特征点进行提取,将特征点的位置画到图像上,提取结果如图2所示。
![](Images/Table_Tmp.jpg)
Table 1. Three-dimensional information of five sets of feature points
表1. 五组特征点的三维信息
![](//html.hanspub.org/file/7-2670155x44_hanspub.png)
Figure 2. Results of feature point extraction by SIFT
图2. SIFT提取特征
特征点集中分布在脸部边缘、头发边缘、以及眼耳口鼻处。脸部边缘和头发边缘颜色变化大,像素灰度值有突变,所以有很明显的边缘特征。眼耳口鼻处表面形状复杂、凹凸不平,有很多角点、边缘、线段等,在很小的局部区域内表现为颜色、亮度、形状有明显差别。
将两张人脸图片中对应的特征点,使用BruteForce进行匹配,绘制从两个图像中匹配出的关键点,匹配结果如图3所示。剔除边界特征点的判断方法比较严格,有可能误删正确的特征点,特别是特征点靠近图像外围时。所以,为了减少误删特征点,裁剪脸部图像时,在周围保留了一圈对人脸三维重建影响不大的背景,即墙面。这样的话,误删的匹配点主要是墙面的特征,不影响人脸的特征提取和匹配。
图3中特征匹配的结果中,大量的特征点间的线都是水平的。符合实验精度的要求。
4.2. 三维坐标求解
实验是基于Matlab和VisualC++,为了验证本文采用方法的有效性,进行如下实验:随机选取一组图像对,利用公式计算出图中匹配的特征点的三维世界坐标值,如表1,并通过相关数据的计算比较进行验证。
特征点到摄像机的计算距离与实际距离误差不超过1.5%。可见,本文三维重建的正确度比较高。所产生的误差由如下几个方面引起:首先,摄像机标定过程中仍然存在不可避免的误差,例如未考虑薄透镜畸变;其次,实际测量的距离信息也可能存在误差;第三,特征点提取存在误差;第四,光线等引起的噪声干扰。
4.3. 人脸三维重建
使用本文中算法,对双目相机获取的人脸图像,进行特征点提取和人脸三维重建。人脸三维重建模型实验结果如图4所示。
选择平均欧氏距离作为客观评价标准
。
是两个形状的曲面,V分别是曲面上的顶点集合。
分别是
上的顶点。三维重建精度与时间如表2所示,选择文献 [12] 作为对比算法。本文算法的重建精度有所下降,但是其仍可以保持较好的精度,却可以极大地提高三维重建的效率,为实时三维识别奠定了基础。
5. 结语
本文采用SIFT算法、特征点标定方法实现了人脸的三维重建。最终的人脸模型网格足够稠密,精度足够高,而且与实际人物相符,准确度也达到了预期的要求。与其它常用的人脸三维重建技术相比,本文提出的方法原理更加简单直观,对设备和环境的要求不高,不依赖标准人脸模型或人脸数据库。建模的准确度、精度和速度都足够满足常规的要求,适用范围很广,在目标识别、动态追踪、三维重建等计算机视觉领域有一定的优势。但SIFT算法的计算量很大,现阶段还不能将其直接用于人脸的实时三维重建。进一步提高SIFT算法的计算速度是未来的一个研究方向。
![](//html.hanspub.org/file/7-2670155x49_hanspub.png)
Figure 3. Results of feature matching by SIFT
图3. SIFT特征匹配
![](//html.hanspub.org/file/7-2670155x52_hanspub.png)
Figure 4. Results of 3D reconstruction of the face
图4. 人脸三维重建结果
![](Images/Table_Tmp.jpg)
Table 2. Contrast results of 3D reconstruction of face and time of use
表2. 重建精度与时间的对比
基金项目
本文得到国家大学生创新创业训练计划项目(201710490012)、武汉工程大学校长基金项目(2017042)的支持。
NOTES
*通讯作者。