register

前期用Kinect获取所需三维人脸数据后,本周主要完成点云配准的工作。

PCL环境搭建

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

我是按照这篇博客来搭建的,博主在百度云中给出的是编译好的集成库,而官方的需要自己源码编译,基本上按照博主的流程写好自己的cmake文件,就可以使用PCL了。安装包中带有项目属性表,工程创建之后直接在项目右键中添加即可,在我的VS2013中,还需要手动在项目属性的链接器输入中勾选“从父级或项目默认设置继承”。

点云配准

依据上一篇博客,调用PCL中的相应接口可将获取的3D人脸数据存储为PCL中的点云格式,可视化两个角度的人脸点云如下图所示:

配准原理采用的是ICP算法,PCL中已将该算法封装为接口,可以直接调用,对上述两个点云文件进行配准操作,效果如下图:

从图片中可以看出,人脸轮廓的边缘部分有较多毛刺,因此我们进行离群点去除,效果如下:

到此为止,通过两幅点云的配准操作我们已经可以获得相对于单角度更完整的3D人脸点云,因此我们下一步的计划是获取实时获取人脸左、中、右三个角度的人脸点云,并同时进行两两配准,从而最终获得完整的3D人脸模型。

当前浏览器不支持博客完整功能。如果要获得最佳体验,请点击右上角···,复制链接,并在其它浏览器打开