Fusion4D: Real-time Performance Capture of Challenging Scenes 笔记

在这里插入图片描述
简介
在这里插入图片描述
Fusion4D 算法的目的是 4D 重建,也就是说重建的场景是随时间变化的,Fusion4D 可以把变化的 3D 场景记录下来,算法记录的是每时刻场景的 3D 模型。

由于 Fusion4D 采用多相机,简单融合每一时刻多相机输出的图像也可以重建单一时刻下的 3D 场景,但是考虑到这样重建的模型会有缺失,还需要将之前重建的(reference frame)和当前时刻重建的(data frame)做融合。

算法主要有两个部分:一个是计算 warp reference frame 的 Embedded Deformation Graph 参数,ED 参数用来融合重建 reference frame,并且将 reference frame warp 到 data frame。一个是将 warp 到 data frame 的 reference frame 和当前时刻重建的 data frame 融合,输出当前时刻的 3D 模型。

深度数据获取和预处理
作者采用 24 个相机获取 RGB-D 数据,每一时刻可以产生 8 个深度图和 8 个 RGB 图,深度图采用 PatchMatch 算法通过立体匹配得到。

在得到深度图后,根据 pixel-wise differences 分割得到前景,并且采用 CRF 算法增强像素之间的连续性。

非刚性运动场估计
作者采用 embedded deformation model (简称 ED) 将累积融合得到的 reference frame (key volume) 和新输入的数据配准,同 DynamicFusion,ED 的节点也是从 TSDF 模型提取的 mesh 中采样得到。mesh 中的每个点的位置和法向按照在 ED 中最近的 K 个节点的参数做变换 :
在这里插入图片描述

作者在估计 motion field 参数时,优化的能量函数项较多:

在这里插入图片描述

data 项(most crucial):
在这里插入图片描述

其中,N 表示一帧当中的 N 幅图像,m 表示当前 mesh 在第 n 图像可见的点(可以投影到图像中,并且 mesh 点和投影点的距离和法向相似)。

正则项
保持仿射变换矩阵单位正交,

并且光滑连续:
在这里插入图片描述

Visual Hull Term
在这里插入图片描述
visual hull 如上图所示,第一幅图中,因为深度图像有空洞,空洞位置处深度值为 0,空洞使得 visual hull 一直延伸到相机光心(visual hull 位红色轮廓加两条红色射线),这时 mesh 点 warp 到两条射线相夹的空间是合法的,采用多帧深度图像计算 visual hull 会更鲁棒一些,例如,第二幅图形成的 visual hull 会限制这一点。

为了不使得 mesh 中的点 warp 到 free space(表面到相机一侧的空间),作者添加 visual hull 约束,大概意思是在 warp mesh 中点时,惩罚 warp 到 free space 中的点,free space 通过深度图像计算得到。
在这里插入图片描述

上式 的计算方式还要再细看参考文献。

匹配项
作者采用 GPC(决策树) 计算两帧图像中匹配的 patch(特征):在这里插入图片描述

然后根据匹配的特征,对于之前帧中的点找到当前 mesh 中的匹配点:
在这里插入图片描述
最终匹配项误差函数为:
在这里插入图片描述

参数优化
在优化时,作者根据上一帧优化的 ED 参数初始化当前帧优化的 ED 参数,优化时,首先固定 ED 参数采用 ICP 算法计算全局的 R 和 t,然后,固定全局的 R 和 t 优化 ED 参数。

对于 data 项:
在这里插入图片描述

因为上式牵扯到两组 ED 参数相乘, 在每一步开始迭代优化时,作者保存初始的参数,将能量函数做近似:

在这里插入图片描述
作者采用 preconditioned conjugate gradient 计算 ED 参数。

Data Fusion
作者在系统中维护了两个 volume:reference/model frame , data frame 。新获取的数据融合到 reference frame,并且还从 reference frame 选择数据融合到 data frame,

最终是在 data frame volume 中提取重建结果数据,在将 reference frame 的数据融合到 data frame 时,原则是从 reference frame 选择的融合进 data frame 的数据,比 data frame 观测的数据质量要高。

volume warping
这步操作是把 reference frame 融合的数据 warp 到一个新的 data frame,后续再将两个 volume 的数据做 blending。

从 reference frame 选择数据融合进 data frame 的流程是:根据估计的 ED 参数,计算 warp 后 reference 中的 voxel 在 data frame 中的位置,根据 warp 后 voxel 的位置,更新 data frame 中邻域的 voxels 的值,更新的时候并不是简单加权融合,操作如下:
在这里插入图片描述
Voxel Misalignment
在将 reference frame 的数据融合到 data frame 时需要检测 reference frame 中的数据是否是跟踪的好,在将 reference frame 的数据 warp 到 data frame 后,首先检测配准误差:
在这里插入图片描述

其中,Dd是 data frame 中 SFD 值,Hd 是 visual hull transform,最后先统计每个 ED 节点相关 voxel 的平均值,然后在融合时丢掉和误差较大的 ED 节点有关联的 voxels。

Volume Blending

在将获取的深度数据融合到 data frames,并且将 reference frame warp 到 data frame 后,将 data frame 和 reference frame Vr融合得到最终重建输出的 volume。

首先计算 Vd 和 V˜r融合时中 voxel 点的权重,做法是将 reference frame 中的点投影到各深度图像,然后计算每个点的平均误差:
在这里插入图片描述
融合如下:
在这里插入图片描述
reference frame 数据融合
同 DynamicFusion,在更新 reference frame 中的 voxels 时,首先根据计算的 warp field 将 reference 中的 voxels warp 到 data frame,进而投影到图像更新 TSDF value 和 weight。在融合时,reference 中的有些 voxels 和 depth map 中的数据并不能很好的融合,这时,根据计算的 ED 节点的误差,从 data frame 中提取数据更新 reference frame,并且,还会周期性的根据 data frame 中的数据将 reference frame 中的数据复位。

作者:Xingyin-Fu
来源:CSDN
原文:https://blog.csdn.net/fuxingyin/article/details/88646423
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/mansir123/article/details/94434910
今日推荐