ORB-SLAM策略思考之ORB特征点提取

本文讨论了ORB-SLAM中如何通过图像金字塔、特征点均匀化策略(如FAST角点检测和四叉树筛选)以及灰度质心法的加速策略来增强ORB特征点的尺度和旋转不变性,以提高定位精度并优化算法效率。
摘要由CSDN通过智能技术生成

ORB-SLAM策略思考之ORB特征点提取

image-20240118153936809

对于ORB特征点的原有策略,主要是使用图像金字塔的方式来解决特征的尺度问题,在ORB-SLAM系统中,就使用了8层缩放因子为1.2的图像金字塔去保证ORB特征的尺度不变性,而旋转不变性是通过特征点角度和BRIEF描述子实现的,其中特征点的角度主要通过灰度质心法进行计算,然后使用计算得到的角度对BRIEF描述子的模版进行角度旋转来解决旋转不变性问题。除此之外,ORB-SLAM系统还提出了一些更加奇特的方法,有特征点均匀化策略灰度质心计算加速策略

1. 特征点均匀化策略

  1. 对于openCV自带的ORB特征点的提取算法,会有特征点集中的情况方法,即特征点会在某些高图像特征梯度的部分,集中分布。
  2. 这种当这种情况方法时,有可能会使后续的位姿估计发生比较大的误差,因为特征都集中到了一块
  3. FAST双阈值分块检测策略
    1. 对待检测特征点的图像进行分块,对每一块图像进行FAST角点检测
    2. 通过设置双阈值的方法,来使得FAST角点尽量在每一块图像中都检测到,当降低FAST角点检测阈值后,还不能检测到的话,则舍弃该图像块的区域。
  4. 四叉树特征点筛选策略
    1. 对图像不停的进行均匀的四等分,其中特征点较多的部分先四等分,等到分块的区域大于等于要求提取的特征点数目后停止
    2. 这里值得注意的是,得到的图像块数目不一定能等于要求的特征点数目,这里解决策略如下:
      1. 在对每一个图像块进行分裂后,要及时检查是否已经达到特征点数目要求了,这样即使超出了特征点数目的要求,也只是比较少的分裂的图像块
      2. 对每个图像块中提取一个特征点,其的响应值一定是最大的
      3. 对这些特征点进行排序,只需要响应值大的部分,其余的剔除

2. 灰度质心法加速策略

加速灰度质心法

对普通的灰度质心法,其计算思路是这样的:

  1. 确定好灰度质心法计算所需要的半径大小
  2. 使用 m 10 = ∑ ∑ x I ( x , y ) m_{10}=\sum\sum xI(x,y) m10=∑∑xI(x,y)计算出按x轴的灰度矩
  3. 使用 m 01 = ∑ ∑ y I ( x , y ) m_{01}=\sum\sum yI(x,y) m01=∑∑yI(x,y)计算出按y轴的灰度矩
  4. 使用 θ = arctan ⁡ m 10 m 01 \theta=\arctan \frac{m_{10}}{m_{01}} θ=arctanm01m10,可以计算出特征点的主方向
  5. 假设计算灰度质心的区域内,像素的数目为n个,这种计算方法中使用到乘法数目有2n次,且有一次的 arctan ⁡ \arctan arctan算法

而ORB-SLAM对灰度质心法做了改良,使其速度得到了增加

  1. 确定好灰度质心法计算所需要的半径大小
  2. 对于红色的中心区域,其对应y轴上的灰度矩为0,只需要计算x轴方向上的矩即可
  3. 对于以红色轴对称部分的 ( x ′ , y ′ ) (x',y') (x,y) ( x ′ , − y ′ ) (x',-y') (x,y),其对应的x轴方向的灰度矩为 m 10 = x ′ ( I ( x ′ , y ′ ) + I ( x ′ , − y ′ ) ) m_{10}=x'(I(x',y')+I(x',-y')) m10=x(I(x,y)+I(x,y)),y轴方向的灰度矩为 m 01 = y ′ ( I ( x ′ , y ′ ) − I ( x ′ , − y ′ ) ) m_{01}=y'(I(x',y')-I(x',-y')) m01=y(I(x,y)I(x,y))
  4. 最后,使用openCV中实现的快速计算 arctan ⁡ \arctan arctan的算法来实现角度的计算
  5. 首先,使用这种方法,乘法的次数少于n次,并且计算 arctan ⁡ \arctan arctan时也节省了时间
  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值