当前位置: 首页 > news >正文

东莞公司网站制作公司广州物流网站建设

东莞公司网站制作公司,广州物流网站建设,冬季去黄山旅游攻略,肇庆建站模板源码先占坑,明天再完善… 文章目录 0 引言1 Frame类1.1 成员函数1.2 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成,本文在此基础上,继续学习ORB-SLAM2中的图像帧,也就是Frame类&#…

先占坑,明天再完善…

文章目录

  • 0 引言
  • 1 Frame类
    • 1.1 成员函数
    • 1.2 成员变量
  • 2 Frame类的用途

0 引言

ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成,本文在此基础上,继续学习ORB-SLAM2中的图像帧,也就是Frame类,该类中主要包含设置相机参数、利用双目计算深度及特征点反投影到3D地图点等函数。

请添加图片描述

1 Frame类

构造函数Frame类主要的代码如下:
双目相机Frame:

// 双目相机Frame构造函数
Frame::Frame(const cv::Mat &imLeft, const cv::Mat &imRight, const double &timeStamp, ORBextractor *extractorLeft, ORBextractor *extractorRight, ORBVocabulary *voc, cv::Mat &K, cv::Mat &distCoef, const float &bf, const float &thDepth): mpORBvocabulary(voc), mpORBextractorLeft(extractorLeft), mpORBextractorRight(extractorRight), mTimeStamp(timeStamp), mK(K.clone()), mDistCoef(distCoef.clone()), mbf(bf), mThDepth(thDepth), mpReferenceKF(static_cast<KeyFrame *>(NULL)) {// step0. 帧ID自增mnId = nNextId++;// step1. 计算金字塔参数mnScaleLevels = mpORBextractorLeft->GetLevels();mfScaleFactor = mpORBextractorLeft->GetScaleFactor();mfLogScaleFactor = log(mfScaleFactor);mvScaleFactors = mpORBextractorLeft->GetScaleFactors();mvInvScaleFactors = mpORBextractorLeft->GetInverseScaleFactors();mvLevelSigma2 = mpORBextractorLeft->GetScaleSigmaSquares();mvInvLevelSigma2 = mpORBextractorLeft->GetInverseScaleSigmaSquares();// step2. 提取双目图像特征点thread threadLeft(&Frame::ExtractORB, this, 0, imLeft);thread threadRight(&Frame::ExtractORB, this, 1, imRight);threadLeft.join();threadRight.join();N = mvKeys.size();if (mvKeys.empty())return;// step3. 畸变矫正,实际上UndistortKeyPoints()不对双目图像进行矫正UndistortKeyPoints();// step4. 双目图像特征点匹配ComputeStereoMatches();// step5. 第一次调用构造函数时计算static变量if (mbInitialComputations) {ComputeImageBounds(imLeft);mfGridElementWidthInv = static_cast<float>(FRAME_GRID_COLS) / static_cast<float>(mnMaxX - mnMinX);mfGridElementHeightInv = static_cast<float>(FRAME_GRID_ROWS) / static_cast<float>(mnMaxY - mnMinY);fx = K.at<float>(0, 0);fy = K.at<float>(1, 1);cx = K.at<float>(0, 2);cy = K.at<float>(1, 2);invfx = 1.0f / fx;invfy = 1.0f / fy;// 计算完成,标志复位mbInitialComputations = false;}mvpMapPoints = vector<MapPoint *>(N, static_cast<MapPoint *>(NULL));	// 初始化本帧的地图点mvbOutlier = vector<bool>(N, false);	// 标记当前帧的地图点不是外点mb = mbf / fx;		// 计算双目基线长度// step6. 将特征点分配到网格中AssignFeaturesToGrid();
}

RGBD相机Frame:

// RGBD相机Frame构造函数
Frame::Frame(const cv::Mat &imGray, const cv::Mat &imDepth, const double &timeStamp, ORBextractor *extractor, ORBVocabulary *voc, cv::Mat &K, cv::Mat &distCoef, const float &bf, const float &thDepth): mpORBvocabulary(voc), mpORBextractorLeft(extractor), mpORBextractorRight(static_cast<ORBextractor *>(NULL)), mTimeStamp(timeStamp), mK(K.clone()), mDistCoef(distCoef.clone()), mbf(bf), mThDepth(thDepth) {// step0. 帧ID自增mnId = nNextId++;// step1. 计算金字塔参数mnScaleLevels = mpORBextractorLeft->GetLevels();mfScaleFactor = mpORBextractorLeft->GetScaleFactor();mfLogScaleFactor = log(mfScaleFactor);mvScaleFactors = mpORBextractorLeft->GetScaleFactors();mvInvScaleFactors = mpORBextractorLeft->GetInverseScaleFactors();mvLevelSigma2 = mpORBextractorLeft->GetScaleSigmaSquares();mvInvLevelSigma2 = mpORBextractorLeft->GetInverseScaleSigmaSquares();// step2. 提取左目图像特征点ExtractORB(0, imGray);N = mvKeys.size();if (mvKeys.empty())return;// step3. 畸变矫正UndistortKeyPoints();// step4. 根据深度信息构造虚拟右目图像ComputeStereoFromRGBD(imDepth);mvpMapPoints = vector<MapPoint *>(N, static_cast<MapPoint *>(NULL));mvbOutlier = vector<bool>(N, false);// step5. 第一次调用构造函数时计算static变量if (mbInitialComputations) {ComputeImageBounds(imLeft);mfGridElementWidthInv = static_cast<float>(FRAME_GRID_COLS) / static_cast<float>(mnMaxX - mnMinX);mfGridElementHeightInv = static_cast<float>(FRAME_GRID_ROWS) / static_cast<float>(mnMaxY - mnMinY);fx = K.at<float>(0, 0);fy = K.at<float>(1, 1);cx = K.at<float>(0, 2);cy = K.at<float>(1, 2);invfx = 1.0f / fx;invfy = 1.0f / fy;// 计算完成,标志复位mbInitialComputations = false;}mvpMapPoints = vector<MapPoint *>(N, static_cast<MapPoint *>(NULL));	// 初始化本帧的地图点mvbOutlier = vector<bool>(N, false);	// 标记当前帧的地图点不是外点mb = mbf / fx;		// 计算双目基线长度// step6. 将特征点分配到网格中AssignFeaturesToGrid();
}

