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();
}

结束语

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值