ReFusion: 3D Reconstruction in Dynamic Environments for RGB-D Cameras Exploiting Residuals 论文阅读

@

一、主要贡献

提出了基于TSDF的slam算法,该算法只基于纯几何的滤波方法就可以对动态目标进行滤除。我们提出利用配准所获得的残差,结合环境中自由空间的显式表示来检测动力学。因为没有使用深度学习和目标跟踪,所以不受类别、运动速度、运动物体数量的约束。

二、主要流程

在这里插入图片描述
我们首先通过直接利用模型表示的TSDF来执行初始姿态估计。通过观察配准得到的残差,我们可以检测出场景中的动态元素。在滤过的传感器信息中,我们丢弃了包含动态信息的区域,我们进一步细化了传感器的位姿。有了这个精确的估计位姿,我们就可以将传感器的测量,比如深度和颜色,整合到模型中。

2.1 模型表示

在我们的方法中,我们使用Curless和Levoy[4]最初提出的截断的有符号距离函数(TSDF)来表示环境模型。其想法是用3D体素网格表示世界,其中每个体素包含一个SDF值。SDF是一个返回给定空间中的一点,它到最近表面的带符号距离的函数。
在这里插入图片描述
如果点在曲面的前面,这个距离为正,否则为负。这样,曲面就隐含地由这些(V_{sdf}(x)=0)点的集合来表示。在实践中,SDF值被截断为一个给定的最大值。除了TSDF之外,每个体素还包含一个权重,表示SDF值在该位置的可靠程度,以及通过投影到RDB图片上获得的颜色。权重允许我们使用一个运行加权平均值来更新每个体素,从而提高了对离群点[4]的健壮性。颜色信息使网格的纹理化和在配准过程中强度信息的使用成为可能。
在我们的实现中,我们没有预先分配一个固定大小的3D体素网格。相反,我们动态地分配体素,并使用一个空间哈希函数来索引他们,就像Nießner et al. [10]一样。通过只分配所需的体素块来稀疏地表示世界,可以重建更大的场景,同时不需要预先限制场景的最大尺寸。

2.2 位姿估计

为了估计传感器的姿态,我们使用Canelhas等人[3]和Bylow等人[2]独立提出的点到隐式方法。相反,我们使用一种替代技术,直接将一个从传感器传入的点云和SDF对齐,因为SDF根据定义提供了一个点到最近表面的距离。也就是说,可以直接使用SDF值作为误差函数。
在这里插入图片描述
除了现有的点到隐式技术外,我们还利用模型中包含的颜色信息来改进对齐。
RGB-D传感器的每一帧由一幅深度图像和一幅彩色图像组成。给定一个像素(mathbf{p}=left[egin{array}{ll}u & vend{array} ight]^{ op})定义将像素投影到深度强度的函数分别为:
在这里插入图片描述
其实(D(p))就是深度z
我们用x表示像素p的反投影得到的三维点:
在这里插入图片描述

为了表示当前模型,我们使用基于体素的表示,其中我们在每个体素中存储TSDF值和颜色信息。我们定义函数(V_{SDF}(x))(V_I(x)),分别返回模型在x位置的SDF值和强度。强度的计算公式定义为:(I =0.2126R+0.7152G+0.0722B)。我们进一步使用三线性插值的SDF和邻近体素的强度,以减轻体素网格的离散效果。

我们还使用颜色信息来改善对齐。与大多数最先进的方法[19],[18]相比,我们不渲染模型的合成视图。相反,我们直接对存储在体素中的颜色信息所获得的强度进行操作。我们将相对于强度的误差函数定义为当前图像像素的强度与模型中对应体素的强度之间的光度误差:
在这里插入图片描述采用一个(w_c)参数对强度信息和深度信息的贡献进行加权。

2.3 动态(物体)检测

为了检测环境的动态部分,我们首先对模型的当前RGB-D帧进行初始注册,如第2.2节所述。配准后,使用(2)式计算每个像素(p_i)的残差(r_i),如图3b所示。我们选择一个阈值:
在这里插入图片描述
( au) 是截断函数的截断距离
(gamma)是介于0(everything is masked)和1(nothing is masked)之间的值
在这里插入图片描述

