本节总结图像特征点定义,如何提取特征点以及对极几何的原理,并给出SLAM14讲书中的代码实例。
一. 特征点提取
特征点的定义是一张图中比较有代表性的点,这些点会在相机少量运动后保持不变。所以利用特征点的这些特性,可以根据前后帧估计出相机运动的位姿变化,
1.1 特征点
至今为止特征没有万能和精确的定义。特征的精确定义往往由问题或者应用类型决定。特征是一个数字图像中“有趣”的部分,它是许多计算机图像分析算法的起点。因此一个算法是否成功往往由它使用和定义的特征决定。因此特征检测最重要的一个特性是“可重复性”:同一场景的不同图像所提取的特征应该是相同的。
在视觉SLAM问题中,我们希望图像特征在相机运动后保持稳定,这样就可以将特征点的位移作为视觉里程计的位移量。常见的特征点包括角点,边缘点和区块等,但是这些传统的特征通常会存在一些问题,例如一个从远处看是角点的点,靠近后很可能就不再是角点了。针对这些问题,CV领域设计了许多更加稳定的局部特征,例如SIFT,ORB等。这些特征点有如下特点:
- 可重复性(Respeatability):相同的“区域”可以在不同的图像中找到;
- 可区别性(Distinctiveness):不同的“区域”有不同的表达;
- 高效率(Eiffciency):同一图像中,特征点的数量应远小于像素的数量;
- 本地性(Locality):特征仅与一小片图像区域有关。
一个特征点由关键点(Key Poit)和描述子(Describer)组成。关键点就是特征提取出来的点,即特征点在图像中的坐标,一些类型的特征点还具有大小和方向(例如ORB)。而描述子则是认为设计的用来描述特征点特有性质的向量。外观相似的特征应该有相似的描述子。因此,两个特征点的描述子在空间上相近时,就可以认为他们是同样的特征点。
1.2 ORB特征
ORB特征全称是“Oriented FAST”,就是有方向的FAST角点。提取ORB的步骤为:
- FAST角点提取:找出图像中的“角点”。相较于与原版的FAST,ORB中计算了特征点的主方向,为后续的BRIEF描述子增加了旋转不变性;
- BRIEF描述子:对前一步提取出特征点的周围图像区域进行描述。
关于ORB的具体计算方法可以看参考2,因为ORB已经集成在Opencv库中,直接调用就可以,并且这部分的知识主要涉及CV的,就不再展开来写了。
这里使用coco数据中的一张图片,将经过resize和旋转的图片和原图片进行ORB特征匹配,效果如下:
可以看到,对于同一张图,ORB特征匹配可以很好的匹配到途中相同的区域。
二. 2D-2D对极几何
2.1 对极约束
在得到特征匹配的点对之后,我们希望通过特征点之间的点对运动关系推算出相机的运动,这里引出2D-2D的对极几何,如下图所示:

和
分别是相机运动前后的中心点,
和
则是两个匹配好的特征点对,
是这两个点对对应到3D空间的实际点。我们定义
,
和
构成的平面称为极平面(Epipolar plane),
和
分别是极平面和左右两个图像平面的交点,称为极点(Epipoles)
称为极线(Epipolar Line)。
和
默认是匹配正确的,那么他们对应到3D空间中就应该是一个点,也就是
。但实际场景中因为各种误差,可能导致对应的并不是同一个点。
设在空间的位置为:
定义两帧之间的运动为和
,那么个根据相机模型内外参数,就有:
为相机内参矩阵,
分别是两帧图像中单个像素大小。现在定义两个像素点的归一化平面上的坐标分别为:
那么结合上面的式子就有:
图像特征点与对极几何在SLAM中的应用

最低0.47元/天 解锁文章
733

被折叠的 条评论
为什么被折叠?



