ZBLOG

// 从参考帧pKF中移除本地图点 void MapPoint::EraseObservation(KeyFrame* pKF) { bool bBad=false; { unique_lock lock(mMutexFeatures); // 查找这个要删除的观测,根据单目和双目类型的不同从其中删除当前地图点的被观测次数 if(mObservations.count(pKF)) { i...

以上代码是一个MapPoint类中的函数,用于从参考帧pKF中移除该地图点的观测。具体的操作如下:

  1. 首先,函数会获取mMutexFeatures互斥锁,确保多线程访问的安全性。

  2. 然后,通过查询mObservations容器来查找是否有与pKF对应的观测记录。如果存在观测记录,则进行相应的处理。

  3. 根据单目和双目类型不同,更新地图点被观测次数nObs。如果是双目类型,则减去2;如果是单目类型,则减去1。

  4. 从mObservations容器中删除对应的观测记录。

  5. 如果被删除的pKF是当前地图点的参考帧(mpRefKF),则重新指定参考帧为mObservations中第一个KeyFrame对象。

  6. 如果当前地图点的观测次数小于等于2(nObs <= 2),则将标志位bBad设置为true,表示该地图点需要被丢弃。

  7. 结束互斥锁作用域后,如果bBad为true,则调用SetBadFlag()函数通知可以观测到该MapPoint的Frame对象,表明该MapPoint已经无效或需要被删除。

总结:该函数在移除参考帧pKF对地图点的观测时,会根据单目和双目类型更新被观测次数,并在必要时将该地图点标记为无效。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=3570

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?