VSLAM(4):特征点提取与对极几何

图像特征点与对极几何在SLAM中的应用

本节总结图像特征点定义,如何提取特征点以及对极几何的原理,并给出SLAM14讲书中的代码实例。

一. 特征点提取

特征点的定义是一张图中比较有代表性的点,这些点会在相机少量运动后保持不变。所以利用特征点的这些特性,可以根据前后帧估计出相机运动的位姿变化,

1.1 特征点

至今为止特征没有万能和精确的定义。特征的精确定义往往由问题或者应用类型决定。特征是一个数字图像中“有趣”的部分,它是许多计算机图像分析算法的起点。因此一个算法是否成功往往由它使用和定义的特征决定。因此特征检测最重要的一个特性是“可重复性”:同一场景的不同图像所提取的特征应该是相同的。

在视觉SLAM问题中,我们希望图像特征在相机运动后保持稳定,这样就可以将特征点的位移作为视觉里程计的位移量。常见的特征点包括角点,边缘点和区块等,但是这些传统的特征通常会存在一些问题,例如一个从远处看是角点的点,靠近后很可能就不再是角点了。针对这些问题,CV领域设计了许多更加稳定的局部特征,例如SIFT,ORB等。这些特征点有如下特点:

  1. 可重复性(Respeatability):相同的“区域”可以在不同的图像中找到;
  2. 可区别性(Distinctiveness):不同的“区域”有不同的表达;
  3. 高效率(Eiffciency):同一图像中,特征点的数量应远小于像素的数量;
  4. 本地性(Locality):特征仅与一小片图像区域有关。

 一个特征点由关键点(Key Poit)描述子(Describer)组成。关键点就是特征提取出来的点,即特征点在图像中的坐标,一些类型的特征点还具有大小和方向(例如ORB)。而描述子则是认为设计的用来描述特征点特有性质的向量。外观相似的特征应该有相似的描述子。因此,两个特征点的描述子在空间上相近时,就可以认为他们是同样的特征点。

1.2 ORB特征

ORB特征全称是“Oriented FAST”,就是有方向的FAST角点。提取ORB的步骤为:

  1. FAST角点提取:找出图像中的“角点”。相较于与原版的FAST,ORB中计算了特征点的主方向,为后续的BRIEF描述子增加了旋转不变性;
  2. BRIEF描述子:对前一步提取出特征点的周围图像区域进行描述。

关于ORB的具体计算方法可以看参考2,因为ORB已经集成在Opencv库中,直接调用就可以,并且这部分的知识主要涉及CV的,就不再展开来写了。

这里使用coco数据中的一张图片,将经过resize和旋转的图片和原图片进行ORB特征匹配,效果如下:

可以看到,对于同一张图,ORB特征匹配可以很好的匹配到途中相同的区域。

二. 2D-2D对极几何

2.1 对极约束

在得到特征匹配的点对之后,我们希望通过特征点之间的点对运动关系推算出相机的运动,这里引出2D-2D的对极几何,如下图所示:

 O_RO_L分别是相机运动前后的中心点,X_LX_R则是两个匹配好的特征点对,X是这两个点对对应到3D空间的实际点。我们定义XO_RO_L构成的平面称为极平面(Epipolar plane)e_Le_R分别是极平面和左右两个图像平面的交点,称为极点(Epipoles)O_RO_L称为极线(Epipolar Line)X_LX_R默认是匹配正确的,那么他们对应到3D空间中就应该是一个点,也就是X。但实际场景中因为各种误差,可能导致对应的并不是同一个点。

X在空间的位置为:

X_L^Ts_1^TK^{-T}t^\wedge RK^{-1}s_2X_RX_L^Ts_1K^{-T}t^\wedge RK^{-1}s_2X_R =0X = [X,Y,Z]^T

定义两帧之间的运动为Rt,那么个根据相机模型内外参数,就有:

s_1X_L=KX , s_2X_R = K(RX+t)

K为相机内参矩阵,s_1s_2分别是两帧图像中单个像素大小。现在定义两个像素点的归一化平面上的坐标分别为:

x_1 = K^{-1}s_1X_L

x_2 = K^{-1}s_2X_R

那么结合上面的式子就有:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值