首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于PCL的人体实时3D重建技术的研究与实现

作者:郑立国 刘杨 罗江林 来源:电子技术与软件工程

为了快速实现体感游戏中的人物建模,需进行人体模型的3D重建。本文研究并实现了基于PCL 的实时3D重建技术,并给出了其在人体三维重建中的应用。本文通过Kinect体感控制器作为人体深度图像获取设备,再通过调用PCL 库将深度图像转化成三维点云数据,然后运用基于K邻域密度的离散点云简化算法进行点云简化,再通过delauney三角化算法进行三角网格曲面重构,进而实现人体的实时三维重建。

【关键词】PCL 实时3D重建 kinect 点云简化 delauney三角网格曲面重构

体感游戏是一种通过肢体动作变化进行交互操作的新型电子游戏,随着计算机图形图像技术的发展,体感游戏中对3D重建、动作识别等技术的需求日益增大,对于一些沉浸式体感游戏,若能将真实世界中物体或者游戏玩家的3D人物模型置身于游戏场景中,玩家会获得更好的沉浸式体验。而对于真实的、复杂的物体,例如人物,再好的模型师也无法将真实的人等比完整复制,所以在对游戏玩家的面部或者身体重建等方面,人体的三维模型重建技术非常重要。

近年来国内外大量学者对3D重建做了大量的研究工作。Henry借助 Kinect 相机对室内场景进行三维重建。通过 Kinect 获得室内的三维模型,但得到的模型较为粗糙,模型上有很多的黑色斑点,速度也只有 2fps 左右,需要进一步提高算法的精度与性能。2011 年微软英国剑桥研究院的研究人员发起的KinectFusion 项目。KinectFusion 技术允许用户手持 Kinect 设备在室内场景自由移动,仅利用来自 Kinect 的深度数据实时跟踪传感器的三维姿态和重建,融合不同时序的深度图数据并重建出目标物的几何全局三维模型。尽管这种方法可以达到实时效果,但不适合于动态场景重建。刘鑫等人给出了一种基于 Kinect 传感器的快速物体重建方法,借助图形显卡 GPU 硬件设备,提出了一种简单易用的粗标定方法和全自动的快速物体重建方法。针对 KinectFusion 需要大量 GPU 存储空间的问题,曾鸣提出了一种基于八叉树的数据结构,并在数据节点存储符号距离函数。在八叉树结构的基础上,重新设计了重建更新和表面预测从而高效利用 GPU 的并行计算能力。这种方法能够保持快速的情况下比 KinectFusion 少耗费 10%的存储空间,且能够重建比 KinectFusion 大八倍的场景。Mirosoft Kinect作为一款体感游戏外部设备,它自身的SDK可以实现动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能,也可以实现简单人体的3维重建,但是效率较低,并且要使用Mirosoft Kinect 的SDK,需安装一系列微软的软件包,局限性较大。

针对以上3D重建算法存在的各种问题,本文研究了PCL点云库,鉴于PCL跨平台以及开源的特性,本文提出了一种新的实现物体3D重建的技术,并用于体感游戏物体及人物建模。实验结果表明,该技术简单高效,并且能保留重建后的物体及人物模型的大部分细节信息,该3D重建技术在物体和人体模型细节处都有很好的重建效果。

1 人体3D重建算法

算法思想:首先通过Mirosoft Kinect采集人体深度图像,然后利用PCL点云库将深度数据转化为3D点云数据,再对原始3D点云数据进行简化,再进行三角网格曲面重构,实现人体实时3D重建。

1.1 PCL点云库

PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,可以免费进行商业和学术应用。

如PCL架构图所示,对于3D点云处理来说,PCL完全是一个的模块化的现代C++模板库。其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。PCL利用OpenMP、GPU、CUDA等先进高性能计算技术,通过并行化提高程序实时性。K近邻搜索操作的构架是基于FLANN (Fast Library for Approximate Nearest Neighbors)所实现的,速度也是目前技术中最快的。PCL中的所有模块和算法都是通过Boost共享指针来传送数据的,因而避免了多次复制系统中已存在的数据的需要,从0.6版本开始,PCL就已经被移入到Windows,MacOS和Linux系统,并且在Android系统也已经开始投入使用,这使得PCL的应用容易移植与多方发布。

1.2 离散点云拓扑关系的建立

本文经深度数据转化后的点云属于离散点云,点的分布缺少规律性。因此,在对点云进行简化等处理前应先建立点云的拓扑关系,本文主要通过KD-Tree搜索的方法,实现离散点云拓扑关系k-邻域的建立。KD-Tree的方法通常用于查找距离最近的两点,它是一种便于空间中点搜索的数据结构。KD-Tree是一种较有特点的数据结构,每个节点代表一个矩形区域,同时,每个节点对应一个坐标轴上的划分。它的子节点就对应此划分,并且节点所对应的分割线与深度对应. KD-Tree还具有点分布均匀的特点,所以搜索效率较高。图2描述了二维空间生成KD-Tree的过程,首先按x轴寻找分割线,即计算所有点x值的平均值。以此平均值将空间分成两部分;然后在分成的子空间按y值划分,分割好的子空间再按x值分割。依此类推,直到分割的区域内只有一个点,这样的分割过程对应一个二叉树。二叉树的分支节点对应一条分割线,而二叉树的每个叶子节点对应一个点。

