视觉SLAM14讲 第七讲 视觉里程计1

C++代码

特征提取:找出2张图片中相似的点

  1. 特征:关键点(例如角点,明暗变化大的点)+描述子(记录的关键点的特征信息,方向,旋转 等)
  2. FAST特征点:角点,检测局部像素灰度变化大的地方,FAST-N 半径为3的圆上有16个像素点,计算是否连续N个点亮度大于或小于阈值
  3. ORB = ORrented Fast 特征点(像素几何中心到平均亮度中心的连线是方向)+ BRIEF 描述子(二进制,用汉明距离描述差异)
  4. 匹配方法:暴力匹配BFM,快速近似最近邻FLANN
  5. opencv2/features2d/features2d.hpp KeyPoint Dmatch

2D-2D 对极几何

  1. 对极约束
    p 2 T K − T t ∧ R K − 1 p 1 = 0 p_2^TK^{-T}t^{\wedge}RK^{-1}p_1=0 p2TKTtRK1p1=0

  2. 基础fundamental矩阵
    F = K − T t ∧ R K − 1 F=K^{-T}t^{\wedge}RK^{-1} F=KTtRK1

  3. 本质essential矩阵,5个自由度,尺度等价性.
    E = t ∧ R E=t^{\wedge}R E=tR

  4. 八点法

    • 用于单目slam初始化
    • SVD分解计算后后4组值,要取深度为正的
    • 纯旋转问题,t为0时E无法分解出R,t ,这时用单应矩阵H求解
    • 多于8对点,超定,用最小二乘解
    • 特征点共面,八点法会退化无法求解,例如无人机的下视
  5. 单应矩阵Homography
    适用于特征点共面,例如无人机的下视摄像头。
    p 2 = K ( R − t n T / d ) K − 1 p 1 p_2=K(R-tn^T/d)K^{-1}p_1 p2=K(RtnT/d)K1p1

p 2 = H P 1 p_2=HP_1 p2=HP1

H = K ( R − t n T / d ) K − 1 H=K(R-tn^T/d)K^{-1} H=K(RtnT/d)K1

  1. 三角测量
    definition: 一对特征点像素位置射线的空间位置交点 -> 空间位置
    • opencv : triangulation()
    • 当t较小,像素深度的不确定性大
    • 当t较大,特征点又少了,这就是三角化的矛盾

总结

  1. 提取特征点
  2. 记录特征点信息
  3. 匹配特征点
  4. 对极约束计算(R,t)
  5. 三角测量计算深度

你可能感兴趣的:(视觉SLAM)