认真的虎ORBSLAM2源码解读(八):关键帧KeyFrame

1.前言

1.1.参考博客

【泡泡机器人原创专栏】DBoW3 视觉词袋模型、视觉字典和图像数据库分析
浅谈回环检测中的词袋模型(bag of words)
开源词袋模型DBow3原理&源码(一)整体结构

2.头文件

class KeyFrame
{
   
public:
    KeyFrame(Frame &F, Map* pMap, KeyFrameDatabase* pKFDB);

    // Pose functions
    void SetPose(const cv::Mat &Tcw);
    cv::Mat GetPose();
    cv::Mat GetPoseInverse();
    cv::Mat GetCameraCenter();
    cv::Mat GetStereoCenter();
    cv::Mat GetRotation();
    cv::Mat GetTranslation();

    // Bag of Words Representation
    //计算此关键帧的mBowVec,mFeatVec
    void ComputeBoW();

    // Covisibility graph functions
    /**在共视图Covisibility graph中添加边,并调用UpdateBestCovisibles()更新essential graph
     * @param pKF 具有共视关系的其他关键帧
     * @param weight 和pKF共视的mappoint数量
     */
    void AddConnection(KeyFrame* pKF, const int &weight);
    void EraseConnection(KeyFrame* pKF);
    
    
    //更新共视图Covisibility graph,essential graph和spanningtree,以及共视关系
    void UpdateConnections();
    //更新 mvpOrderedConnectedKeyFrames,mvOrderedWeights,也就是共视图covisibility
    void UpdateBestCovisibles();
    //返回此关键帧有共视关系的节点
    std::set<KeyFrame *> GetConnectedKeyFrames();
    //返回Covisibility graph中与此节点连接的节点(即关键帧)
    std::vector<KeyFrame* > GetVectorCovisibleKeyFrames();
    //返回Covisibility graph中与此节点连接的权值前N的节点
    std::vector<KeyFrame*> GetBestCovisibilityKeyFrames(const int &N);
    std::vector<KeyFrame*> GetCovisiblesByWeight(const int &w);
    int GetWeight(KeyFrame* pKF);

    // Spanning tree functions
    //Spanning tree的节点为关键帧,共视程度最高的那个关键帧设置为节点在Spanning Tree中的父节点
    void AddChild(KeyFrame* pKF);
    void EraseChild(KeyFrame* pKF);
    void ChangeParent(KeyFrame* pKF);
    std::set<KeyFrame*> GetChilds();
    KeyFrame* GetParent();
    bool hasChild(KeyFrame* pKF);

    // Loop Edges
    //添加一个闭环检测帧
    void AddLoopEdge(KeyFrame* pKF);
    std::set<KeyFrame*> GetLoopEdges();

    // MapPoint observation functions
    /**向关键帧添加mappoint,让keyframe知道自己可以看到哪些mappoint
     * @param pMP 添加的mappoint
     * @param idx mappoint在此帧对应的特征点的序号
     */
    void AddMapPoint(MapPoint* pMP, const size_t &idx);
    void Er
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值