ORB_SLAM2原理及代码解析:MapPoint::AddObservation() 函数
1 作用
把某个地图点和某个关键帧的特征点建立对应关系,登记下来。
2 所属位置及代码
(1)声明:include/MapPoint.h
void AddObservation(KeyFrame* pKF,size_t idx);
(2)定义:src/MapPoint.cc
void MapPoint::AddObservation(KeyFrame* pKF, size_t idx) {unique_lock<mutex> lock(mMutexFeatures);if(mObservations.count(pKF)) //如果pKF在mObservations中,则退出return;mObservations[pKF]=idx;if(pKF->mvuRight[idx]>=0) //如果地图点被双目观测到+2,单目+1nObs+=2;elsenObs++; }
3 参数含义
(1)pKF
观测到该地图点的关键帧指针
(2)idx
该地图点在关键帧
pKF
中对应的特征点索引
(3)mObservations
存储观测该地图点的关键帧集合(一个 MapPoint 可以被多个 KeyFrame 看到)
(4)nObs
被多少帧观测到的计数器。相当于是地图点质量指标,
nObs
越高,说明这个点越稳定,越可能是真实的 3D 点,而不是噪声。