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

【视觉惯性SLAM:八、ORB-SLAM2:特征匹配】

在ORB-SLAM2中,特征匹配是关键模块之一,用于实现跟踪、初始化和重定位。特征匹配贯穿系统的多个环节,如单目初始化、关键帧处理、局部地图更新等。以下从不同场景的特征匹配方法及其细节来介绍ORB-SLAM2中的特征匹配。

单目初始化中的特征匹配

单目相机初始化是ORB-SLAM2中的重要步骤。在没有深度信息的情况下,需要通过帧间特征点的匹配建立初始的地图和相机位姿。

如何快速确定候选匹配点

在进行帧间特征匹配时,为提高效率,需要快速确定候选匹配点:

  • 金字塔匹配:
    • ORB-SLAM2构建了图像金字塔,不同层级包含不同尺度的特征点。
    • 匹配时,根据特征点尺度选择金字塔层级,在对应尺度中搜索候选点。
  • 特征点描述子匹配:
    • 计算每个特征点的ORB描述子,使用汉明距离(Hamming Distance)衡量描述子的相似性。
    • 在候选点中选择汉明距离最小的点作为匹配点。

方向一致性检验

在单目初始化中,ORB特征点的方向是关键信息:

  • 原理:
    • ORB特征点的方向由灰度质心法计算,匹配的特征点方向应该保持一致。
    • 检验方向差值是否在一定阈值范围内(如30度以内),剔除方向不一致的匹配。
  • 作用:
    • 提高匹配的准确性,减少错误匹配。

通过词袋进行特征匹配

词袋模型(Bag of Words, BoW)是ORB-SLAM2中用于特征匹配的重要方法之一,特别是在重定位和回环检测中。

什么是词袋模型

词袋模型是一种用于描述图像特征的向量化方法,将图像特征表示为视觉词典中的特征单词频率:

  • 将一幅图像中的特征点描述符映射到离散的视觉单词集合中,生成一个词袋向量。
  • 每个单词的频率表示该单词在图像中出现的次数。

词袋的作用

词袋在特征匹配中的主要作用包括:

  • 特征检索:将特征点向量化,使相似的图像快速检索。
  • 数据压缩:将特征点的描述子集合压缩为固定长度的词袋向量。
  • 特征比较:通过词袋向量计算图像相似度,快速匹配关键帧。

ORB特征点构建词袋是否靠谱

ORB特征点是二值描述子,直接用于词袋模型构建具有以下优势:

  • 高效性:二值描述子计算简单,词袋生成快速。
  • 鲁棒性:ORB特征点对光照、旋转和尺度变化具有鲁棒性,适合用于构建视觉词典。

离线训练字典

在ORB-SLAM2中,词袋模型的视觉词典是离线训练的:

  • 使用大量图像数据的ORB特征描述子,通过 k-means聚类 训练出视觉单词集合。
  • 每个聚类中心代表一个视觉单词,组成视觉词典。

在线生成词袋向量

在系统运行时,词袋向量的生成包括以下步骤:

  • 对当前帧提取ORB特征点的描述子。
  • 将描述子与视觉词典中的单词匹配(计算距离,找到最近的单词)。
  • 统计单词频率,生成词袋向量。

通过地图点进行特征匹配

在跟踪和局部地图更新过程中,ORB-SLAM2使用地图点(MapPoints)进行特征匹配。

投影匹配原理

地图点是三维空间中的点,可以投影到当前帧的图像平面上,用于寻找匹配点:

  • 原理:
    • 根据上一帧的位姿和三维地图点的位置,预测当前帧中地图点的像素坐标。
    • 在预测位置周围搜索匹配点。
  • 搜索范围:
    • 搜索范围由地图点的不确定性决定,通常是一个区域(例如半径为10像素的圆形区域)。

根据相机运动方向确定金字塔搜索层级

由于特征点可能分布在图像金字塔的不同层级,ORB-SLAM2根据相机运动的方向和尺度变化,确定搜索层级:

  • 如果相机向前移动,地图点在图像中的尺度会变小,需在较高层级搜索。
  • 如果相机向后移动,地图点在图像中的尺度会变大,需在较低层级搜索。

通过Sim(3)变换进行相互投影匹配

在关键帧之间或地图融合过程中,ORB-SLAM2使用Sim(3)变换(相似变换)进行相互投影匹配。

相互投影匹配原理

Sim(3)变换是一种包含旋转、平移和尺度变化的变换,用于描述两帧或两个地图之间的关系:

  • 投影匹配步骤:
    • 将第一帧中的三维点通过Sim(3)变换投影到第二帧。
    • 在投影点附近寻找匹配特征点。
    • 同时,将第二帧中的三维点通过逆Sim(3)变换投影到第一帧,寻找匹配点。
  • 双向验证:
    • 使用双向投影(第一帧到第二帧,第二帧到第一帧)进行匹配验证,剔除错误匹配。

Sim(3)匹配的应用

  • 关键帧匹配:用于相邻关键帧之间的特征点匹配。
  • 地图融合:用于将局部地图与全局地图进行对齐。

总结

ORB-SLAM2中的特征匹配方法多样化,根据场景不同,采取了针对性的方法:

  • 单目初始化:
    • 利用金字塔搜索快速确定候选点。
    • 通过方向一致性检验提高匹配准确性。
  • 词袋匹配:
    • 使用离线训练的视觉词典和在线生成的词袋向量进行快速检索和匹配。
  • 地图点匹配:
    • 利用地图点的投影位置进行局部搜索,结合相机运动方向确定搜索层级。
  • Sim(3)变换匹配:
    • 双向投影匹配验证,用于关键帧和地图融合场景。

这些特征匹配方法有效地保证了ORB-SLAM2的跟踪、初始化、地图构建和重定位的鲁棒性和实时性。


http://www.kler.cn/a/454812.html

相关文章:

  • 外键约束的应用层维护
  • Spring Boot 自动配置:从 spring.factories 到 AutoConfiguration.imports
  • PlantUML 入门使用指南
  • Llama 3 后训练(三)
  • 逻辑控制语句
  • 【Unity3D】ECS入门学习(六)状态组件 ISystemStateComponentData
  • fisco-bcos手动部署区块链浏览器
  • 【Leetcode】3159. 查询数组中元素的出现位置
  • 顶会评测集解读-AlignBench: 大语言模型中文对齐基准
  • 什么是Top-p采样与Top-k采样?大模型推理时如何同时设置?解析Transformers库源代码
  • 智能合约在Web3中的作用:去中心化应用的基石
  • 探寻 OneCode 核心优势:MVVM 进阶与前后端协同之魅
  • HTML5 开发工具与调试
  • Kubernetes 的资源管理方式
  • 【Java 代码审计入门-02】SQL 漏洞原理与实际案例介绍
  • 负载均衡式在线OJ系统测试报告(Jmeter性能测试、Selenium自动化测试脚本)
  • 嵌入式单片机模数转换控制与实现详解
  • JS 设置按钮的loading效果
  • 开源 SOAP over UDP
  • OpenCV相机标定与3D重建(35)计算两幅图像之间本质矩阵(Essential Matrix)的函数findEssentialMat()的使用