朱新山, 王宏星, 黄向生
(1.天津大学 电气与自动化工程学院,天津 300072;2.中国科学院 自动化研究所,北京 100190)
基于单个深度相机的带纹理人脸实时重建算法*
朱新山1, 王宏星1, 黄向生2
(1.天津大学 电气与自动化工程学院,天津 300072;2.中国科学院 自动化研究所,北京 100190)
三维重建的研究是近年来计算机视觉领域的一个热点。基于单个深度相机的KinectFusion算法具有实时性高、比较廉价等优点,在KinectFusion算法基础上提出了能够自动识别人脸的有效区域,通过获取相应的深度数据和RGB数据来进行带纹理的人脸三维重建方法。在点云配准阶段引入一个惩罚因子来平滑人脸的非刚体运动。根据获取的颜色信息建立颜色信息的场函数并进行纹理贴图,得到更加逼真的带纹理的三维模型;在重建过程中使用了GPU加速实现实时性。
人脸三维重建, 纹理融合, GPU加速
随着计算机视觉技术的发展,三维建模得到越来越多的关注,特别是在微软推出Kinect设备以后,使得三维建模的研究越来越普及,同时也使得深度数据获取变得更为便捷。三维建模的难点之一在于如何得到完整的三维模型,解决这一问题的传统方法主要有两种:1)对目标进行多次扫描以修复孔洞;2)多台设备从不同角度同时对目标进行扫描。获取完整三维模型的另一个难点是如何使用已经获取的不同方向的数据来进行三维重建,形成完整的模型[1]。使用Xtion配合电动转台采集多视角玉米果穗点云数据进行重建[2]。提出了一种旋转平台点云数据配准方法,因为基于旋转平台,使用局限性比较明显[3]。提出的方法对于单一颜色物体重建效果不好,而且对于体积较小的物体无法完成重建。
本文基于KinectFusion[4,5]算法,以Kinect设备提供的深度数据进行三维重建。
本文的三维重建方法流程如图1所示。
图1 工作流程
1.1 人脸检测和分割
Kinect以30 Hz的帧率提供640×480的深度数据和RGB数据。首先需要检测出人脸的位置,使用的方法是Haar classifier[6]。为提高其鲁棒性,分别对人脸进行正脸和侧脸两次检测。
在得到人脸区域以后,可以通过区域生长来剔除人脸以外的无效数据达到分割的目的。
为减少时间开销,只在算法开始或者重置算法后进行人脸检测。得到有效的人脸区域之后,在以后处理过程中就省略了人脸检测这一步骤。
1.2 深度图处理
该阶段主要包括双边滤波和将深度图转换成顶点图和法向图两个步骤。
1)双边滤波:原始数据不可避免地包含有噪声,因此,首先需要进行降噪处理。本文通过双边滤波来达到降噪的目的,该方法在降噪的同时可以有效保留边界信息。双边滤波的公式如下
(1)
上述的滤波过程,指数运算的复杂度比较大。由于深度图中两个像素间的距离为整数,可以通过查表来加速计算。
2)深度图的转换:令fx,fy,cx,cy为相机的内部参数,可以利用这些参数将深度图转换成顶点图(Vi表示),每一个顶点处的法向量可以通过向量的外积得到。
设(u,v)为深度图上任意一点,z=Di(u,v)为其深度值,对应的顶点Vi计算如下
(2)
由向量外积得到法向量
Ni=(Vi(u+1,v)-Vi(u,v))× (Vi(Vi(u,v+1)-Vi(u,v))
(3)
对其进行标准化Ni/‖Ni‖。
1.3 姿态估计
在该阶段,需要对每帧深度数据进行处理,估计人脸的姿态。主要使用迭代最近点算法(iterativeclosestpoint,ICP)来计算当前帧数据与前一帧数据之间的变换矩阵。
(4)
然后根据前一帧的顶点图和法向图来找到对应的点。
在找对应点对的过程中,可以通过设置阈值(包括距离和夹角两个方面)的方法来有效地排除离群点带来的影响,同时可以减小对应点对的搜索范围,加速计算过程。
得到对应点对之后,最小化点面距离,得到变换矩阵T。本文用E来表示对应点对的距离之和,距离是点对之间一个点到另一个点所在处的切平面的距离,公式如下
(5)
若为刚体变换,则有
(6)
则最终的目标函数为
(7)
式(7)可以写成
(8)
1.4 体融合
文中使用体素表示的方法来进行融合,该方法利用截断符号距离函数(truncated signed distance function,TSDF)将三维顶点转换成体素的表达方式。TSDF具体含义是空间中每个点距离其最近界面的距离。
在体融合阶段,遍历每一个体素,并通过加权平均策略来对每一个体素的tsdf值进行更新。对于一个体素(x,y,z)所表示的世界坐标系下的坐标vg为
vg(x)=(x+0.5f)×cell_size.x
vg(y)=(x+0.5f)×cell_size.y
vg(z)=(x+0.5f)×cell_size.z
(9)
式中cell_size为体元大小,表达式为
(10)
将vg变换到相机坐标得到v,随后将v映射到像素坐标平面得到对应的像素p为
(11)
实际应用中,一般令wi=1,即可得到不错的效果,且可以简化计算。
Kinect最佳扫描范围为0.5~3.5m。在0.5m之内,Kinect的结果准确度较低,扫面对象时浪费了扫描空间和分辨率。使扫描空间向前偏移一定量后得到的新空间符合工作要求,获得更加满意的结果,加偏移量之后的变换公式修改如下
vg(z)=(z+0.5f)×cell_size.z+a
(12)
式中 a为偏移量。
本文通过实验最终选择的参数为:分辨率128×128×128,实际大小0.4m×0.4m×0.4m,offset为0.5m。
1.5 光线投射和移动立方体算法
在三维可视化产业中,大部分三维模型都通过点云或者多边形网格的形式展现。光线投射和移动立方体可以用来得到点云或者多边形网格。
光线投射算法[7]的作用是得到更加精细的表面。对于每个像素点(x,y),可以认为相机会发出一条光线穿过该像素点,直到遇到重建表面该光线停止传播。光线和表面的交点可以通过线性插值得到。根据光线传播的方向可以得到深度值,然后形成整个深度图;而法向图可以通过TSDF得到。光线投射方法的主要作用是给ICP算法提供高质量的数据,当呈现在屏幕时,由此得到的噪声、阴影和孔洞都比原始的深度数据少。
移动立方体方法[8,9]可以对得到的重建模型进行网格化。理论上空间中的表面由TSDF值为零的点组成,但由于离散化的分辨率有限,所以不可能所有的零值点都恰好出现在子空间的函数值中。退而求其次,TSDF将空间分成两部分:物体内侧和外侧。TSDF是一个连续函数,所以零点应该在具有正值和具有负值的子空间中间。
确定了所有相邻的异号子空间,可以大致地勾勒出界面的样子。如果认为一个子空间与其上下左右前后六个相邻的子空间有棱相连,那么界面会穿过所有两端异号的棱。为了得到更加精确的结果,由于实际上棱长很短,认为在任意一条棱上TS-DF值是线性变化的,即使用线性插值的方法可以确定异号棱上TSDF的零点位置。认为棱上的零点都是界面上的点,而将其以子空间为单位组织起来,可以相应地连接成面片就得到了完整的对象模型。
纹理融合能够得到更加逼真的模型,而GPU加速可以提高重建速度,满足实时性的要求。
2.1 纹理融合
Kinect设备可以同时获取深度数据和RGB数据,因此,可以使用获取的RGB数据进行纹理融合。由于Kinect摄像头得到的RGB数据和深度数据是同步传输的,因此,在纹理融合过程中可以省去姿态估计步骤。
由于Kinect设备的RGB镜头和深度镜头位置和参数不同,相同像素点所代表的实际点不同,因此,需要进行信息校对,将信息匹配,使颜色和深度的对应关系相同。对于一个视角而言,RGB数据是二维图像,为了重建出完整的三维带纹理模型,需要不同视角的颜色信息。获取的大量数据之间存在噪声和融合的问题。
与深度数据处理类似,可以将空间按照相同的分辨率划分,认为每个子空间内的颜色相同,并认为相机所收到的光线是距离该相机最近的子空间发出的。
然后利用加权平均的方法将颜色信息融合。
2.2 GPU加速
由于算法计算量较大,同时要求实时性良好,这就需要计算算法高效快速。当提高分辨率时,其计算量远超过CPU所能支持的极限,需要采取其他方法进行优化。NVIDIA公司推出的CUDA显卡编程解决了这个问题。由于算法中存在大量的图形或类图形计算,所以使用显卡的并行结构进行运算,大幅减少了运算时间,提高处理速度,提升了帧率。
实验分别进行了不同分辨率下重建效果的对比以及相同分辨率下CPU和使用GPU加速处理效率的对比。
3.1 不同分辨率下重建效果
分别设置了64×64×64,128×128×128以及256×256×256三种不同的分辨率,重建效果如图2。
图2 不同分辨率人脸重建效果
由图2可以看出,重建的效果并不是严格地随着分辨率的增加而增加,当设置的分辨率达到一定值之后,再增加分辨率重建模型的精细程度变化不明显,甚至增加分辨率反而使模型表面不够光滑,原因分析如下:
64×64×64的效果不佳的原因是分辨率不足,导致图像重建不够精细;与128×128×128分辨率的模型相比,256×256×256效果不但没有提升,反而重建模型表面有些凹凸不平,分析原因可能是受到Kinect设备的限制。Kinect设备的精度总体为mm到cm级,因此,重建模型精细程度会受到硬件设备本身的限制。
3.2 纹理融合实验效果
前面的3幅没有纹理信息的重建模型,可以看出,虽然能够得到三维模型,但是不够形象逼真,而通过纹理融合得到的三维模型将颜色信息融合到三维模型,使得模型更加逼真。本文的实验分别进行了不同分辨率下的纹理融合,结果如图3所示。
图3 纹理融合示意图
3.3 GPU加速结果对比
在同一分辨率下的CPU处理所用时间和使用GPU加速处理所用时间进行对比如表1,分辨率为128×128×128,每次取3帧数据进行比较。
由表1可以看出,在release模式下,使用GPU加速后,对重建过程中的每一步都有了明显的提速,符合实时性的要求。
表1 Release模式下GPU加速实验 ms
本文实现了基于单个深度设备的人脸实时重建,主要通过两个方面进行加速:1)减少对人脸的检测,只有在人脸位移超过一定阈值才进行人脸检测;2)用查表的方法取代运算复杂的指数运算。另外,在姿态估计过程中,引入一个惩罚因子来减小非平滑运动对重建效果带来的影响。本文还对重建模型进行了纹理贴图,令三维模型更加形象,逼真。在双边滤波、姿态估计、颜色融合等过程中引入了GPU加速来实现实时性。
[1] 王 可,戈振扬,郭 浩,等.基于Xtion传感器的玉米果穗三维形态指标测量系统[J].传感器与微系统,2015,34(4):62-65.
[2] 周朗明,郑顺义,黄荣永.旋转平台点云数据的配准算法[J].测绘学报,2013,42(1):73-79.
[3] 郭连朋,陈向宁,徐万朋,等.基于Kinect传感器的物体三维重建[J].四川兵工学报,2014(11):119-123.
[4] Izadi S,Kim D,Hilliges O,et al.KinectFusion:Real-time 3D reconstr-uction and interaction using a movingdepth camera[C]∥Proceedings of the 24th Annual ACM Symposium on Us-er Interface Software and Technology,ACM,2011:559-568.
[5] Fitzgibbon A.KinectFusion:Real-time dense surface mapping and tra-cking[C]∥2011 10th IEEE Inter-national Symposium on Mixed and Augmented Rea-lity(ISMAR),IEEE,2011:127-136.
[6] Lienhart R,Kuranov A,Pisarevsky V.Pattern Recognition[M].Berlin Heidelberg:Springer,2003:297-304.
[7] Roth S D.Ray casting for modeling solids[J].Computer Graphics & Image Processing,1982,18(2):109-144.
[8] Lorensen W E,Cline H E.Marching cubes:A high resolution 3D surface construction algorithm[C]∥ACM SIGGRAPH Computer Graphics,1987:163-169.
[9] Newman T S,Yi H.A survey of the marching cubes algorithm[J].Computers & Graphics,2006,30(5):854-879.
Real-time human face reconstruction with texture integration based on single depth camera*
ZHU Xin-shan1, WANG Hong-xing1, HUANG Xiang-sheng2
(1.School of Electrical Engineering and Automation,Tianjin University,Tianjin 300072,China;2.Institute of Automation,Chinese Academy of Sciences,Beijing 100190,China)
3D reconstruction is a hot spot in the field of computer vision.Based on a depth sensor characteristics of real time and low cost of KinectFusion algorithm,a method which can automatically recognize face region by obtaining depth data and RGB data to reconstruct the 3D model on the basis of KinectFusion.This method adds a penalty factor to smooth the motivation of human face.Texture integration is applied to get a color information.GPU acceleration is applied during the reconstruction.
human face reconstruction; texture integration; GPU acceleration
10.13873/J.1000—9787(2017)08—0126—04
2016—07—14
国家自然科学基金资助项目(61573356)
TP 301
A
1000—9787(2017)08—0126—04
朱新山(1977-),男,博士,副教授, 主要从事机器学习理论与应用研究工作。