解释下面这段代码 if (!T_M.empty() && flagprocess) //T_M: Outliers vector && people exists 如果場景中有人並且有异常點,則通過label進行進一步的運動檢查 { std::chrono::steady_clock::time_point tc1 = std::chrono::steady_clock::now(); //erase outliers from mvKeysTemp flag_mov = mpORBextractorLeft->CheckMovingKeyPoints(imGray, imS, mvKeysTemp, T_M); std::chrono::steady_clock::time_point tc2 = std::chrono::steady_clock::now(); double tc = std::chrono::duration_cast<std::chrono::duration<double>>(tc2 - tc1).count(); cout << "check time =" << tc * 1000 << endl; } ExtractORBDesp(0, imGray); N = mvKeys.size(); if (mvKeys.empty()) return; UndistortKeyPoints(); ComputeStereoFromRGBD(imDepth); mvpMapPoints = vector<MapPoint *>(N, static_cast<MapPoint *>(NULL)); mvbOutlier = vector<bool>(N, false); // This is done only for the first Frame (or after a change in the calibration) InitializeClass(); AssignFeaturesToGrid();
时间: 2023-06-15 18:07:00 浏览: 115
RANSAC_m.zip_RANSAC matlab_RANSAC_3D_RANSAC算法_ransac .m_ransac算
这段代码是一个函数的一部分,主要是用于对当前帧提取ORB特征点,并根据场景中的人和异常点进行进一步的运动检测,最后将特征点分配到网格中。
具体来说,首先判断场景中是否有人以及是否存在异常点,如果有,就通过调用mpORBextractorLeft->CheckMovingKeyPoints()函数来检测运动,并将结果保存在flag_mov变量中。接着用UndistortKeyPoints()函数对特征点进行去畸变处理,然后通过ComputeStereoFromRGBD()函数计算深度信息,并将特征点分配到网格中以加速后续的匹配过程。
最后,如果是第一帧或者相机标定发生变化,就调用InitializeClass()函数进行初始化操作,然后将特征点分配到网格中。
阅读全文