图像特征点提取与匹配
引入
视觉里程计根据两帧图像确定机器人的位姿变化。视觉里程计的算法主要分为两个大类:特征点法和直接法。特征点法长久以来(直到现在)被认为是视觉里程计的主流方法。而特征点法首先需要提取特征点并进行匹配。
1. 特征点
1.1特征点的定义&特性
- 有限性:数量较少
- 局域性:特征信息只与较小的区域有关
- 可重复性:相同的特征点可以在相邻帧图片中找到
- 可区分性:不同的特征点易于区分
图 1 可作为特征点的像素点 图1 可作为特征点的像素点 图1可作为特征点的像素点
特征点由**关键点(Key-point)和描述子(Descriptor)**两部分组成。
- 关键点:该特征点在图像里的位置,有些特征点还具有朝向、大小等信息
- 描述子:描述关键点,用于与其他特征点进行区分
1.2特征点提取的典型方法
ORB特征点法是综合性能最好的方法之一。因此以此为例进行介绍。
它的关键点称作Oriented FAST。是一种改良的FAST特征点。其基本确定方法是以某像素点为中心,3像素为半径的圆上的像素点绝大多数比这个像素点亮或者暗,则该像素点为ORB特征点。
图
2
可作为
F
A
S
T
特征点的像素点
图2 可作为FAST特征点的像素点
图2可作为FAST特征点的像素点
FAST算法仅基于像素间的亮度差异,因此运行速度非常快。然而,该算法不具有方向信息。另外,由于该方法固定选取半径为3的圆形窗口来进行计算,因此不具有尺度不变性——远处和近处的同一角点无法匹配。
尺度不变性由构建图像金字塔,并在金字塔的每一层上检测角点来实现。
旋转不变性是由灰度质心法(Intensity Centroid)实现。
其中I(x,y)函数用于表示在点(x,y)处像素强度/亮度。
它的描述子称作BRIEF描述子是一种二进制描述子,其描述向量由许多个0和1组成,这里的0和1编码了关键点附近两个随机像素(比如p和q)的大小关系:如果p比q大,则取1,反之就取0。如果我们取了128个这样的p,q,则最后得到128维由0、1组成的向量。
2.特征点的匹配
常用方法是快速近似最近邻(FLANN)算法。由于这些匹配算法理论已经成熟,而且实现上也已集成到OpenCV,所以这里就不再描述它的技术细节了。感兴趣的读者可以查找相关资料进行了解。