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