DynamicFusion解析

DynamicFusion介绍

        2015年的CVPR会议上,华盛顿大学的Richard A. Newcombe等人的团队展示了DynamicFusion技术(其论文为DynamicFusion: Reconstruction and Tracking of Non-rigid Scenes in Real-Time ,链接为DF,也可以通过百度很方便的找到这篇论文;如果需要论文原文可以私信我)。


        其构件了一个可以实时重建 非刚性变形 动态场景 的系统。并且随着新的数据融合进模型当中,模型得到降噪、细节更加精细。查看视频请点击


DynamicFusion核心问题及思路

        传统的SLAM系统,要么将场景限定为静态场景;要么只能离线进行动态场景的重建。针对这样的不足,文章提出了核心的问题:How can wo generalise KinectFusion to reconstruct and track dynamic, non-rigid scenes in real-time? 即实时重建动态场景

        DynamicFusion系统的核心是:建立一个关键帧(canonical frame)下的模型,之后场景发生的变化都可以通过几何变换对应到这个模型上;每一次新读取了深度图都通过几何变换之后再融合到模型当中,这里变换的过程相当于取消了场景的变换;就这样场景逐渐的变得真实丰满。

        其系统两部分构成:重建的三维场景(reconstructed scene geometry),记为V、体翘曲场(a dense volumetric 6D warp(motion) field),记为W。重建的三维场景V使用TSDF模型表示,类似于KinectFusion中的模型表示方法。体翘曲场W可以简单的理解为:记录了V中点与深度图像D中点想换转换的矩阵,D中数据经过W的变换之后才能融合到V中。

        每一帧深度图读取进入系统之后,需要进行的流程如下:

1、估算W;(Estimation of the volumetric model-to-frame warp field parameters 

2、根据W,将D融合到V中;(Fusion of the live frame depth map into the canonical space via the estimated warp field

3、扩展W。(Adaptation of the warp-field structure to capture newly added geometry 

体翘曲场(warp field)W、模型V中点变换到当前帧D中

warp field W

         在时刻t,W是有n个变形点(deformation node)构成:。对于每一个点:dgv是其在三维模型V中的位置;dgse3为其相关联的变换矩阵;dgw为基于径向的比重(拓展体翘曲场的时候讲到)。

点:V->D

        对于模型V中的一个点,其怎么通过W变换到D中对于的位置呢?定义一个矩阵,其表示点从V到D的变换矩阵。其计算公式为:


其中,vc即为,vt为变换到D中的坐标,第二个公式为计算法向量的情况。

        矩阵的计算,需要先计算中间矩阵计算则需要用到体翘曲场W,其计算公式为:



其中,N(xc)表示在W中距离点最近的k最点,qkc为这些点的对偶四元数,wk为各个点的权重;DQB为dual-quaternion blending(对偶四元数融合),将这最近的k个点的对偶四元数进行插值融合,也就是对其旋转和平移进行了插值,对偶四元数融合的知识可以在论文Dual-Quaternions From Classical Mechanics to Computer Graphics and Beyond(Ben Kenwright, www.xbdev.net, bkenwright@xbdev.net中查看。SE3(.)表示将四元数转化成为变换矩阵。

注:对偶四元数可以同时表示空间的旋转和平移。

计算公式为:


其中,Tlw为相机的变换矩阵。

        经过以上的变换,就可以将模型V中的一个点变换到当前帧D中了。

根据W将深度图D融合到模型V中

        DynamicFusion中模型V也是使用TSDF模型表示的。TSDF模型将需要表示的空间划分成网格,一般为256*256*256个或者512*512*512个。每一个小格子成为体素(voxel),其中存放了两个数值:加权平均的距离v(x),表示这个体素到三维场景表面的距离;权重和w(x),代表当前这个距离v(x)的权重。其中v(x)为0的地方即为场景表面,但是很难直接出现v(x)为0的体素,一般通过插值得到。

        TSDF模型的更新是一个体素一个体素进行的,以一个体素的更新为例。为该体素的中心,将其转化到当前帧D中:


其中:xt为在D中的位置。再计算Projective signed distance:


其中:K为相机的固有转化矩阵(即内参)(经cv_walking评论提醒得以修改);将点xt将映射到深度图中;进而左乘K的逆矩阵,得到了通过深度图得到的在D中的坐标;再与通过W得到的坐标进行比较。之后的操作为:



其中:dc(.)表示将离散的点转化到对应的TSDF中的体素。

        下图为场景发生非刚性变形、发生遮挡时的情况,这一块理解还不是很透彻。


估算体翘曲场(warp field)W

123

拓展体翘曲场(warp field)W

123

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值