视觉SLAM理论入门——(10)视觉里程计之光流和直接法

1、特征点法的缺点

特征点法具有以下缺点:

1、关键点的提取与描述子的计算非常耗时

2、特征点的数量远小于图像像素数量,只使用特征点丢弃了大部分可能有用的图像信息

3、相机有时会运动到特征缺失的地方,往往这些地方没有明显的纹理信息,从而使得特征点数目减少,无法估计运动

 

克服特征点法缺点的思路:

1、只计算关键点,不计算描述子。使用光流法跟踪特征点的运动,回避计算和匹配描述子带来的时间

2、只计算关键点,不计算描述子。使用直接法计算特征点在下一时刻图像的位置

3、不使用特征点,而是根据像素灰度的差异,直接计算相机运动

第一种方法仍然使用特征点,只是把匹配描述子替换成了光流跟踪

后面两个方法中,根据图像的像素灰度信息来计算相机运动,它们都称为直接法

 

使用特征点法估计相机运动时,把特征点看作固定在三维空间的不动点,通过最小化重投影误差优化相机运动,这需要精确地知道空间点在两个相机中投影后的像素位置

在直接法中,不需要知道点与点之间之间的对应关系,通过最小化光度误差优化相机运动

 

特征点法只能重构稀疏地图,而直接法分为稀疏、稠密和半稠密三种

 

2、光流

光流是一种描述像素随着时间,在图像之间运动的方法。计算部分像素运动的称为稀疏光流,计算所有像素的称为稠密光流

稀疏光流以 Lucas-Kanade(LK) 光流为代表,可以在 SLAM 中用于跟踪特征点位置

 

将图像看作时间的函数:I(t)。那么,一个在 t 时刻,位于 (x,y) 处的像素,它的灰度可以写成:

含义是某个空间点位于 t 时刻图像的 (x, y) 像素的深度

 

 

光流法用到 灰度不变假设:同一个空间点的像素灰度值,在各个图像中是固定不变的

对于 t 时刻位于 (x,y) 处的像素,设 t + dt 时刻,它运动到 (x + dx,y + dy) 处。由于灰度不变:

对上式左边进行泰勒展开:

从而有:

两边除以 dt:

\frac{dx}{dt} 是像素在 x 轴的运动速度,\frac{dy}{dt} 是像素在 y 轴的运动速度,记为u, v\frac{\partial I}{\partial x} 是 I 在 x 方向的梯度,\frac{\partial I}{\partial y} 是 I 在 y 方向的梯度,记为I_x,I_y

上式的矩阵形式为:

这是带有两个变量的一次方程,为了求解,需要增加约束

假设一个 w×w 大小的窗口中所有像素点具有相同的运动,可以得到 w×w 个约束:

设:

将约束用一个方程表示:

上式的最小二乘解是(Ax = y 与 A^TAx = A^Ty 同解):

 

 

3、直接法

考虑某个空间点 P 和两个时刻的相机。P 的世界坐标为 [X,Y,Z],它在两个相机(内参相同)上成像,记非齐次像素坐标为 p_1p_2。以第一个相机为参照系,设第二个相机旋转和平移为 R,t,对应李代数为 ξ

投影方程:

在直接法中,由于没有特征匹配,无从知道哪一个 p_2 与 p_1 对应着同一个点

直接法的思路是根据当前相机的位姿估计值,来寻找 p_2 的位置。但若相机位姿不够好,p_2 的外观和 p_1 会有明显差别。于是,为了减小这个差别,优化相机的位姿,寻找与 p_1 更相似的 p_2,在这个过程中最小化的不是重投影误差,而是光度误差:

在直接法中,假设一个空间点在各个视角下,成像的灰度是不变的。由于有许多个(比如 N 个)空间点 P_i ,那么,整个相机位姿估计问题变为:

使用李代数的扰动模型,左乘一个小扰动:

记(q 是旋转空间点受扰后的位置,u 是旋转空间点受扰后的像素坐标):

将式子泰勒展开:

其中,\frac{\partial u}{\partial q} 是投影方程关于相机坐标系下的三维点的导数。记 q = [X,Y,Z]^T,则:

两式相乘后

误差相对于李代数的雅可比矩阵:

得到雅可比矩阵后即可使用最小二乘法进行迭代求解

 

根据 P 的来源,可以将直接法分类:

1、P 来自稀疏关键点,则称为稀疏直接法。稀疏直接法不必计算描述子,并且只使用数百个像素,因此速度最快,但只能计算稀疏的重构

2、P 来自部分像素,则称为半稠密直接法。如果像素梯度为零,整一项雅可比就为零,不会对计算运动增量有任何贡献。因此,可以考虑只使用带有梯度的像素点,舍弃像素梯度不明显的地方。这种方法可以重构半稠密结构

3、 P 是所有像素,则称为稠密直接法。由于像素点太多,多数CPU无法实时计算,需要GPU加速

 

直接法的优点:

1、省去计算特征点和描述子的时间

2、算法执行需要像素梯度,不需要特征点

3、可以构建半稠密甚至稠密地图

 

直接法的缺点:

1:、非凸性。直接法完全依靠梯度搜索,降低目标函数来计算相机位姿。图像是非凸函数,使得优化算法容易进入极小。因此仅在运动很小时,直接法才成功

2、单个像素没有区分度

3、灰度不变的假设太强。如果相机自动曝光,调整曝光参数,会使得图像整体亮度改变(光照变化也会出现这种情况),从而破坏灰度不变假设,使算法失效

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值