本文对DynamicFusion[1]做个简介,注意需要结合笔者上一篇关于KinectFusion的文章共同食用[5]。如有错误,欢迎评论指正。
一.算法流程
图1.算法流程
相比于KinectFusion
,DynamicFusion
[1]最大的区别在于引入了Deformation Graph
[2],通过Warp Field
(包括对应于相机运动的刚性变换,和对应于物体形变的非刚性变换)将Canonicial
空间的model变换到Camera
空间的frame,从而实现对待重建的动态物体的TSDF
场进行更新,最终完成重建。下文着重对与KinectFusion
不同的部分做下描述。
二.具体步骤
1.Surface Measurent
与KinectFusion
一致,对输入深度图进行金字塔下采样,双边滤波、转点云、计算法线等操作。
2.Warp Field Estimation
1)估计刚性变换矩阵
与KinectFusion
一致,采用point2plane icp
估计刚性变换矩阵 [3]。此时,源点云为施加了当前估计的Warp Field
的Canonicial
模型(下一步会介绍)渲染得到的深度图转换得到,目标点云即为当前live frame。
-
注:
1)不是和下面非刚性变换一起解优化问题同时求得的;
2)施加了Warp Field
后的Canonicial
模型就是点云,为什么还要渲染成深度图,然后再转成点云?据我所知,应该是为了能够用投影法找对应点对,这样比直接搜索两个点云之间的对应点对要快得多,同时也能够复用KinectFusion
的代码。
2)估计对应点对
对Canonicial
模型中的每个点 ,施加Warp Field
定义的变化 ,将其变换到live frame上: