【SLAM十四讲】第七讲

总结:

  1. 特征点
  2. 对极几何,用于2D到2D的位姿估计,比如单目初始化中
  3. PNP问题,3D到2D,单目SLAM初始化以后的运行过程就是3D-2D,采用线性解法(DLT)和BA两种。
  4. ICP,3D到3D,一般用于点云匹配过程,但是在RGBD-SLAM中因为可以获取点的3D空间位置(相对于当前相机系的),所以可以。但是相比于激光中的点云匹配,这里是已知点的对应匹配信息的,所以 整个问题变简单了。采用线性解法(SVD)和BA两种。

1 特征点

1.1 组成

关键点+描述子
关键点:角点,一般不能用边缘,因为沿着该边缘前进,图像局部是相似的
描述子:按照外观相似的特征应该有相似的描述子的原则设计的。
举例:ORB 约要花费 15.3ms, SURF 约花费 217.3ms,SIFT 约花费 5228.7ms。

1.2 性质

  1. 可重复性(Repeatability):相同的“区域”可以在不同的图像中被找到。
  2. 可区别性(Distinctiveness):不同的“区域”有不同的描述。
  3. 高效率(Efciency):同一图像中,特征点的数量应远小于像素的数量。
  4. 局部性(Locality):特征仅与一小片图像区域相关。

1.3 ORB特征

FAST角点+BRIEF描述子

1.3.1 FAST角点

在这里插入图片描述
步骤:

  1. 在图像中选取像素 p,假设它的亮度为 Ip。
  2. 设置一个阈值 T (比如 Ip 的 20%)。
  3. 以像素 p 为中心, 选取半径为 3 的圆上的 16 个像素点。
  4. 假如选取的圆上,有连续的 N 个点的亮度大于 Ip + T 或小于 Ip − T,那么像素 p
    可以被认为是特征点 (N 通常取 12,即为 FAST-12。其它常用的 N 取值为 9 和 11,
    他们分别被称为 FAST-9, FAST-11)。
  5. 循环以上四步,对每一个像素执行相同的操作。

在 FAST-12 算法中,为了更高效,可以添加一项预测试操作,以快速地排除绝大多数
不是角点的像素。具体操作为,对于每个像素,直接检测邻域圆上的第 1, 5, 9, 13 个像
素的亮度。只有当这四个像素中有三个同时大于 Ip + T 或小于 Ip − T 时,当前像素才有
可能是一个角点,否则应该直接排除。
其次,还需要用NMS

以上为原始的FAST,ORB对其进行升级:

  1. 指定最终要提取的角点数量N,对原始 FAST 角点分别计算 Harris 响应值,然后选取前 N 个具有最大响应值的角点,作为最终的角点集合
  2. 尺度不变性:图像金字塔
  3. 旋转不变性:计算方向,使用灰度质心法,步骤如下
    1. 在一个小的图像块 B 中,定义图像块的矩为:
  4. 通过矩可以找到图像块的质心:
    在这里插入图片描述
  5. 连接图像块的几何中心 O 与质心 C,得到一个方向向量 −−! OC,于是特征点的方向可
    以定义为:

在这里插入图片描述

1.3.2 BRIEF描述子

按照某种概率分布,随机地挑选 p 和 q 的位置,然后比较两者的像素值:如果 p 比 q 大,则取 1,反之就取 0,进而形成128维向量。
具体看OpenCV源码。
**ORB的改进:**前一步已经计算了FAST角点的方向,这里计算旋转以后的BRIEF描述子,以获得良好的旋转不变性。

1.4 特征匹配

**目的:**就是利用描述子去确定哪两个像素点是空间中的同一个点。
**暴力匹配:**最简单的思路就是暴力匹配,对每一个特征点,与另一张图上所有的点的描述子距离,然后排序,取最近的一个作为匹配点,计算量大。
**快速最近邻FLANN:**在SLAM中一般使用的是该算法,其更加适合于匹配点数量极多的情况。
以上方法在OpenCV中有。
补充:FLANN

**描述子距离:**浮点型的描述子,计算欧式距离,二进制描述子,计算汉明距离,两个二进制串之间的汉明距离,指的是它们不同位数的个数,因此可以对描述子向量取异或然后求向量的累计和。

如果已经进行了特征点的提取和匹配以后,接下来就是根据匹配的特征点对求解位姿R和t。

  1. 当相机为单目时,我们只知道 2D 的像素坐标,因而问题是根据两组 2D 点估计运
    动。该问题用对极几何来解决。
  2. 当相机为双目、 RGB-D 时,或者我们通过某种方法得到了距离信息,那问题就是根
    据两组 3D 点估计运动。该问题通常用 ICP 来解决。
  3. 如果我们有 3D 点和它们在相机的投影位置2D点,也能估计相机的运动。该问题通过 PnP
    求解。这个无论是单目还是双目还是RGBD都可以这么做,事实上,ORB-SLAM中对双目和RGBD的实现就是这么做的,除了和单目的初始化部分不一样,后续的过程都一样,就是都用的PnP,没有用ICP。

2 对极几何:使用于单目相机

事实上,单目相机的初始化的过程就是用对极几何,因为此时没用可以参照的空间中的3D点,有的就是前后两帧图像上的2D点。而如果我们有若干对2D的匹配点,就可以通过这些二维图像点的对应关系,恢复出在两帧之间摄像机的运动,这就是对极几何

在这里插入图片描述

2.1 对极几何的公式

步骤:

  1. 点P在第一帧的相机系下的3D点是:
    在这里插入图片描述
  2. 根据之前学的相机模型以及位姿变换,像素点p1和p2与P之间的关系是:
    在这里插入图片描述
  3. 不考虑s1和s2,也就是不考虑尺度,考虑归一化坐标系下x1和x2,令:
    在这里插入图片描述
    那么,有:
    在这里插入图片描述
    对上式两边同左乘t^,对于向量来说,相当于向量叉乘,而向量本身
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值