声明:本文是深蓝学院 高翔博士主讲的《SLAM理论与实践》的学习笔记。
特征点提取与匹配
经典SLAM模型中以位姿(x)、路标Landmark(y)来描述SLAM过程。
路标点的作用主要是,建立同一点在不同图像上的匹配关系,它一般满足如下性质:
- 三维空间中固定不变的点
- 能够在特定位姿下观测到
- 数量充足,以实现良好的定位
- 较好的区分性,以实现数据关联
在视觉SLAM中,可利用图像特征点作为SLAM中的路标。特征点是图像当中具有代表性的部分,具有如下特点:
- 可重复性(A中可以看到,B中也能看到)
- 可区别性
- 高效
- 本地
特征点的信息:
位置(u,v)、大小(区块大小s)、方向( θ θ )、评分等——关键点。
- FAST:连续N个点的灰度有明显差异(FAST9 ,FAST10, FAST11)
- Oriented FAST:在FAST基础上计算旋转方向。然后可以根据方向选取patch可以更好的匹配相同的区块(减少旋转导致的难以匹配问题)
特征点周围的图像信息——描述子(Descriptor)对图像块进行编码以保持信息的不变特性(例如光照不变) 见OpenCV features2d模块
- SIFT(可重复可区分性都挺好但是提取效率不高需要的计算量太大可能无法在较弱的本地芯片上实时运行)
- BRIEF-128:在特征点附近的128次像素比较(规定好这128个pair的位置) 记录了多个pair之间的相对明暗情况,可编码出光照不变的表达。BRIEF是一种二进制描述,需要用汉明距离度量(不同位的个数)
- ORB:根据旋转方向先做旋转,再选择patch进行BRIEF描述
- SURF
例子:ORB特征 :
- 关键点:Oriented FAST (计算方向)
- 描述:BRIEF (根据方向选择patch 计算描述子)
它具有平移不变,旋转不变,没有尺度不变!(可以用图像金字塔实现)
特征匹配
通过描述子的差异判断哪些特征为同一个点
- 暴力匹配:比较图1中每个特征和图2特征的距离
- 加速:快速最近邻(FLANN)
根据几何关系建模相机运动
特征匹配之后,得到了特征点之间的对应关系
- 如果只有两个单目图像,得到2D-2D间的关系 ——对极几何
- 如果匹配的是帧和地图,得到3D-2D间的关系 ——PnP
- 如果匹配的是RGB-D图,得到3D-3D间的关系 ——ICP
2D-2D 对极几何
2D-2D的情况一般利用对极约束得到相机运动。
几何关系:
- P在两个图像的投影为 p1,p2 p 1 , p 2
- 两个相机之间的变换为 T12 T 12 , 对应有 T12=R12,t12 T 12 = R 12 , t 12 坐标系1中的点X1与坐标系2中的点X2的关系为 X1=T12X2 X 1 = T 12 X 2 。 一般情况下我们使用 T21 T 21 ?
- O1P O 1 P 在第二个图像上投影为 e2p2 e 2 p 2 记为 l2 l 2 ,称为极线(P的投影一定在极线的所在的射线上),反之亦然。 e1,e2 e 1 , e 2 称为极点
实践当中 p1,p2 p 1 , p 2 通过特征匹配得到,P未知, e1e2 e 1 e 2 未知, T12 T 12 待求
下面推导对极约束:
- 世界坐标: P=[X,Y,Z]T P = [ X , Y , Z ] T