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

ORB-SLAM2学习笔记:ORBextractor的构造函数详解

ORBextractor的构造函数是ORB-SLAM2中特征提取模块的核心初始化部分,主要完成图像金字塔参数配置、特征点分配策略设定以及方向计算所需数据预计算。以下是对代码的逐部分解析:


一. 成员变量初始化

ORBextractor::ORBextractor(int _nfeatures, float _scaleFactor, int _nlevels, int _iniThFAST, int _minThFAST):nfeatures(_nfeatures), scaleFactor(_scaleFactor), nlevels(_nlevels),iniThFAST(_iniThFAST), minThFAST(_minThFAST)
  • 参数说明
    • _nfeatures:总特征点数(默认1000-2000)。
    • _scaleFactor:金字塔相邻层缩放因子(默认1.2)。
    • _nlevels:金字塔层数(默认8)。
    • _iniThFAST:初始FAST角点检测阈值(默认20)。
    • _minThFAST:若初始阈值未检测到角点,降低后的阈值(默认7)。

二. 图像金字塔参数计算

mvScaleFactor.resize(nlevels);
mvLevelSigma2.resize(nlevels);
mvScaleFactor[0] = 1.0f;
mvLevelSigma2[0] = 1.0f;
for(int i=1; i<nlevels; i++) {mvScaleFactor[i] = mvScaleFactor[i-1] * scaleFactor;mvLevelSigma2[i] = mvScaleFactor[i] * mvScaleFactor[i];
}
  • 功能:计算每层金字塔的缩放因子及其平方。
    • 第0层为原始图像(缩放因子1.0)。
    • 第i层缩放因子为前一层乘以scaleFactor(例如,1.2的缩放因子对应图像尺寸缩小为 1 / 1.2 1/1.2 1/1.2倍)。
    • mvLevelSigma2用于后续高斯模糊的方差计算。

这段代码用于构建图像金字塔的缩放因子及其平方值,是ORB特征提取器中实现尺度不变性的核心计算逻辑。以下是对代码的逐行解析及其设计原理的详细说明:


1. 容器初始化

mvScaleFactor.resize(nlevels);
mvLevelSigma2.resize(nlevels);
mvScaleFactor[0] = 1.0f;
mvLevelSigma2[0] = 1.0f;
  • 功能:初始化两个向量mvScaleFactor(缩放因子)和mvLevelSigma2(缩放因子平方),大小为金字塔层数nlevels。第0层(原始图像)的缩放因子设为1.0。
  • 意义mvScaleFactor存储每层图像相对于原始图像的缩小比例,而mvLevelSigma2用于后续高斯模糊的方差计算(高斯核方差与缩放因子平方成正比)。

2. 逐层计算缩放因子

for(int i=1; i<nlevels; i++) {mvScaleFactor[i] = mvScaleFactor[i-1] * scaleFactor;mvLevelSigma2[i] = mvScaleFactor[i] * mvScaleFactor[i];
}
  • 运算逻辑
    • 缩放因子:第i层的缩放因子 = 第i-1层缩放因子 × scaleFactor(例如scaleFactor=1.2时,逐层缩小为原始尺寸的1/1.2、1/(1.2)^2等)。
    • 方差计算:高斯模糊的方差与图像缩放因子的平方相关,即σ² = (scaleFactor^i)²,用于构建不同尺度的高斯核。
  • 设计目的
    • 尺度空间构建:通过逐层缩小图像,检测不同尺度下的特征点,实现尺度不变性。
    • 效率优化:预计算缩放因子避免重复运算,后续特征点坐标可通过逆缩放因子还原到原始图像坐标系。

3. 参数设计的深层原理

  1. 金字塔层数与缩放因子选择

    • 典型配置为nlevels=8scaleFactor=1.2,平衡计算效率与特征覆盖范围。
    • 高层(低分辨率)图像覆盖更大视野,但细节减少,适合检测大尺度特征。
  2. 高斯模糊与尺度归一化

    • 每层图像生成后需进行高斯模糊,模糊程度由mvLevelSigma2控制,抑制高频噪声并模拟不同尺度下的特征响应。
    • 高斯核尺寸通常取6σ+1(如σ²=2时,核大小为7×7)。
  3. 逆参数计算

    • 后续代码中会预计算mvInvScaleFactormvInvLevelSigma2,用于将特征点坐标从金字塔层映射回原始图像坐标系。

