当前位置: 首页 > article >正文

ORB-SLAM2源码学习:KeyFrame.cc③: void KeyFrame::AddConnection更新连接权重

前言

这是一个简单的更新权重的一个函数,在更新共视关系时被调用。

1.函数声明

void KeyFrame::AddConnection(KeyFrame *pKF, const int &weight)

它接受一个关键帧和对应的权重,实际调用时是用当前的关键帧和权重来更新与当前关键共视的关键帧的权重。

2.函数定义 

1.如果之前没有记录到权重信息就新建连接。

2.如果形参传入的权重与之前不一致就更新连接。

3.如果权重一致则不用更新连接。

根据上述情况来执行相应操作

最后如果权重发生了变化就要调用UpdateBestCovisibles函数来更新最佳共视关系也就是对共视关键帧和权重的那两个列表重新进行排序。

 

/*
 为当前关键帧新建或更新和其他关键帧的连接权重
 pKF       和当前关键帧共视的其他关键帧
 weight    当前关键帧和其他关键帧的权重(共视地图点数目)
 */
void KeyFrame::AddConnection(KeyFrame *pKF, const int &weight)
{
    {
        // 互斥锁,防止同时操作共享数据产生冲突
        unique_lock<mutex> lock(mMutexConnections);

        // 新建或更新连接权重
        if(!mConnectedKeyFrameWeights.count(pKF)) 
            // count函数返回0,说明mConnectedKeyFrameWeights中没有pKF,新建连接
            mConnectedKeyFrameWeights[pKF]=weight;
        else if(mConnectedKeyFrameWeights[pKF]!=weight) 
            // 之前连接的权重不一样了,需要更新
            mConnectedKeyFrameWeights[pKF]=weight;
        else
            return;
    }

    // 连接关系变化就要更新最佳共视,主要是重新进行排序
    UpdateBestCovisibles();
}

结束语

以上就是我学习到的内容,如果对您有帮助请多多支持我,如果哪里有问题欢迎大家在评论区积极讨论,我看到会及时回复。

 


http://www.kler.cn/a/532097.html

相关文章:

  • 2024年度十大网络安全热点事件盘点:时代暗涌下的安全危机
  • 实战:如何快速让新网站被百度收录?
  • Starrocks 对比 Clickhouse
  • 模拟实战-用CompletableFuture优化远程RPC调用
  • React+Cesium基础教程(003):加载3D建筑物和创建标签
  • 电路研究9.2.8——合宙Air780EP中IP 应用相关命令使用方法研究
  • 字节序与Socket编程
  • 想品客老师的第十一天:模块化开发
  • Java线程创建与管理:继承、实现、Callable与线程池
  • 【Java知识】使用Java实现地址逆向解析到区划信息
  • sql字符串函数及字符拼接函数
  • kubernetes 核心技术-集群安全机制 RBAC
  • 流式学习(简易版)
  • 刷题笔记 哈希表-1 哈希表理论基础
  • AI 编程工具—Cursor进阶使用 Agent模式
  • 【棋弈云端】网页五子棋项目测试报告
  • 趣味Python100例初学者练习01
  • Chapter 6 -Fine-tuning for classification
  • 解析Python装饰器高级用法6项
  • 算法随笔_38: 最多能完成排序的块
  • 蓝桥杯真题 - 子串简写 - 题解
  • 开源 CSS 框架 Tailwind CSS
  • upload-labs安装与配置
  • SQL Server中DENSE_RANK()函数:简洁处理连续排名
  • 数据结构:树和二叉树概念_堆篇
  • apikey存储方案探秘(deepseek-R1对话)