Maplab系列15:Inverted File

关于Inverted File的主要说明在这篇文章中:Get Out of My Lab:Large-scale, Real-Time Visual-Inertial Localization

文章说道:

  • BOW的方法,针对超大量的描述符的时候,效果就不太好了。
  • KD-Tree的方法,一个是速度比较慢,而且每当数据库有变化的时候,需要重新生成树结构
  • 所以提出了Inverted File方法。

Inverted File结构:

  • 一个word对应一个Inverted File
  • 很多Inverted File由一个vector管理
  • Inverted File里面存储了属于这个word的所有描述符和描述符的id。
    • 描述符id是按照加入db的顺序生成的
  • 还需要一个辅助的映射关系:word_id到Inverted File中对应这个word的序号

Inverted File方法说明:

  • 使用聚类方法建立类似于BOW一样的vocabulary。vocabulary里面每个描述符叫做一个word,对应有一个id叫做word_id。
  • 使用这些word的描述符建立一个kd树。
  • 建立定位地图(Inverted File)
    • 把定位地图里面每个描述符在knn树中找到最近的那个word
    • 看下Inverted File里面有没有这个word
      • 如果有这个word,就把这个描述符加入到这个word的Inverted File中
      • 如果没有,新建一个这个word对应的Inverted File
  • 使用Inverted File定位
    • 把定位地图里面每个描述符在knn树中找到最近的那个word
    • 和这个word对应Inverted File中所有的描述符比较,找出距离最近的

总结:

  • kd树只用生成一次,有新的描述符加入的时候,只用更新Inverted File
  • vocabulary中的word数量也是固定的

猜你喜欢

转载自blog.csdn.net/ziliwangmoe/article/details/87355903
今日推荐