论文部分内容阅读
Kinect是微软公司出品的一款可以获取镜头深度的相机设备,主要应用于体感游戏,但其较高的分辨率以及帧率使得它在三维场景重建等图形学方面也有了重要的用武之地。特别是在2011年Newcombe R A等人的KinectFusion[3]一文发表之后,各种基于Kinect的新应用层出不穷。KinectFusion的主要思想是在显存空间中构建一个虚拟的立方体(Volume),并将它平均切分为N*N*N的小格点(Voxel),每个网格保存它到最近的一个物体表面的距离(TSDF)和它的权重(Weight),那么所有距离为0权重不为0的格点就是处在物体表面的格点,最后通过零等值面抽取,利用MarchingCube[4]算法即可重建出三维物体的表面。从KinectFusion的实现方式上可以看到,它重建出来的物体表面其实是小格点的包络面,是被体网格离散化了的,所以最终结果丢失了设备原有的精度,重建的最高精度取决于体网格的大小。然而体网格如果取很小(N很大)就要求至少4G以上的显存,这在目前的计算机技术下无法实现。本文在KinectFusion的基础上,提出了一套保留设备精度的、可应用于大场景离线三维物体重建的流程,并实现了一套全局优化算法。首先利用KinectFusion的一个变种Kintinuous[5]来做大场景的跟踪,以获取相机的大致位置信息,同时从深度设备(假想一种高精度的深度设备,本文中以Kinect代替)中导出原始深度图;然后从深度图中恢复点云和法向信息,并利用上一步的相机位置信息大致对齐所恢复的点云:大致对齐后利用点到面的ICP算法求出所有对点对的对应点关系;最后应用全局优化算法将整体的对齐错误降到最低。