ORB-SLAM3 Frame类源码分析(二)

2021SC@SDUSC

Frame类中还包含了与其自身紧密相连的函数:

现在我们以isInFrustum为例:其作用为检查一个MapPoint是否在该帧的视角范围内:

函数:

bool Frame::isInFrustum(MapPoint *pMP, float viewingCosLimit)

其中viewingCosLimit:最大视角 地图点与光心组成的向量与地图点平均向量组成的夹角的最大阈值

// 这里的MapPoint是从SearchLocalPoint传递进来的,具备一定信息量
    pMP->mbTrackInView = false;
    cv::Mat P = pMP->GetWorldPos(); 

像素范围的判断:

//将MapPoint投影到当前帧, 并判断是否在图像内    
const cv::Mat Pc = mRcw*P+mtcw; // 这里的R,t是经过初步的优化后的
    const float &PcX = Pc.at<float>(0);
    const float &PcY = Pc.at<float>(1);
    const float &PcZ = Pc.at<float>(2);

    if(PcZ<0.0f)
        return false;

远近距离判断:
根据前面金字塔的计算,可以推测特征点允许被成功提取的距离范围
dmax​=dm​∗1.2m
dmin​=dm​∗1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值