ORB-SLAM2源码学习:Frame.cc⑩: Frame::isInFrustum 判断地图点是否在当前帧的视野范围内

前言

这一部分是为了选定在当前帧的视野范围内的地图点,需要满足4个条件才能入选:

条件1.将这个地图点变换到当前帧的相机坐标系下,满足深度值为正。

条件2.将地图点投影到当前帧的像素坐标系下,满足在图片的有效范围内。

条件3.计算地图点到相机中心的距离,满足在有效范围内。

条件4.计算当前相机指向地图点的向量与地图点的平均观测方向的夹角,满足小于60°(实际比较的是余弦值)。

1.函数声明

/*
 pMP                       当前地图点
 viewingCosLimit           当前相机指向地图点向量和地图点的平均观测方向夹角余弦阈值
 return true                         地图点合格,且在视野内
 return false                        地图点不合格,抛弃
*/
bool Frame::isInFrustum(MapPoint *pMP, float viewingCosLimit)
{
    ....
}

2.函数定义

1.判断其是否满足条件1

获得这个地图点的世界坐标并将其转换到当前相机坐标系下

// mbTrackInView是决定一个地图点是否进行重投影的标志
    // 这个标志的确定要经过多个函数的确定,isInFrustum()只是其中的一个验证关卡。这里默认设置为否
    pMP->mbTrackInView = false;

    // 3D in absolute coordinates
    cv::Mat P = pMP->GetWorldPos(); 

    // 3D in ca
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值