当前位置:网站首页>【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 1.18 的那些事——工作区、模糊测试、泛型
3 Month Tester Readme: 4 Important Skills That Impacted My Career
Use flex-wrap to wrap lines in flex layout
管理基础知识20
3个月测试员自述:4个影响我职业生涯的重要技能
C语言:打印整数二进制的奇数位和偶数位
Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
from origin ‘null‘ has been blocked by CORS policy Cross origin requests are only supported for
浅谈国产ERP的“横纵竖”三向发展态势
6-24漏洞利用-vnc密码破解
随机推荐
Kubernetes — 网络流量模型
安全(2)
大话西游无法登陆解决
一本适合职场新人的好书
FlinkSQL CDC实现同步oracle数据到mysql
JDBC PreparedStatement 的命名参数实现
Reflex WMS中阶系列7:已经完成拣货尚未Load的HD如果要取消拣货,该如何处理?
【图像融合】基于加权和金字塔实现图像融合附matlab代码
哈希表
设备树学习
Moonbeam与Project Galaxy集成,为社区带来全新的用户体验
关于MySQL的数据插入(高级用法)
IDEA找不到Database解决方法
input禁止输入
期货开户如何确定期货公司正规性?
When paying attention to the "Internet +" model, you usually only focus on the "Internet +" model itself
【ORB_SLAM2】void Frame::ComputeImageBounds(const cv::Mat &imLeft)
flv.js解析与使用
管理基础知识15
信息收集之cms指纹识别