KinectFusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera
1. 主要贡献和特点
(1)基于RGB-D相机三维重建的开山之作,首次实现实时稠密的三维重建。
(2)通过融合序列图像重建三维重建,如果显卡满足要求重建的帧率可以跟得上深度相机的帧率(30Hz)。
(3)通过配准当前帧和模型投影获取的图像计算位姿,比通过配准当前帧和上一帧计算位姿要更加准确。
(4)使用 TSDF 模型不断融合深度图像重建三维模型。
2. 重建流程
重建流程如上图所示:
a) 读入的深度图像转换为三维点云并且计算每一点的法向量;
b) 计算得到的带有法向量的点云,和通过光线投影算法根据上一帧位姿从模型投影出来的点云,利用 ICP 算法配准计算位姿;
c) 根据计算得到的位姿,将当前帧的点云融合到网格模型中去;
d) 根据当前帧相机位姿利用光线投影算法从模型投影得到当前帧视角下的点云,并且计算其法向量,用来对下一帧的输入图像配准。
如此是个循环的过程,通过移动相机获取场景不同视角下的点云,重建完整的场景表面。
3. Depth Map Conversion
在已知相机内参情况下,将深度相机获取到的深度图像转换成点云。根据相邻像素点求得每个点的法向量,转换之后的带有法向量的点云如 a) 图所示
4. Camera Tracking
采用 ICP 算法计算两帧之间位姿,因为这里是实时的三维重建,相邻两帧之间位姿变化很小,R 矩阵可以做线性化,从而最小二乘有闭式解。
ICP 算法理论介绍:
http://blog.csdn.net/fuxingyin/article/details/51425721
ICP 算法 GPU 实现介绍:
http://blog.csdn.net/fuxingyin/article/details/51505854
KinectFusion 算法采用 frame-to-model (通过当前帧深度图像转换得到的点云,和根据上一帧相机位姿从模型投影获取的深度图像转换得到的点云进行配准)的方式,而不是采用 frame-to-frame (通过当前帧深度图像转换得到的点云,和上一帧深度图像转换得到的点云进行配准)的形式计算两帧位姿,