[论文翻译]DynamicFusion:非刚性场景的实时重建与追踪
DynamicFusion:非刚性场景的实时重建与追踪
网上很少看到有人对DynamicFusion进行详细解读,因此打算翻译全文,初学SLAM,错漏之处还望指出。
摘要
通过融合消费级深度摄像机扫描的RGBD图像,我们首次实现了支持非刚性形变场景的实时稠密SLAM系统。DynamicFusion能重建场景几何,同时不断估计一个密集的6维运动场,其将估计的几何结构映射到实时帧中。像KinectFusion一样,利用多种手段,我们的系统能生成不断降噪、精细化,最后完整的重建结果,同时能实时展示更新的模型。由于不需要模板或者其他先验场景模型,这个方法在移动的物体和场景中有广泛用途。
正文
传统的3D扫描包括分开捕获和离线处理阶段,需要十分仔细地规划扫描过程以确保覆盖所有面。实际上,避免空洞是十分困难的,需要多次迭代捕获、重建、识别空洞,并重新将缺失的部分扫描来保证模型的完整。像KinectFusion一样的实时三维重建系统能让用户不断看见重建结果并自动识别待扫描区域,是一个较大的进步。KinectFusion带动了一系列关于提高追踪鲁棒性、扩展能重建的空间大小的研究。
然而,正如所有的传统SLAM和稠密重建系统,KinectFusion背后最基础的假设是被观测场景是几乎静态的。本文中我们处理的核心问题就是怎样将KinectFusion推广到实时重建和追踪动态的、非刚性的场景。为此,我们提出DynamicFusion,一个基于求解体流场(volumetric flow filed) 的方法——体流场将场景每个时刻的状态转换到一个固定的规范帧上。例如对于一个移动的人,人物的运动会被逆转,每个身体特征都会被映射到第一帧的姿态上。在映射之后,场景实际就是刚性的,可以用标准的KinectFusion更新方法来获得高质量低噪声的重建结果。这种逐渐降噪的重建结果可以用反转图反过来转化为实时帧;每个规范帧的点都被转化到实时帧对应的位置上。
对一个动态移动的场景定义规范的“刚性”空间并不直观。我们工作的一个关键贡献是,对于非刚性变换和融合,我们的方法也能在原本为刚性场景提出的体积扫描融合中保持最优特性。着手点在于逆转场景运动,以将所有观测结果都融合到一个固定的帧上,这可以通过单独计算反转图高效地实现。在这种变换下,每个规范点投影到实时相机帧的一个视线中。由于(针对刚性场景的)最优化参数仅和视线有关,我们可以将优化结果泛化到非刚性的情景中。
我们的第二个关键贡献是高效地表示体翘曲(volumetric warp)并实时计算。实际上,即使是相对较低的分辨率,256^3个成型体素为了在对应帧率下计算也需要一亿个转换参数。我们的求解依赖于结合自适应、稀疏且分层的体积函数,以及为了在消费级硬件上实时计算发明的创新算法。总而言之,DynamicFusion是第一个能使用单一深度摄像机对动态场景进行实时稠密重建的系统。
论文的剩余的部分结构如下:在讨论完相关工作后,我们在第二节给出DynamicFusion的概览,在第三节给出技术细节。第四节展示实验结果,第五节给出总结。
1.相关工作 Related Work
尽管没有在实时、无需模板、非刚性重建方面的先前工作,仍有两类相近的工作:1)实时非刚性追踪算法,2)离线动态重建技术。
实时非刚性模板追踪。大量非刚性追踪的研究都集中在人体的部分,为此会事先学习或人工设计对应的特殊形状和运动模板。最好的几个工作实现了对脸、手、完整身躯或者一些明确物体的高精度的实时捕获。
其他技术直接追踪和成型更一般的网格模型。[论文12]可以追踪一个静态已获得的低分辨率形状模板,然后不断用原模型中没有的高频几何细节更新外观。最近,[论文37]使用GPU加速优化,实现了令人印象深刻的一个类似技术的实时版本。该系统中,物体的稠密表面模型在静态时被捕获,为他们的实时追踪流程生成一个模板。将模板生成和追踪隔离开使得系统只能处理在几何重建阶段完全静止的物体和场景,不能重建像小孩或者宠物那种会乱动的对象。
离线连续的追踪和动态场景重建。 在离线非刚性追踪和重建方面的技术文献越来越多。一些研究者将ICP算法扩展到能处理小型非刚性形变。 在成对3D形状和较大形变的扫描对齐上的实际改进利用了减少的形变模型参数。特别是,嵌入式形变图使用稀疏采样的一组变换基函数,这些函数可以在空间上高效且密集地插值。类刚性重建也有相关工作。混合系统利用已知的运动结构可以实现非刚性形体降噪。其他工作结合了非刚性网格模板追踪,临时降噪和补全,但是没有获得一个单一的对场景的连续表示。
和我们的工作最为接近的工作是不依赖模板的技术。一个有趣的在无模板非刚性对齐上的方法将非刚性扫描视作一个4D几何观测并进行4D形状重建。[论文30,29]通过成对扫描对齐重建固定的拓扑几何。[论文24]使用的是时空固体不可压缩流,这会导致水密重建,并且有效处理嘈杂的输入点云数据。[论文28]介绍了动画制图,该动画制图还通过开发密集的对应匹配方案来估计形状和每帧变形,该方案以稀疏的地标匹配为种子。最近的使用多个固定kinect相机的工作通过稠密追踪,以及将所有深度图数据融合到一个新颖的方向距离函数表示上提出了更大尺度的非刚体重建。
与实时的要求相比,所有这些技术都需要多三到四个数量级的时间。
2.DynamicFusion概览 DynamicFusion Overview
DynamicFusion将非刚性形变的场景分解为潜在的几何表面,并重构为刚性的规范空间\({\bf{S}}\in{\Bbb{R}}^3\);每帧的体翘曲场(volumetric warp field)将该表面转化为实时帧。系统的三个核心算法组件在每个新深度帧到达时依次执行:
1.估计模型到帧的体翘曲场参数(3.3节)
2.通过估计的翘曲场将当前帧深度图融合到规范空间(3.2节)
3.调整翘曲场结构以捕获新添加的几何特征(3.4节)
3.技术细节 Technical Details
我们现详细描述DynamicFusion的各个部分。首先,我们介绍稠密体翘曲场的参数。这让我们能对场景内的每帧的形变进行建模。翘曲场是对传统重建和SLAM系统中静态空间表示的关键扩展,其估计使得非刚性追踪和场景重建成为可能。
3.1.稠密非刚性翘曲场 Dense Non-rigid Warp Field
我们用体翘曲场表示动态场景运动,其对每个点提供了六维映射:\({\cal{W}}:{\bf{S}}\mapsto{\bf{SE}}(3)\)。尽管稠密三维平移场就足够描述时序几何,我们发现同时使用平移和旋转来表示现实世界的物体会让追踪和重建的结果更好。对每一个规范点\(v_c\in{\bf{S}}\),\({\bf{T}}_{lc}={\cal{W}}(v_c)\)将该点从规范空间转换到实时非刚性形变的参照系。
由于我们需要对每一个新来帧估计翘曲函数\({\cal{W}}_t\),其表示必须能高效优化。一个可行的方案就是对体素进行稠密采样,例如以TSDF(truncated signed distance function 截断符号距离函数)几何表示的分辨率表示一个量化的\({\bf{SE}}(3)\)场。然而,即使是以相对低分辨率(\(256^3\))的典型TSDF体素进行重建,每帧需要的求解的参数数量就是\(6\times256^3\),大约是只需估计一个刚性变换的原始KinectFusion算法1000万倍。显然,对翘曲函数完全稠密的参数化是不可行的。现实中,表面趋向于在空间中平滑移动,依此我们可以使用一组稀疏变换为基础,通过插值定义稠密体翘曲函数。出于计算性能和插值质量的考虑,我们使用对偶四元数混合插值法(dual-quaternion blending, DQB)定义翘曲函数:
\({\cal{W}}(x_c)\equiv SE3({\bf{DQB}}(x_c))\),
单位对偶四元数变换的加权平均值就是\({\bf{DQB}}(x_c)\equiv \frac {\sum_{k\in N(x_c)} {\bf{w}}_k(x_c){\hat{\bf{q}}}_kc} {\|{\sum_{k\in N(x_c)} {\bf{w}}_k(x_c){\hat{\bf{q}}}_kc}\|}\),每个单位对偶四元数\(\hat{\bf{q}}_{kc}\in {\Bbb{R}}^8\)。\(N(x)\)是点\(x\)的\(k\)个最近邻变换点,\({\bf{w}}_k\)是描述径向影响的\({\Bbb{R}}^3\mapsto{\Bbb{R}}\)的权值函数,\(SE3(.)\)表示将四元数变换回\({\bf{SE}}(3)\)的转换矩阵。翘曲场在时刻\(t\)时的状态\({\cal{W}}_t\)可以定义为一组形变节点\({\cal{N}}^t_{warp}=\{dg_v,dg_w,dg_{se3}\}_t\)。第\(i\)个节点(\(i=1...n\))在规范空间中的位置是\(dg^i_v\in {\Bbb{R}}^3\),对应的变换矩阵\({\bf{T}}_{ic}=dg^i_{se3}\),\(dg^i_w\)是控制形变影响范围的权重,\(w_i(x_c)=exp(\frac{-\|dg^i_v-x_c\|^2}{2(dg^i_w)^2})\)。 径向权重\(dg^i_w\)是为了确保这个被采样到的形变节点能够影响到其附近的其他节点,所以与采样的节点矩阵稀疏程度相关。 由于翘曲函数为所有支持的空间定义了刚体变换,因此空间的位置和任何关联的方向都将被变换,例如对表面点\(v_c\)和方向\(n_c\),将按以下方式转换到实时帧\((v_t,1)^T={\cal{W}}_t(v_c)(v^T_c,1)^T\),\((n_t,0)^T={\cal{W}}_t(v_c)(n^T_c,0)^T\)。应当指出,空间的缩放也可以用这种翘曲函数来表示,因为空间的压缩和扩张是由沿会聚和发散方向移动的相邻点表示的。最后,我们还可以提取出一个对体积中所有点共同的刚体变换,例如相机移动。因此引入从隐式翘曲模型到实时相机空间的变换\({\bf{T}}_{lw}\) ,与体翘曲函数复合得到完整的翘曲场:
\({\cal{W}}_t(x_c)={\bf{T}}_{lw}SE3({\bf{DQB}}(x_c))\)