视觉理程计
特征点法
- 经典 slam 中以位姿就是在某一个地方看到了一个路标(landmark)得到观测数据来描述 slam 过程
- 路标是三维空间中固定不变的点,能够在特定位姿下观测到
数量充足,以实现良好的定位
较好的区分性,以实现数据关联
- 在视觉 slam 中,可利用图像特征点作为 slam 中的路标
性质
图像中具有代表性的部分
- 可重复
- 可区别
- 高效
- 本地
特征点的信息
- 位置,大小,方向,评分 ------ 关键点
- 特征点周围的图像信息 ------ 描述子(Descriptor)—对于视角来说相对不变,其不变性越好,计算量越大
例子: SIFT/FUTF/ORB
特征描述应该在光照,视角发生少量变化时,仍能保持一致
如果经过旋转时,描述子变化不大,这时我们可以通过描述子去区分特征点 A 和 B,如果只有关键点,没办法做通用匹配
OpenCV features2d 模块
ORB
- 关键点:oriented fast
- 描述:BRIEF
FAST : 连续N 个点的灰度有明显差异,只是关键点
oriented fast: 在 FAST 基础上计算旋转
fast 只是关键点只有位置,经过旋转之后有个角度;我们需要区分 A B 有什么区别,需要描述子,在 ORB 中用 BRIEF 进行描述,描述了A B 点对之间谁比谁大的信息
A B 按照均匀、高斯,取,或者随机取,只要 pattern 不变就好,取的时候保持一致
BRIEF 是一种二进制描述,需要用汉明距离来度量
-
特征匹配
通过描述子的差异判断哪些特征为同一个点
暴力匹配,比较图中每个特征和图2特征的距离
加速:快速最近邻(FLANN)
-
汉明距离
汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字符串对应位置的不同字符的数量,我们以d(x,y)d(x,y)d(x,y)表示两个字x,yx,yx,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离
汉明距离是以理查德·卫斯里·汉明的名字命名的。在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数
1011101 与 1001001 之间的汉明距离是 2。
2143896 与 2233796 之间的汉明距离是 3
2D-2D对极几何
特征匹配之后,得到了特征点之间的对应关系
- 如果只有两个单目图像,得到 2D -2D 的关系 ----- 对极几何
- 如果匹配的是帧和地图,得到 3D-2D 的关系 ------ PNP
- 如果匹配的是 RGB - D 图,得到 3D - 3D 之间的关系 — ICP