【跟我一起读《视觉惯性SLAM理论与源码解析》】第八章 ORB-SLAM2中的特征匹配
特征匹配在ORB-SLAM2中是很重要的内容,函数有多次重载,一般而言分为以下
- 单目初始化下的特征匹配
- 通过词袋进行特征匹配
- 通过地图点投影进行特征匹配
- 通过Sim(3)变化进行特征匹配
- 在单目初始化下的特征匹配是参考帧和当前帧之间的特征点匹配,一般先构建旋转直方图,在半径窗口搜索当前帧F2中所有的候选匹配特征点,遍历窗口中所有潜在的匹配候选点,找到最优和次优的匹配候选点,对最优和次优进行检查,满足一定的阈值约束条件,删除重复匹配,计算匹配点旋转角度差所在的直方图,根据直方图信息统计剔除错误匹配的特征点对,最后将筛选后的匹配的特征点保存好。
- 对于方向一致性检验,由于特征点匹配对主方向上整体会有一个固定一致的变化,通常直方图前三个最大的格子就是正常的匹配点对(旋转直方图干的事)。一般来说不再前三个格子中的都是外点,要剔除,在的是内点保留。
- 如何快速搜索候选匹配点的?假设第一帧提取到的特征点坐标是(x1,y1),那么在第二帧中相同坐标以(x1,y1)为圆心画一个半径为r的圆(源代码是正方形,这里换成圆形更合适),分网格,计算上下左右边界的行列id,判断是否合法,不合法直接踢掉;遍历圆所有网格,寻找满足条件的候选特征点,若此网格里没有,遍历下一个,读取特征点,保证其所在金字塔层数符合要求,通过计算候选特征点距离圆心的距离,判断是否在圆内。
- 用词袋进行特征匹配,一般都会把图像中提取的特征点转化为词袋向量以及特征向量(确定描述子的单词ID,权重,单词所属的节点),词袋向量保存的是单词在所有叶子节点中距离叶子节点最近的ID以及权重,对于同一个单词ID,权重是会不断更新的;特征向量中保存的是深度level up的节点ID以及特征点在原图像中的索引,在进行特征匹配的时候搜索范围是和它具有同样NodeID的所有子节点,level up越小,速度越快,但不一定能查到。在实际例子关键帧与当前帧的匹配中,首先分别取出同一节点的ORB特征点,(外for)遍历关键帧属于该节点的特征点,取出描述子,(内for)遍历当前帧属于该节点的特征点,取出描述子,计算描述子之间距离,更新最佳与次佳,根据阈值剔除错误匹配,统计角度变化直方图,根据直方图剔除错误匹配的特征点对。
- 通过地图点投影的特征匹配需要做一个PnP的转化也就是3D-2D的匹配,首先还是旋转直方图,计算当前帧和上一帧的平移向量,对于前一帧的地图点,通过相机投影模型投影到当前帧中的像素坐标,根据相机的运动方向判断搜索的尺度范围,遍历候选的匹配点,选择描述子距离最小的特征点,作为最佳匹配点,构建直方图,进行旋转一致性检验,剔除不一致的匹配
- 基于sim3的不再详细描述了,需要注意要在保证没有匹配的特征点对进行1->2,2->1的sim3变换,只有当你选我我也选你的时候才能认作是成功的匹配点对。
这里还是需要反复琢磨每一个细节,这里只做一个基本的概括
相关文章:
【跟我一起读《视觉惯性SLAM理论与源码解析》】第八章 ORB-SLAM2中的特征匹配
特征匹配在ORB-SLAM2中是很重要的内容,函数有多次重载,一般而言分为以下 单目初始化下的特征匹配通过词袋进行特征匹配通过地图点投影进行特征匹配通过Sim(3)变化进行特征匹配 在单目初始化下的特征匹配是参考帧和当前帧之间的特…...
【Leedcode】数据结构中链表必备的面试题(第四期)
【Leedcode】数据结构中链表必备的面试题(第四期) 文章目录【Leedcode】数据结构中链表必备的面试题(第四期)1.题目2.思路图解(1)思路一(2)思路二3.源代码总结1.题目 相交链表: 如下(示例)&…...
【2023】助力Android金三银四面试
前言 新气象,新生机。在2023年的Android开发行业中,又有那些新的面试题出现呢?对于Android面试官的拷问,我们又如何正确去解答?万变不离其宗,其实只要Android的技术层面没变化,面试题也就是差不…...
Leetcode.1801 积压订单中的订单总数
题目链接 Leetcode.1801 积压订单中的订单总数 Rating : 1711 题目描述 给你一个二维整数数组 orders,其中每个 orders[i] [pricei, amounti, orderTypei]表示有 amounti笔类型为 orderTypei、价格为 pricei的订单。 订单类型 orderTypei 可以分为两种…...
红帽Linux技术-cp命令
cp是一个复制文件或者目录的命令,其作用是将一个或多个文件或目录从源位置复制到目标位置。 格式:cp [选项] 源文件或目录 目标文件或目录 常用选项: -r:复制目录及其子目录下的所有文件和目录; -p:保留…...
代码随想录算法训练营day41 | 动态规划 01背包问题基础 01背包问题之滚动数组
01背包问题基础 问题描述 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 举个栗子 背包最大重量为4。 物品为: 重量价值…...
MyBatis学习笔记(三) —— MyBatis核心配置文件详解
3、核心配置文件详解 id是唯一标识,不能重复,但是在真正开发过程中,不可能一个项目中同时使用两个环境,肯定会使用其中的某一个,这时候它的default就比较重要了。 default是设置我们当前使用的默认环境的id <?x…...
使用GDAL进行坐标转换
1、地理坐标系与投影坐标系空间参考中主要包含大地水准面、地球椭球体、投影坐标系等几部分内容。地图投影就是把地球表面的任意点,利用一定数学法则,转换到地图平面上的理论和方法,一般有两种坐标系来进行表示,分别是地理坐标系和…...
日常编程中和日期相关的代码和bug
本文主要是Java中和日期时间相隔的几个常用代码函数代码,做了总结,希望在日常编码中,可以帮到大家。 1.计算闰年 记住一个短语,“四年一润,百年不闰,四百再润”,不管换啥语言,相信…...
ATT与Intel汇编语法区别
寄存器、变量(常量)与立即数 在Intel汇编中,无论是寄存器、变量(常量)还是立即数,都是直接使用的,例如下列例子中分别加载一个变量(常量)与立即数到寄存器中:…...
Spring Cloud Alibaba全家桶(一)——Spring Cloud Alibaba介绍
前言 本文为 Spring Cloud Alibaba介绍 相关知识,下边将对微服务介绍(包括:系统架构演变、微服务架构介绍、常见微服务架构),Spring Cloud Alibaba介绍(包括:Spring Cloud Alibaba 的定位、Spri…...
2023年网红营销10大趋势解读:品牌出海必看
前不久influencermarketinghub发布了《2023年影响者营销基准报告》,报告总结了3500多家营销机构、品牌和其他相关专业人士对当前网红营销现状的看法,以及预测了未来网红营销的一个发展趋势。本期Nox聚星就带领大家详细解读关于2023年网红营销的10大趋势。…...
Java学习笔记 --- 正则表达式
一、体验正则表达式 package com.javase.regexp;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** 体验正则表达式,给文本处理带来哪些便利*/ public class Regexp_ {public static void main(String[] args) {//假设,编写了爬虫&…...
【基础算法】字符串哈希
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
unity 多个模型或物体无限循环拖拽 类似无限列表循环
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ModelAnimal : MonoBehaviour { //需滑动的物体 public GameObject m_objA; //音乐 public GameObject m_objB; //电话 public GameObject m_objC; //导航 public GameObject m…...
GroupDocs.Merger for Java
GroupDocs.Merger for Java GroupDocs.Merger for Java是一个文档操作API,可帮助您合并、拆分、交换或删除文档页面。API通过启用或禁用密码提供保护,并允许开发人员加入PDF、Microsoft Word、Excel和Powerpoint文档。 支持的文件格式 Microsoft Office格…...
04--WXML
1、什么是WXML什么是Wxml呢?我们首先要介绍一下Html,Html的全称为HyperTextMarkup Language,翻译过来就是超文本标记语言,这种语言目前已经普遍用于前端开发,而wxml正是从html演变而来,它基于微信这个平台&…...
一篇五分生信临床模型预测文章代码复现——FIgure 9.列线图构建,ROC分析,DCA分析 (五)
之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…...
每月一书(202302)《狂飙》
文章目录剧情内容观看收获正菜很硬配菜很足食物还有喻义又到了每月一书的时间,本月没有阅读书籍,不过看了一部叫《狂飙》的电视剧,因为该电视剧热度高,所以我也凑个热闹。下面分享一下我看完后的体会。 剧情内容 这是一部扫黑和…...
wsl2 docker 安装
一. 更换镜像源 备份默认源: cp /etc/apt/sources.list /etc/apt/sourses.list.bak 编辑文件: vim /etc/apt/sources.list 删除原有内容并替换为: # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb …...
3步上手UI-TARS智能助手:让AI帮你自动化电脑和浏览器任务
3步上手UI-TARS智能助手:让AI帮你自动化电脑和浏览器任务 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop…...
掌握SRA Tools:3步轻松处理高通量测序数据的高效工具
掌握SRA Tools:3步轻松处理高通量测序数据的高效工具 【免费下载链接】sra-tools SRA Tools 项目地址: https://gitcode.com/gh_mirrors/sr/sra-tools SRA Tools是处理NCBI Sequence Read Archive数据的核心工具集,让你可以轻松地下载、转换和分析…...
res-downloader终极指南:5分钟掌握全平台资源高效下载秘籍
res-downloader终极指南:5分钟掌握全平台资源高效下载秘籍 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 想要轻…...
简单说明--程序系统如何对用户身份证实名认证接口api
程序系统对注册用户身份认证,接口将【身份证号码、姓名】上传至接口API判断是否匹配 请求数据: bodys.put("idNo", "330421190210182345"); bodys.put("name", "张某某");响应数据: {"name&quo…...
华硕笔记本性能控制终极指南:用GHelper轻松管理硬件性能
华硕笔记本性能控制终极指南:用GHelper轻松管理硬件性能 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, …...
【纳瓦尔宝典】财富篇精读:程序员实现财富自由的底层逻辑
本文是《纳瓦尔宝典》第一部分"财富"与第二部分"判断力"的完整精读笔记,专为程序员群体量身打造。结合技术职场实际,拆解每一个核心观点,提供可落地的行动指南。一、积累财富:不是靠打工,而是靠创…...
Docker 入门完全指南
Docker 入门完全指南 容器这东西,用上了就回不去了。比虚拟机轻,比装环境快,一套走天下。 先搞清楚几个概念 镜像(Image):只读模板,类似装系统的ISO容器(Container)&…...
从零开始:如何用Fabric示例模组快速入门Minecraft模组开发
从零开始:如何用Fabric示例模组快速入门Minecraft模组开发 【免费下载链接】fabric-example-mod Example Fabric mod 项目地址: https://gitcode.com/gh_mirrors/fa/fabric-example-mod 你是否曾经想过为Minecraft添加自己的创意功能,却因为复杂的…...
OpCore Simplify:黑苹果OpenCore EFI自动化配置的智能解决方案
OpCore Simplify:黑苹果OpenCore EFI自动化配置的智能解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在复杂的黑苹果安装过程中&…...
3分钟零基础入门:Forza Painter如何将任何图片变为专业车辆涂装
3分钟零基础入门:Forza Painter如何将任何图片变为专业车辆涂装 【免费下载链接】forza-painter Import images into Forza 项目地址: https://gitcode.com/gh_mirrors/fo/forza-painter 你是否曾为《极限竞速:地平线》系列游戏中复杂的车辆涂装设…...