4. 应用示例

假设scaleFactor=1.2nlevels=3,则计算结果为:

层级mvScaleFactormvLevelSigma2
01.01.0
11.21.44
21.442.0736
  • 第1层图像大小为原始尺寸的1/1.2,高斯模糊方差为1.44;
  • 第2层进一步缩小为1/1.44,方差为2.0736。

5. 关联技术对比

  • 图像Resize方法:ORB使用高斯模糊+下采样,而深度学习模型(如YOLO)可能采用双线性插值,需保持训练与推理的一致性。
  • 多尺度特征融合:类似思想也见于CNN中的FPN(特征金字塔网络),通过融合不同层特征提升检测效果。

这段代码通过预计算尺度参数,为ORB特征提取的高效性和尺度不变性奠定了基础,是SLAM系统中特征匹配鲁棒性的关键保障。

三. 逆参数预计算

mvInvScaleFactor.resize(nlevels);
mvInvLevelSigma2.resize(nlevels);
for(int i=0; i<nlevels; i++) {mvInvScaleFactor[i] = 1.0f / mvScaleFactor[i];mvInvLevelSigma2[i] = 1.0f / mvLevelSigma2[i];
}
  • 作用:预计算缩放因子和方差的倒数,避免运行时重复除法运算,提升效率。

这段代码是ORB特征提取器中用于预计算图像金字塔各层逆缩放因子和逆方差的实现,主要涉及mvInvScaleFactormvInvLevelSigma2两个向量的初始化。以下是逐行解析及其作用:

1. 容器初始化

mvInvScaleFactor.resize(nlevels);
mvInvLevelSigma2.resize(nlevels);
  • 功能:调整两个向量的大小为金字塔层数nlevels,为后续存储逆参数预留空间。
  • 意义
    • mvInvScaleFactor存储每层缩放因子的倒数(即1.0f/scaleFactor),用于将特征点坐标从金字塔层映射回原始图像坐标系。
    • mvInvLevelSigma2存储每层缩放因子平方的倒数(即1.0f/(scaleFactor^2)),用于高斯模糊核参数的反向计算。

2. 逐层计算逆参数

for(int i=
http://www.xdnf.cn/news/9357.html

相关文章:

  • HOW - 从0到1搭建自己的博客站点(四)
  • 10.2sql
  • python-正则表达式
  • 与 PyCharm 官方沟通解决开发环境问题记录(进展:官方已推出2个新的修复版本)
  • C语言-文件
  • IEEE Journal on Selected Areas in Communications 2025年论文整理2(中英文摘要)
  • IPv4地址的主要配置项介绍
  • 14. LayUI与Bootstrap框架使用
  • JS手写代码篇---手写promise.all
  • Python条件语句完全指南:从if-else到模式匹配
  • 鸿蒙OSUniApp 实现带搜索功能的下拉菜单#三方框架 #Uniapp
  • 实验设计与分析(第6版,Montgomery)第3章单因子实验:方差分析3.11思考题3.1 R语言解题
  • PIO 也有并发喔,巧用SIDE-SET
  • 解决Qt 打包的软件缺少dll问题
  • 《计算机组成原理》第 4 章 - 存储器​
  • 零基础设计模式——结构型模式 - 装饰器模式
  • 国芯思辰| 同步降压转换器CN2020应用于智能电视,替换LMR33620
  • 在ubuntu手动分区时,730GB的总空间,建议划分多少给根目录
  • AI应用 Markdown 渲染对比与原生实现方案
  • 书籍品读:《逆水行舟话幸福》(陈州)
  • 【Python】2. 基础语法(2)
  • 【运维_日常报错解决方案_docker系列】一、docker系统不起来
  • 从自动化到智能化:制造业数字化转型的五个关键跃迁
  • Vue-03 (调试工具Vue Devtools )
  • delphi xe 12.3下解决错误 ld.exe: unrecognized option ‘--no-rosegment‘
  • 试验台铁地板:技术创新与品质保障
  • 【观成科技】Ymir勒索软件组织窃密木马RustyStealer加密通信分析
  • STM32的HAL编码流程总结(上部)
  • 大模型——MCP 深度解析
  • vue2使用element中多选组件el-checkbox-group,数据与UI更新不同步