前言
这部分是根据帧或者关键帧的地图点的深度来预测它对应的二维特征点所在的金字塔层级。
1.函数声明
1.预测地图点对应特征点所在的图像金字塔尺度层数
/*预测地图点对应特征点所在的图像金字塔尺度层数currentDist 相机光心距离地图点距离pKF 关键帧return int 预测的金字塔尺度*/
int MapPoint::PredictScale(const float ¤tDist, KeyFrame* pKF)
{....
}
2. 根据地图点到光心的距离来预测一个类似特征金字塔的尺度
/*根据地图点到光心的距离来预测一个类似特征金字塔的尺度currentDist 地图点到光心的距离pF 当前帧int 尺度*/
int MapPoint::PredictScale(const float ¤tDist, Frame* pF)
{....
}
2.函数定义
1.数学思想:
2.代码实现1
float ratio;{unique_lock<mutex> lock(mMutexPos);// mfMaxDistance = ref_dist*levelScaleFactor 为参考帧考虑上尺度后的距离// ratio = mfMaxDistance/currentDist = ref_dist/cur_distratio = mfMaxDistance/currentDist;}// 取对数int nScale = ceil(log(ratio)/pKF->mfLogScaleFactor);if(nScale<0)nScale = 0;else if(nScale>=pKF->mnScaleLevels)nScale = pKF->mnScaleLevels-1;return nScale;
3.代码实现2
float ratio;{unique_lock<mutex> lock(mMutexPos);ratio = mfMaxDistance/currentDist;}int nScale = ceil(log(ratio)/pF->mfLogScaleFactor);if(nScale<0)nScale = 0;else if(nScale>=pF->mnScaleLevels)nScale = pF->mnScaleLevels-1;return nScale;
结束语
以上就是我学习到的内容,如果对您有帮助请多多支持我,如果哪里有问题欢迎大家在评论区积极讨论,我看到会及时回复。