基于orb的图像拼接代码_OpenVINS代码阅读(3)-特征跟踪/匹配

本文详细介绍了OpenVINS系统中基于ORB的特征提取、匹配以及KLT光流跟踪的过程。对于ORB特征,系统采用网格化均匀提取方法,并在双目图像中结合匹配与极线约束。同时,系统支持基于Aruco标记物的处理和模拟数据的整合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenVINS系统中,视觉特征的提取与跟踪主要分为两种,一种是基于ORB特征(先提取,后匹配),另外一种是基于KLT光流跟踪(先提取fast点,后进行KLT光流跟踪)。此外,系统也提供了对标记物和模拟数据的处理。这一部分的代码在ov_core/src/track文件夹中。

66fa51d2819652f151c218dd250e872e.png
OpenVINS系统特征跟踪

一.基于KLT光流的特征跟踪

1.特征提取

c38091735f155ff117f14fc6b5fc68b9.png
划分网格后在每个网格中提取一定数量的特征

在特征提取过程中,首先将图片划分为小的网格,在每个网格中提取一定数目的特征点(保证特征的均匀分布)。系统提供了两种特征提取方法:第一种是提取Difference of Gaussian (DoG)特征,但这种方法在系统中并未使用。第二种是在网格中提取FAST点,值得学习的是,作者使用函数cv::parallel_for_在网格中并行提取fast点,提高了特征提取的速度。

单目图像:当处理第一帧图像时,直接进行特征提取,而第二帧图像,只需补充特定数量(目标数量-当前数量)的特征点。OpenVINS采取的策略是:在第二帧之后的图像上,依旧在整幅图像上进行特征提取,在加入的过程中,同样设置网格来判断该网格是否需要加入特征点(如果该网格中存在特征点,则不新增,否则将新提取的特征点加入到系统中)。

双目图像:不同于单目图像,双目图像多了左右图像上特征匹配的这一步骤。OpenVINS系统中,首先在左图上进行特征提取,之后再利用KLT光流跟踪方法在右图寻找对应关系。右图对应的特征与左图特征设置相同的id。之后左图和右图分别补充按照单目图像的模式来新增特征。

2.特征跟踪

特征跟踪阶段,利用OpenCV库中的KLT光流跟踪函数cv::calcOpticalFlowPyrLK来进行特征跟踪,之后利用去畸变后的特征(cv::undistort_point_brown)来进行RANSAC来去除外点。特别的,对于双目图像,分别在左图和右图上进行KLT跟踪。系统没有使用从左图到右图的跟踪(TODO内容)。

二.ORB特征提取与匹配(基于描述子)

1.ORB特征提取

ORB提取时,fast特征点的检测使用了系统自己实现的网格化均匀提取方法(第一节中)。特殊的,在处理双目图像时,左右两幅图像首先进行特征匹配,保留匹配成功的特征(成对的特征)。

2.ORB特征匹配

好的特征匹配三个筛选标准:

  1. 最优匹配距离/次优匹配距离 < 设定阈值(最优距离显著小于其他的匹配)
  2. 图1-图2 与 图2-图1匹配结果相同(对称检查)
  3. 极线约束(满足极线约束)

三.基于标记物(OpenCV Aruco)

使用的OpenCV Aruco 格式为cv::aruco::DICT_6X6_25。FeatureDatabase存储了检测到的marker的第一个角点。

四.模拟数据处理

在特征跟踪部分,将生成的模拟数据加入到featuredatabase数据库中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值