本文在对离散点云进行简化处理时,采用KD-Tree方法组织点云数据.建立k-邻域的算法描述如下(其中P为原始点云数据, Oi为每个k-邻域的中心点):

InputP,k;

Create(KD_Tree);

ComputeOiin eachk-nearestneighbors;

For (i=1; i[num(Oi); i++)

{createk-nearestneighbors according eachOi; }

Output allk-nearestneighbors;

1.3 点云简化

基于K邻域原理,本文采用基于K邻域的离散点云简化算法对深度数据转化后的离散点云进行简化。

简化算法整体流程:

(1)输入原始点云数据。

(2)确立中心点。

(3)对于每个中心点,利用KD-Tree法搜索距离中心点最近的k个点,建立k-邻域,其中这些最近点按照距离中心点由小到大顺序排列。

(4)判断每个k-邻域的密度大小。

(5)根据密度大小对点云进行简化,密度大处保留该邻域中所有点的平均点,密度小处则保留部分点,具体保留哪些点,依具体情况而定,原则上尽量保留中心点。

(6)若还有没简化完的k-邻域,则转(4),否则,转(7)。

(7)算法结束。

这里令k=20,共建立k-邻域24537个,原始有效点云数据为215521个,简化后点云数据为23311个,简化后的效果如下图所示:

1.4 三角网格曲面重构

三角网格曲面重构是针对空间离散点云而言的,在三维空间中对离散点云数据直接进行三角划分,意在能够快速的生成较优化的人体三角网格,实现人体重建。本文运用了对三维空间中的离散点云直接进行三角网格曲面重构的方法,并在其中运用了包围盒过滤的技术,实验证明,该三角网格曲面重构算法不但简单高效而且能得到较好的网格重构曲面。

算法主要流程如下:

(1)输入简化后的点云数据。

(2)生成初始三角形。

(3)三角化主过程。

(4)从边界边表中取出一条边e1。

(5)根据边e1所在的三角形确定包围盒大小;。

(6)从未处理的活点里找到边e1的最优顶点p,同时与e1的两个顶点分别生成边e2和e3。

(7)将点p的used变量置为1,表明这个点已经变为死点。

(8)从边界边表中将边e1删除,并加入e2和e3,同时将三角形e1e2e3加入到三角形表中。

(9)判断边界边表中是否为空,若为空则算法结束,否则,回到步骤(4)。

(10)算法结束。

2 实验结果及分析

运用以上步骤重建后的人体效果如图3所示。

由图3可知,本文算法可以对人体模型进行实时重建,并能在重建后的模型中较好的保留细节信息。

3 结论

综上所述,本文技术可以进行人体模型的实时3D重建。该技术能够在标准CPU上以更高的速率实现实时的人体3D重建,快速并且实时,并能在重建后的模型中较好的保留细节信息。本文研究的内容将应用到后续的体感游戏人物建模中。

参考文献

[1]Henry P,Krainin M, Herbst E,et al. RGB-D mapping:Using depth cameras for dense 3D modeling of indoor environments,2010.

[2]Izadi S,Kim D,Hilliges O,et al.KinectFusion:real-time 3D reconstruction and interaction using a moving depth camera:Proceedings of the 24th annual ACM symposium on User interface software and technology,Santa Barbara, California,USA,2011.

[3] Newcombe R A,Izadi S,Hilliges O,et al.KinectFusion:Real-time dense surface mapping and tracking: Proceedings of the 2011 10th IEEE International Symposium on Mixed and Augmented Reality,2011[C].IEEE Computer Society.

[4]Izadi S,Newcombe R A,Kim D,et al.KinectFusion:real-time dynamic 3D surface reconstruction and interaction:ACM SIGGRAPH 2011 Talks,Vancouver,British Columbia, Canada, 2011[C].ACM.

[5]刘鑫,许华荣,胡占义.基于GPU和 Kinect的快速物体重建[J].自动化学报,2012(08):1288-1297.

[6] Zeng M,Zhao F,Zheng J,et al. A memory-efficient kinectfusion using octree:Proceedings of the First international conference on Computational Visual Media, Beijing, 华南理工大学工程硕士学位论文60 China, 2012[C]. Springer-Verlag.

[7]Zeng M,Zhao F,Zheng J,et al.Octree-based fusion for realtime 3D reconstruction[J].Graph.Models, 2013,75(3):126-136.

[8] http://pointclouds.org/

[9] Chen Y H,Ng C T,Wang Y Z.Data Reduction in Integrated Reverse Engineering and Rapid.Prototyping. International Journal of Computer Integrated Manufacturing Vol.12(2) (1999),p.97-103.

[10]钱锦锋.逆向工程中的点云处理[D].杭州:浙江大学,2005.

作者单位

吉林纪元时空动漫游戏科技股份有限公司 吉林省长春市 130012