Effective Background Model-Based RGB-D Dense Visual Odometry in a Dynamic Environment
动态环境下基于有效背景模型的三维稠密视觉里程计
摘要:
本文提出了一种基于背景模型的鲁棒密集视觉里程计算法,该算法在动态环境中使用了一个RGB-D传感器。该算法从深度场景中估计非参数模型表示的背景模型,然后基于估计的背景模型使用基于能量的稠密视觉里程计方法来估计传感器的自我运动,以考虑运动物体。实验结果表明,在动态环境下,BaMVO能够鲁棒地获得自我运动。
深度场景中估计非参数模型表示背景模型,用背景模型和基于能量?估计传感器自我运动
I.介绍
本文提出了一种基于背景模型的基于RGB-D传感器的稠密视觉里程计(BaMVO)算法,用于动态环境下的鲁棒导航。对于动态环境下的视觉里程计计算,考虑了背景模型来减小运动目标的影响。为了对背景模型进行估计,本文采用了一种主要用于背景减法领域的非参数模型[20]。然而,对于运动相机的图像,由于相机的自我运动是未知的,使用背景减法提取异常运动是困难的。在此基础上,利用深度场景计算背景模型,同时对传感器的自运动进行估计,并用非参数模型表示背景模型。最后,应用基于能量的DVO方法计算了基于估计背景模式的自运动
II.算法原理:基于背景模型的稠密视觉里程计算法
A.初始化
- x=(x,y)为像素坐标
- 3d点:
- 像素深度:
- 颜色信息:
- 针孔相机模型:
- 2维转为3D点:
- 3D点转为2维:
-
欧几里得变换表示相机位姿变换:
-
李群李代数:
B.深度图变换
背景模型是通过累计深度差值来计算的。但是不能通过移动的RGB-D相机的连续序列直接获得,因为图像的视角在不断变换。
背景模型就定义为当前深度图像与其重映射深度图像之间差异图像。
C.背景模型估计
本节介绍如果结余非参数模型,从深度场景中估计背景模型:
- 将深度图像变换到和前一帧图像的相同坐标系下,计算出差分图像
- 背景概率密度函数可以对每个像素分别进行非参数估计。
其中是深度图像每个像素的偏差,N是深度图像大小。
该算法从一开始就假设RGB-D传感器在N帧内没有运动,为了减少这种假设的负面影响,在考虑估计误差的情况下,应该将存储的深度图像的数量设置的尽可能低,作者设置为N
- 由于RGB-D传感器的干涉孔位置随时间的不同而变化,连续变换的深度图像之间存在较大的跳动。由于存储的深度图像之间的点不对应,也会出现这种情况。
这一段没读懂
-
偏差σZ (x)是使用图像中的所有像素的深度的平均绝对偏差估计的:
这里是每个像素一个偏差,计算中用到的是第k-n个到第k个图像差分的像素x的均值。
C 是常数比例因子, 是累积分布函数。
- 定义背景图像
- 为了确定背景阈值,(8)和(9)与每帧的动态目标速度相结合:
-
95%的置信区间(CI)为:
其中是深度差分布的标准差,图3是深度差的概率密度函数,作者说静态环境中固定的RGB-D传感器的为16.23,然后就获得了想图4(d)一样的有标记的背景图像
D.传感器模型估计
为了提高自我运动估计的鲁棒性,需要使用传感器模型来剔除标记背景图像中的异常值。与[14]中的工作类似,该解析器通过使用t分布增强了鲁棒性,灰度残差图像定义为:
其中是RGB图像转为的灰度图像值。
- 为了增加鲁棒性,从t分布推导出传感器模型的权重函数
其中v是t分布的自由度,是估计的强度残差(灰度)标准差
作者设置v=5
-
通过由粗到细的迭代估计强度残差的方差来计算自我运动:
其中是剔除掉运动物体后的像素几何,M是背景()的像素数
-
综合考虑估计的背景和传感器模型,将用于运动估计的权函数W定义为:
E.基于背景模型的自我运动估计
- 利用权函数计算自运动,从连续的RGB-D场景的整个密集信息中计算自运动,采用基于背景模型的基于能量的方法,能量函数定义为:
通过最小化(17),不仅最大化了连续图像之间的光一致性,而且最小化了场景中移动对象的影响。
-
为了解决最小化问题,需要对残差进行线性逼近。本文采用一阶泰勒级数近似方法对翘曲光强图像进行近似:
-
(18)中的变换函数也近似化为
-
根据链式法则,对变换函数(19)中的坐标系k的导数展开为:
-
由式(4)可以得到单位时间齐次变换矩阵的导数为
-
类似地,在(13)中,上面齐次变换矩阵的导数在R12中被重新构造成一个向量,以简化符号为
T是中的齐次变换向量,从齐次变换矩阵的第一行到第三行进行重构,M是一个12x6矩阵。
-
变换函数对坐标系k的导数表示为
是 2 × 6 的矩阵
-
最终的能量函数为:
- 由于能量函数(24)是一个线性加权最小二乘问题,通过求解其对应的正态方程为,可以很容易地找到使残差最小的最佳
- 在整个计算过程中应用由粗到精的方法,逐步计算了齐次变换矩阵。对于细化方案,使用翘曲函数(5)as更新第k帧的强度
是四个相邻像素
- 通过对每一帧的齐次变换矩阵进行累加,很容易得到传感器()的位姿: