ORB特征匹配

策略汇总(十一种特征匹配策略)

  • SearchForInitialization

  • SearchByProjection->4种

  • SearchByBow->2种

  • SearchForTriangulation

  • Fuse->2种

  • SearchBySim3

1.SearchForInitialization

调用函数:Tracking->MonocularInitialization

策略步骤:寻找ORB匹配点,利用匹配点对地图进行初始化,假设一张1920*1080图像,每个格子30*22.5

要点:

  1. 匹配点要大于100个才能进行初始化
  2. 挑选出来的特征点所属的金字塔必须为第0层
  3. 剔除那些在所选格子内但是不属于搜索范围内的点
  4. 最优距离要小于50,计算最优距离和次优距离的比值
  5. 统计匹配点的方向直方图
  6. 统计出特征点数量最多的方向
  7. 判断第二多的数量<0.1*第一多的数量?符合则证明第一多的为主方向
  8. 判断第三多的数量<0.1*第二多的数量?符合则证明第一和第二多的为主方向

 

2.SearchByProjection

调用函数:Tracking->TrackWithModel

策略步骤:根据匀速模型计算初始位姿,然后通过投影的方式搜索匹配点

  1. 遍历前一帧所有的特征点
  2. 将前一帧特征点对应的地图点投影到当前帧,在一定范围内搜索匹配点
  3. 将搜到的特征点和前一帧特征点逐一计算描述子距离
  4. 找出汉明距离最小的特征点
  5. 如果小于阈值,则为匹配点,跟踪成功
  6. 如果匹配点不足,提高阈值
  7. PoseOptimization,内点大于10则跟踪成功

调用函数:Tracking->Relocalization

策略步骤:前面利用EPnP计算位姿然后进行motion-only BA,如果内点不足则通过投影方式搜索更多匹配点

  1. 前面EPnP得到的内点不再进行搜索
  2. 这里需要估计关键帧地图点在当前帧图像金字塔中的层数(通过地图点离相机光心的距离计算)
  3. 和前面的SearchByProjection类似,将关键帧地图点投影到当前帧,然后在一定范围内进行搜索

调用函数:Tracking->TracklocalMap->SearchLocalPoints

策略步骤:搜索局部地图点,不包含前面三个步骤匹配过的地图点

  1. 先对局部地图点检查其是否在当前帧的视锥中,并预测金字塔层数
  2. 根据投影搜索匹配点,将符合要求的地图点归为该特征点的地图点
  3. 根据更新后的地图点再对当前帧位姿进行优化
  4. 如果内点足够多,跟踪线程跟踪成功

3.SearchByBow

调用函数:Tracking->TrackRefenceKeyFrame/Relocalization

策略步骤:在不知位姿的情况下通过特征向量寻找匹配点

  1. 提取关键帧中的特征向量(继承map<unsigned int,vector<unsigned int>>)
  2. 对相同节点的特征点一一计算描述子距离
  3. 挑选汉明距离最小的匹配对
  4. 判断最小距离和次小距离的比例,并检查旋转方向
  5. 得到两个当前帧和关键帧的匹配点
  6. Relocalization利用匹配点通过EPnP计算位姿,TrackRefenceKeyFrame将上一帧的位姿作为初始位姿在利用匹配点优化位姿

4.SearchForTriangulation

调用函数:Tracking->Run->CreateNewMapPoints

策略步骤:对跟踪线程中没有跟踪到的特征点在参考关键帧中搜索匹配点,进行三角测量

  1. 选取与当前关键帧共视程度最高的20帧相对帧
  2. 计算当前帧到相邻帧的R和t,并计算F矩阵
  3. 类似SearchByBow,对两帧之间同一节点的特征寻找匹配
  4. 计算匹配点离极线的距离,匹配后检查匹配点的视差
  5. 利用DLT进行三角测量得到3D地图点,检查深度、重投影误差、尺度连续性

5.Fuse

调用函数:LocalMapping->Run->SearchInNeighbors

策略步骤:要处理最后一个关键帧时,对之前产生的重复地图点进行融合

  1. 选取与当前关键帧共视程度最高的20帧一级相邻和5帧对应的二级相对帧
  2. 和SearchByProjection
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值