SLAM前端(里程计二):ORB特征点匹配

(1)构建图像高斯金字塔

将图像进行降采样8次,每次尺度缩小1/1.2,如下图所示:

采用高斯金字塔的目的是解决特征点尺度不变性,并且可以提取更多的关键点。高斯金字塔每个尺度代表了不同的距离,即低分辨率的图像可以看做从远处拍摄图像的一部分,这样提取8个尺度的图片就可以保证特征点尺度不变性。想像一下,如果第二帧图像相对于第一帧图像走远了,那么根据Fast角点的定义,这两帧图像共有的图像中,很多对应的特征点都难以匹配,如果第一帧图像提特征点使就降采样并提取特征点,则第二帧图像上的特征点与第一帧降采样后尺度是相近的,很容易匹配到。因此采用高斯金字塔将这8张图像的特征点共同当做当前帧的特征点,当下一帧图像走远或走进场景,确保不会因为尺度不同而无法匹配。

图像金字塔效果参照图像金字塔在ORB-SLAM中的应用详解,如何解决特征点尺度不变性

(2)在不同尺度的图像上检测Fast角点并根据栅格剔除

提取Fast角点,每一层图像特征点有个上限值:nfeatures,分辨率越低即金字塔层数越高,数量越少。

对每一层图像划分30*30的栅格,在每个栅格内,根据nfeatures选取该区域内提取的Fast角点,保证一层图像上特征点分布均匀。ORB-SLAM中通过函数DistributeOctTree()实现特征点的栅格剔除,具体思路是:因为当特征点都集中在图像的某个局部时,计算出来的描述子不理想,所以为了让角点分布更加均匀,运用四叉树算法对角点进行均匀分布。具体方式就是根据图像的大小,设置图像的根节点个数,之后将根节点四等分,再检测并且记录每个分节点里面关键点的个数,当节点里面特征点的个数等于0,就删除这个节点,如果特征点个数大于1就继续分割。当节点数目大于这一层所需要特征点数目或者每个节点下特征点数目都是1的时候停止。对已经创建好的节点根据特征点的数量从小到大排序,,优先对特征点较少的节点进行分割,倘若还没有遍历完所有的节点,节点数满足每层特征点的数量要求,就可以不用对包含特征点多的节点进行分割。最终的结果就尽可能将特征点均匀的分布在图像中。

参考链接:ORBextractor.cc

(3)使用质心法计算每个特征点的主方向,计算特征点的描述子

(4)候选关键点

在当前栅格内,找到以x、y为中心,边长为2r的方形内,且图像层在[minLevel, maxLevel]的所有特征点

(5)计算带匹配点与候选关键点之间的汉明距离

描述子利用描述子计算带匹配点之间的汉明距离。

(6)比例阈值筛选

首先最优匹配点的汉明距离要小于某一阈值,其次最优匹配点比次优匹配点明显要好,那么最佳匹配才真正靠谱,避免出现模棱两可的情况。(最优匹配点汉明距离<阈值) &&(最优的匹配点韩明距离<2*次优匹配点的韩明距离*系数)系数一般0.9。

(7)角度投票(旋转一致性)进行剔除误匹配

每个特征点在提取描述子时的旋转主方向角度,如果图像旋转了,这个角度将发生改变,所有的特征点的角度变化应该是一致的,通过直方图统计得到最准确的角度变化值。

统计方向偏差直方图 频率最高的三个bin保留,其他范围内的匹配点剔除。

另外,若最高的比第二高的高10倍以上,则只保留最高的bin中的匹配点。

若最高的比第 三高的高10倍以上,则 保留最高的和第二高bin中的匹配点。

代码参考链接:ORB特征匹配 投影匹配 极线搜索匹配 方向一致性过滤 尺度过滤

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值