当前位置:网站首页>【ORB_SLAM2】void Frame::AssignFeaturesToGrid()
【ORB_SLAM2】void Frame::AssignFeaturesToGrid()
2022-08-02 01:05:00 【小秋SLAM实战教程】
AssignFeaturesToGrid这个函数的主要目的是根据https://blog.csdn.net/qq_21950671/article/details/126084120计算的去畸变后的图像边界和网格尺寸,将去畸变后的特征点分配到对应的网格中去,这么做的目的是为了后面的特征点匹配加速。
// #define FRAME_GRID_ROWS 48
// #define FRAME_GRID_COLS 64
// Number of KeyPoints. int N;
void Frame::AssignFeaturesToGrid()
{
// Step 1 给存储特征点的网格数组 Frame::mGrid 预分配空间
// FRAME_GRID_COLS = 64,FRAME_GRID_ROWS=48
int nReserve = 0.5f*N/(FRAME_GRID_COLS*FRAME_GRID_ROWS);// 64 * 48
//开始对mGrid这个二维数组中的每一个vector元素遍历并预分配空间
for(unsigned int i=0; i<FRAME_GRID_COLS;i++)
for (unsigned int j=0; j<FRAME_GRID_ROWS;j++) {
// reserve的作用是更改vector的容量capacity, 使vector至少可以容纳n个元素
// std::vector<std::size_t> mGrid[FRAME_GRID_COLS][FRAME_GRID_ROWS]
// std::cout << "nReserve " << nReserve << std::endl;
// std::vector<std::size_t> mGrid[FRAME_GRID_COLS][FRAME_GRID_ROWS];
mGrid[i][j].reserve(nReserve);
}
// Step 2 遍历每个特征点,将每个特征点在mvKeysUn中的索引值放到对应的网格mGrid中
for(int i=0;i<N;i++)
{
//从类的成员变量中获取已经去畸变后的特征点
const cv::KeyPoint &kp = mvKeysUn[i];
//存储某个特征点所在网格的网格坐标,nGridPosX范围:[0,FRAME_GRID_COLS], nGridPosY范围:[0,FRAME_GRID_ROWS]
int nGridPosX, nGridPosY;
// 计算某个特征点所在网格的网格坐标,如果找到特征点所在的网格坐标,记录在nGridPosX,nGridPosY里,返回true,没找到返回false
if(PosInGrid(kp,nGridPosX,nGridPosY))
//如果找到特征点所在网格坐标,将这个特征点的索引添加到对应网格的数组mGrid中
mGrid[nGridPosX][nGridPosY].push_back(i);
}
}
边栏推荐
猜你喜欢
go mode tidy出现报错go warning “all“ matched no packages
H5页面调用微信授权获取code
Debian侵犯Rust商标,妥协改名还是会得到豁免?
Rust P2P网络应用实战-1 P2P网络核心概念及Ping程序
Go语学习笔记 - gorm使用 - gorm处理错误 Web框架Gin(十)
Can't connect to MySQL server on 'localhost3306' (10061) Simple and clear solution
mapbox使用教程
PowerBI商学院佐罗BI真经连续剧
Navicat数据显示不完全的解决方法
信息化和数字化的本质区别是什么?
随机推荐
Go 1.18 的那些事——工作区、模糊测试、泛型
GO开发环境配置
信息化和数字化的本质区别是什么?
html+css+php+mysql实现注册+登录+修改密码(附完整代码)
Test Cases: Four-Step Test Design Approach
管理基础知识10
大话西游创建角色失败解决
6-25漏洞利用-irc后门利用
PowerBI商学院佐罗BI真经连续剧
期货开户手续费加一分是主流
flv.js解析与使用
js中内存泄漏的几种情况
27英寸横置大屏+实体按键,全新探险者才是安全而合理的做法!
tf.keras.callbacks.EarlyStopping()
DCM 中间件家族迎来新成员
第一次写对牛客的编程面试题:输入一个字符串,返回该字符串出现最多的字母
滴滴秋招提前批正式开始,现在投递免笔试
go mode tidy出现报错go warning “all“ matched no packages
Why is on-chain governance so important, and how will Polkadot Gov 2.0 lead the development of on-chain governance?
去经营企业吧