ORB-SLAM2解读MapPointCulling

本文想通过MapointCullilng的解读抛砖引玉,分析其中涉及的变量和流程。

想讨论的问题包括:

1. 什么时候进行MappointCulling的操作

2. 那些mappoint是bad

3. GetFoundRatio是怎么算出来的

1. MappointCulling主要发生在局部建图线程(localmapping)的过程中

2. 哪些mappoint是bad?

a. 当跟踪到该地图点的帧数相比预计可观测到该地图点的帧数的比例小于25%,从地图中删除。

跟踪到地图点的数目在函数TrackLocalMap()中被更新, 所以,观测到地图点的普通帧也可以增加Found。

而increaseVisiable则发生在TrackLocalMap()中的SearchLocalPoints()中,被当前帧观测的地图点,以及在当前帧视野范围内的mvpLocalMapPoints都可以被添加。此外,在地图殿replace之后,观测信息也会被更新。

mCurrentFrame.mvpMapPoints[i]->IncreaseFound();

b. 从该点建立开始,到现在已经过了不小于2个关键帧。但是观测到该点的相机数却不超过阈值cnThObs,从地图中删除。

(所以,对于地图点的观测发生在哪里呢?)

对于地图点观测的在增加发生在地图点初始化以及插入关键帧的时候。

有趣的是,新加的地图点存放在list<MapPoint*>这一数据结构里,这样的好处是,对于badpoint的删除开销较小。

lit = mlpRecentAddedMapPoints.erase(lit);

为了防止内存问题,每次对于lit的操作采用了copy内存的方式

MapPoint* pMP = *lit;

关于问题2产生了两个延伸问题。

地图点的观测在哪里建立?

“预计可观测到该点的帧数 ”如何确定?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值