1.1 成员函数

成员函数类型定义
ORBextractor* mpORBextractorLeft,ORBextractor* mpORBextractorRight public 左右目图像的特征点提取器
void ExtractORB(int flag, const cv::Mat &im) public进行ORB特征提取
cv::Mat mDescriptors,cv::Mat mDescriptorsRight public左右目图像特征点描述子
std::vector<cv::KeyPoint> mvKeys,std::vector<cv::KeyPoint> mvKeysRight public畸变矫正前的左/右目特征点
std::vector<cv::KeyPoint> mvKeysUn public畸变矫正后的左目特征点
std::vector<float> mvuRight public左目特征点在右目中匹配特征点的横坐标
(左右目匹配特征点的纵坐标相同)
std::vector<float> mvDepth public特征点深度
float mThDepth public判断单目特征点和双目特征点的阈值;深度低于该值得特征点被认为是双目特征点;深度低于该值得特征点被认为是单目特征点

1.2 成员变量

成员变量类型定义
mbInitialComputations public static变量,是否需要为Frame类的相机参数赋值,初始化为false,第一次为相机参数赋值后变为false
float fx, float fy, float cx, float cy, float invfx, float invfy public static变量,相机内参
cv::Mat mK public 相机内参矩阵
float mb public相机基线baseline,相机双目间的距离
float mbfpublic 相机基线baseline与焦距的乘积

Frame类大多与相机相关的参数,而且整个系统内的所有Frame对象共享同一份相机参数;

2 Frame类的用途

除了少数被选为KeyFrame的帧以外,大部分Frame对象的作用仅在于Tracking线程内追踪当前帧位姿,不会对LocalMapping线程和LoopClosing线程产生任何影响,在mLastFramemCurrentFrame更新之后就被系统销毁了。


Reference:

  • https://github.com/raulmur/ORB_SLAM2
  • https://github.com/electech6/ORB_SLAM2_detailed_comments/tree/master



须知少时凌云志,曾许人间第一流。



⭐️👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍🌔

http://www.yayakq.cn/news/310711/

相关文章:

  • 十大国外室内设计网站网站建设的技术支持论文
  • 做代码和网站西安建站
  • 公司网站可以分两个域名做吗博物馆门户网站建设目标
  • icp备案网站接入信息ip地址段怎么填网站开发江西
  • 做网站的方法什么是网站建设技术
  • 做网站链接容易吗建设网络平台绩效目标申报表
  • 西城广州网站建设网络会议系统方案
  • 单位做网站有哪些北京网下载
  • 北京建设监理协会官方网站seo是做网站源码还是什么
  • 做壁纸壁的网站有什么区别app网站建设济宁
  • 马鞍山网站网站建设厦门建设工程信息网官网
  • 做网站公司排名电话阿里云 多域名解析 到不同的网站
  • wordpress全站静态化thinkcmf做网站快不快
  • 服务周到的响应式网站做同城特价的网站有哪些
  • 网站上线倒计时 模板wordpress上传插件
  • 做app布局参考哪个网站高端品牌女装连衣裙
  • 深圳网站设计建设公司WordPress添加首页引导页
  • 网站建设课程报告最新手机发布会
  • 苏州营销网站设计如何开淘宝店
  • 电脑做网站用什么软件苏州网站怎么做
  • 冠县网站建设gxshasp.net p2p网站开发
  • 学院评估 网站建设整改最好看的2018中文在线观看
  • 免费建网站讨论电商平台怎么注册
  • 做网站需要的技能网站优化要从哪些方面做
  • 大型网站开发团队的美工需要什么工作经验和教育背景及薪酬短链接在线生成官网
  • 广州网站建设实力乐云seo蚌埠公司做网站
  • 长沙建设网站网站开发证有没有用
  • 专业做网站公司排名门户网站建设关系到
  • 湖南网站托管网络营销方式变化背后的逻辑与趋势
  • 福海网站制作数字化文化馆网站建设