SLAM学习笔记(七)

光流法和直接法

Posted by QIY on September 6, 2020

高翔老师SLAM14讲学习笔记

光流法和直接法 SLAM中的视觉里程计分为两部分,一是特征点法,先提取特征点,把特征点看做三维空间中的不动点,根据特征点匹配关系进行位姿和深度估计,通过最小化重投影误差优化相机运动;二是不使用特征点,根据图像灰度直接估计的直接法。第七讲中讲了特征点法,本讲将介绍直接法。

1 有何用

下面讲述不提特征计算VO的思路。

2 光流法

通过其他方式寻找配对点,仅估计了像素间的平移(求得dx、dy)。

  • 一般分为稀疏光流和稠密光流
    • 稀疏以Lucas-Kanade(LK)光流为代表
    • 稠密以Horn–Schunck(HS)光流为代表
    • 本质上是估计像素在不同时刻图像中的运动 灰度一致,x/y/t变化。 (注意:灰度不变是一种理想的假设,实际当中由于高光/阴影/材质/曝光等不同,很可能不成立) 对 t+dt 时刻的灰度进行Taylor展开并保留一阶项: 由于灰度不变,所以: 因此 => X、y方向梯度随时间变化,希望求解dx/dt, dy/dt。 本式是一个二元一次线性方程,欠定 需要引用额外的约束 假定一个窗口内光度不变 通过超定最小二乘解求得运动 u,v:
  • 注解:
    • 可以看成最小化像素误差的非线性优化
    • 每次使用了Taylor一阶近似,在离优化点较远时效果不佳,往往需要迭代多次
    • 运动较大时要使用金字塔
    • 可以用于跟踪图像中的稀疏关键点的运动轨迹

      3 直接法

      无配对点,光流仅估计了像素间的平移,但没有用到相机本身的几何结构,没有考虑到相机的旋转和图像的缩放,直接法则考虑了这些信息。

  • 直接法的推导
    • 假设有两个帧,运动未知,但有初始估计 R,t
    • 第1帧上看到了点P,投影为p1
    • 按照初始估计,P在第2帧上投影为p2 投影关系: 为了估计相机的运动,建立最小化问题 最小化光度误差: (左右光流差) 待估计的量为相机运动 ,我们关心误差相对于相机的导数。 (结合李代数和扰动模型学习)
  • 第一部分:图像梯度
  • 第二部分:像素对投影点导数(见上一章)
  • 第三部分:投影点对位姿导数:
  • 综上:
  • 可以看到,直接法的雅可比项有一个图像梯度因子
    • 因此,在图像梯度不明显的地方,对相机运动估计的贡献就小
  • 根据使用的图像信息不同,可分为:
    • 稀疏直接法:只处理稀疏角点或关键点
    • 稠密直接法:使用所有像素
    • 半稠密直接法:使用部分梯度明显的像素

      4 实践

  • 直接法的直观解释
    • 像素灰度引导着优化的方向
    • 要使优化成立,必须保证从初始估计到最优估计中间的梯度一直下降
    • 这很容易受到图像非凸性的影响(可部分地由金字塔减轻)
  • 优缺点小结
  • 优势
    • 省略特征提取的时间
    • 只需有像素梯度而不必是角点(对白墙等地方有较好效果)
    • 可稠密或半稠密
  • 劣势
    • 灰度不变难以满足(易受曝光和模糊影响)
    • 单像素区分性差
    • 图像非凸性