图4是对一幅图像进行初始配准后得到的残差直方图。
在这里插入图片描述
从图中可以看出,除属于动态环境的残差外,大部分残差都集中在某一特定值以下。每一个超过t的残差就构成一个二进制掩码,见图3c。这种基于阈值的分割往往不完美,可能无法捕获整个动态对象。因为我们有可用的深度信息,我们使用我们使用侵蚀掩模$M_Rl来初始化深度感知的洪水填充算法,与[7],[13]中使用的区域生长方法相似。
在这里插入图片描述

我们向一个区域添加邻居,只要它们的深度变化不超过阈值( heta),最后,madk再次被放大,以覆盖漫灌填充留下的最终边界像素。所有处理步骤完成后得到的遮罩如图3d所示。然后再进行第二次配准,忽略masked像素,利用新获得的姿态将RGB-D信息整合到模型中。注意,由于我们的方法执行了第二个注册步骤,因此注册时间是忽略动态方法的两倍。

2.4 模型雕刻和自由空间管理

TSDF方法的一个缺点是它们不能跟踪可感知的自由空间。但是,知道之前测量的空闲空间是拒绝动态对象的一种方法,而不是从它们的运动中检测它们。我们遵循一个相当简单的规则:被可靠地发现为空的体素永远不能包含静态对象。事实上,如果一个新的深度指向一个被占据的体素,它只能是因为一个动态对象进入了它。因此,我们可以安全地拒绝它。这样做,我们避开了众所周知的跟踪动态运动点的难题,就像在[12],[13]中所做的那样。我们将截断区域以外的摄像机视锥中的每一个无遮挡体素标记为自由体素(直到裁剪平面)。注意,当测量距离传感器太远而无法集成到TSDF中的点时,这一点特别有用。在我们当前的实现中,我们为自由体素分配了一个SDF值等于截断距离。就内存消耗而言,对截锥体中的每一个体素都这样做是次优的。通过维护基于八叉树的空闲空间表示来进行改进,将留待以后再做。
关于空闲空间的另一个考虑是,如果以前的静态对象移动了,那么它的体素必须从映射中删除。这与之前映射为静态的体素随后被检测为空的事实相对应,该体素用于包含动态对象,因此应该被标记为free。这种行为是通过TSDF表示自动实现的。换句话说,我们通过加权平均当前值和截断距离( au)更新存储在体素中的SDF值。因此,如果一个体素被长时间检测为自由的,它将可靠地标记为自由。

2.5 限制和处理无效的度量

只要我们从传感器知道这些空间区域是空的,在摄像机截锥体中标记自由体素就是有效的。然而,普通商用RGB-D相机返回的深度图像包含无效的测量值。值为零的像素,如图5a中的黑色像素所示。在这里插入图片描述
这些测量是无效的,因为它们超出范围或因为它们是不可测量的。对于我们在每一种可能的情况下工作的方法,有必要区分超出范围的值和不可测量的值,例如因为散射介质,反射面。有两种方法可以处理这种情况。

  • 1 第一种方法是不区分,不考虑零值,这在其他RGB-D映射方法中通常是这样做的。在这种情况下,当整个场景在深度传感器的范围内时,我们的方法将正确工作。我们方法的一个限制是,如果存在超出范围的值,动态对象可能被不正确地添加到模型中,从而影响其质量。
  • 2 第二种方法是在可能的情况下“纠正”不可测量的值。为此,我们从n个连续帧中创建一个临时模型,并从匹配的姿势中生成虚拟深度。然后,我们用对应的虚拟深度值替换每个零值来填充原始深度图像。这样,由于多次观测,不可测量的值通常减少了。其余的值被认为来自于相机的范围外的测量值,并被替换为一个高的固定深度值。图5b示出使用这种技术获得的虚拟深度图像的示例。然而,这种解决方法假设没有比深度传感器的最小范围更接近的东西。如果我们增加一个额外的传感器,这个假设就可以消除。例如,在RGB-D传感器上安装一个简单的声纳,用于检测是否有物体离相机太近。此外,这种方法的一个缺点是实际模型生成的时延为n帧,对于某些机器人应用来说可能不是最优的。

在这里插入图片描述

原文地址:https://www.cnblogs.com/long5683/p/14139066.html