【第七讲---视觉里程计1】

news2025/1/15 19:35:40

视觉里程计就是通过对图像进行特征提取与匹配得到两帧之间的位姿,并进行估计相机运动。
经典SLAM中以相机位姿-路标来描述SLAM过程
在这里插入图片描述

特征提取与匹配

  • 路标是三维空间中固定不变的点,可以在特定位姿下观测到
  • 在视觉SLAM中,可利用图像特征点作为SLAM中的路标

特征点

特征点是图像中最具代表性的部分,如轮廓、边缘、最暗或最亮的部分

特征点具有以下性质
在这里插入图片描述
特征点的信息:

  • 关键点:位置、大小、方向、评分等
  • 描述子:特征点周围的图像信息

ORB特征

ORB特征的关键点是:Oriented FAST(一种改进的FAST角点)
描述子:改进BRIEF
FAST关键点:
FAST:主要检测局部像素灰度变化明显的地方,(如果一个像素与邻域的像素差别较大,则更可能是角点),检测过程如下:
在这里插入图片描述

在这里插入图片描述
在FAST12中,提出一个高效的测试,来快速排除一大部分非特征点的点,该测试仅仅检查位置1、5、9、13四个位置的像素,如果不满足至少三个角点亮度大于I+T或小于I-T,那么p不可能是一个角点。
FAST缺点:

  • 原始FAST角点经常出现扎堆的现象。所以在第一遍检测之后,还需要用非极大抑制,在一定区域内仅保留响应极大值的角点,避免角点集中问题。
  • 由于FAST角点不具有方向信息且存在尺度问题,ORB添加了尺度和旋转的描述:尺度不变性通过构建图像金字塔来实现,旋转是由灰度质心法来实现的。
    Oriented FAST:
    👉尺度不变性
    在这里插入图片描述

很好的避免了尺度不变性
👉旋转是由灰度质心实现的
质心是指以图像块灰度值作为权重的中心。
在这里插入图片描述
在这里插入图片描述
描述子:
一种二进制描述子,其描述向量由许多01组成

  • 1:关键点附近两个像素p>q
  • 0: 关键点附近两个像素p<q

在这里插入图片描述
在这里插入图片描述
example:
在这里插入图片描述
在这里插入图片描述
那么怎么旋转的呢?
在这里插入图片描述
BRIEF描述子总结

  • 优点:使用了随机选点的比较,速度标记快,由于使用二进制表达,存储起来十分方便
  • 缺点:原始的BRIEF描述子具有旋转不变性,在图像发生旋转时容易丢失,而ORB在FAST特征提取阶段计算了关键点的方向,计算了旋转之后的BRIEF特征使ORB的描述子具有较好的旋转不变性。
  • BRIEF是一种二进制描述,需要用汉明距离度量(即其中01个数的差异)

特征匹配

特征匹配解决了SLAM中的数据关联问题,即确定当前看到的路标与之前看到的路标之间的对应关系。
通过对图像或者图像与地图之间的描述子进行准确匹配,可以为后续的姿态估计、优化等操作减轻大量负担,然而,由于图像特征的局部特征、误匹配的情况存在。
对于两个时刻的图像:

  • 在图像It中提取到特征点xm(m=1,2…M)在图像It+1时刻提取到特征点xn(n=1,2…N)
  • 暴力匹配:对于每一个特征点xm与所有xn测量描述子的距离,然后排序,取最近的一个作为匹配点
  • 当特征点数量很大时,匹配的运算量会变得很大,选用一些改进算法:快速近似最近邻算法

计算相机运动

2D-2D对极集合

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述)
需要用到相机坐标系->像素坐标系相关知识

👉 对极几何

在这里插入图片描述
本质矩阵仅依赖于外部参数R,t
👉八点法求E
将E看作3*3的矩阵,去掉尺度因子后剩下8个自由度,考虑一对匹配点,其归一化坐标为:在这里插入图片描述
在这里插入图片描述
把上述方程记为
Ae=0
如果给定的匹配点多于8,该方程构成一个超定方程,即不一定存在e使得上式成立,此时可以计算一个最小二乘解
在这里插入图片描述
求出了在最小二乘意义下的E矩阵。

(超定方程是指具有多于未知数的方程组。在超定方程中,未知数的个数大于等于方程的个数。这种情况下,通常不存在一个恰好满足所有方程的解。因此,超定方程往往没有唯一解,而是寻求最小二乘解或最优解。最小二乘解是使得所有方程误差的平方和最小化的解,而最优解则是根据给定的目标函数和约束条件来确定的最佳解)
在这里插入图片描述

在这里插入图片描述
👉从E中分解R和t
对E进行奇异值分解
在这里插入图片描述

(U与V是正交阵,)

奇异值分解(SVD)是一种矩阵分解的方法。对于一个m×n维的矩阵A,它可以表示为以下形式的矩阵乘积:

A = UΣV^T

其中,U是一个m×m维的正交矩阵,Σ是一个m×n维的对角矩阵,V是一个n×n维的正交矩阵的转置。

在Σ中,对角线上的元素称为奇异值,按照从大到小的顺序排列。而U和V中的列向量分别称为左奇异向量和右奇异向量,它们都是正交向量。

SVD可以将原始矩阵A分解成三个部分,U、Σ和V,这些部分包含了矩阵A的重要信息。
在这里插入图片描述

三角测量、PNP、ICP

3D-2D:PNP

已知:
在这里插入图片描述

1.3D:上一帧的相机坐标系下的3D点。
2.2D:两幅图片的匹配点信息,像素坐标。
3.其他:相机内参
> 求: 两帧之间的变化矩阵R,t

👉直接线性变换(DLT)
在这里插入图片描述
在这里插入图片描述
👉P3P
输入数据为3对 3D-2D匹配点
在这里插入图片描述
在这里插入图片描述
P3P总结:
利用三角形相似性质,求解A,B,C在当前相机坐标系下的3D坐标,转换一个3D-3D的位姿估计问题=》ICP
❗❗❗👉非线性优化不太会
前面说的线性优化方法,往往是先求相机位姿,再求空间点位置,非线性优化则是把它们都看成优化变量,放在一起优化,因此可以构建一个定义于李代数上的非线性最小二乘问题。
分析目标函数:我们通过特征匹配知道p1,p2是同一空间点的投影,估计了一个相机位姿,使得3D的实际投影位置与观测位置存在一个误差(重投影误差),则把误差求和,构建最小二乘问题,然后寻找最好的相机位姿,使其最小化。
在这里插入图片描述
在这里插入图片描述

ICP

ICP是根据前后两帧图像中匹配好的特征点在相机坐标系下的三维坐标,求解相机帧间运动的一种算法。
在这里插入图片描述
👉:SVD方法
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/896907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv光流估计

光流估计 光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”&#xff0c;根据各个像素点的速度矢量特征&#xff0c;可以对图像进行动态分析&#xff0c;例如目标跟踪。 返回&#xff1a; 亮度恒定&#xff1a;同一点随着时间的变化&#xff0c;其亮度不会发生改变…

STM32 GPIO复习

GPIO General Purpose Input Output&#xff0c;即通用输入输出端口&#xff0c;简称GPIO。 负责采集外部器件的信息或控制外部器件工作&#xff0c;即输入输出。 不同型号&#xff0c;IO口数量可能不一样&#xff0c;可通过选型手册快速查询。 能快速翻转&#xff0c;每次翻…

基于QT4的GPX文件编辑器开发

GPX文件是记录地理点的文件,本质是一种xml文件。GPX文件目前没有很好的编辑器,因此作者决定开发一款无需安装的绿色编辑器。 在QT4开发中,XML可以用DOM来实现,但其逻辑并不是很清晰。使用模型视图反而会更加可读。因此在开发中,使用model-view模式来实现数据读写。 1 需…

高速、稳定、安全:4G工业路由器在户外环境下的组网优势

能够在无人值守的户外环境下实现组网和远程监控功能的4G工业路由器&#xff01;工业级路由器具备防尘、防水、耐高温等特性&#xff0c;适用应用在恶劣的户外及工业场景中&#xff0c;如远程农田监测、驾考科目二/科目三、智能交通系统、环境监控、煤矿数据采集、水利远程管理等…

视频播放实现示例Demo

学习链接 vuespringboot文件分片上传与边放边播实现 同步加载、播放视频的实现 ---- range blob mediaSource 通过调试技术&#xff0c;我理清了 b 站视频播放很快的原理 MSE (Media Source Extensions) 上手指南 浅聊音视频的媒体扩展&#xff08;Media Source Extension…

曲线救国 | 双非渣硕的秋招路

作者 | 带带大兄弟 面试锦囊之面经分享系列&#xff0c;持续更新中 欢迎后台回复"面试"加入讨论组交流噢 一篇旧文&#xff0c;可以参考~ 写在前面 双非渣硕&#xff0c;0实习&#xff0c;3篇水文&#xff0c;三个给老板当打工仔的nlp横向项目&#xff0c;八月份开…

uniapp 微信小程序 绘制海报,长按图片分享,保存海报

uView UI 2.0 dcloud 插件市场地址 弹窗海报源码 <template><!-- 推荐商品弹窗 --><u-popup :show"haibaoShow" mode"center" round26rpx z-index10076 bgColortransparent safeAreaInsetTop close"goodsclose"><image …

第四十九周周报

学习目标&#xff1a; VITGAN实验 学习时间&#xff1a; 2023.8.12-20238.18 学习产出&#xff1a; 一、实验 1、内容&#xff1a;在原模型的基础上加上相对位置编码&#xff0c;结果&#xff1a;比原模型差 2、内容&#xff1a;在原模型的基础上加上可学习位置编码相对位…

常用系统命令

重定向 cat aa.txt > bbb.txt 将输出定向到bbb.txt cat aaa.txt >> bbb.txt 输出并追加查看进程 ps ps -ef 显示所有进程 例⼦&#xff1a;ps -ef | grep mysql |&#xff1a;管道符 kill pid 结束进程&#xff0c; 如 kill 3732&#xff1b;根据进程名结束进程可以先…

终端美化+自动补全和语法高亮 + zsh

终端美化自动补全和语法高亮 zsh 一、前言 1、最终效果 2、所用工具 zsh shell # bash改zsh&#xff0c;选用原因后文提及oh my zsh # 插件管理powerlevel10k # 主题auto-suggestion # 自动补全syntax highlighting # 语法高亮3、bash vs zsh vs fish 经典话题&#xff0c;…

Shell编程之免交户

expect 一、多行重定向1.1 格式1.2 注意事项1.3 使用实例 二、expect免交户2.1 expect概述2.1.1 定义2.1.2 安装2.1.3 命令格式 2.2 相关命令2.2.1 spawn2.2.2 expect.3 send2.2.3 set2.2.4 send_user2.2.5 exp_continue2.2.6 脚本解释器2.2.7 结束符2.2.8 exit 2.3 运用实例.1…

【Django】Task3 外键的使用、Queryset和Instance

【Django】Task3 外键的使用、Queryset和Instance Task3主要理解数据库外键的使用场景&#xff0c;了解Queryset的功能&#xff0c;通过编写代码体验Queryset中对数据库实例的curd操作&#xff0c;同时了解到Instance的定义。 1.外键的使用 1.1什么是外键 数据表外键是数据…

SHELL 基础

echo 打印命令 &#xff1a; 显示字符串 [rootserver ~]# echo this is SHELL language this is SHELL language [rootserver ~]# echo this is SHELL language this is SHELL language [rootserver ~]# echo "this is SHELL language" this is SHELL language…

el-table 实现动态表头 静态内容 根据数据显示动态输入框

直接放代码了 <el-table:data"form.tableDataA"borderstripestyle"width: 100%; margin-top: 20px"><el-table-columnv-for"(category, categoryIndex) in form.tableDataA":key"categoryIndex":label"category.name&qu…

AWS security 培训笔记

云计算的好处 Amazon S3 (Storage) Amazon EC2 (Compute) 上图aws 的几个支柱&#xff1a;安全是其中一个啦 其中安全有几个方面 IAMdetection基础架构保护数据保护应急响应 关于云供应商的责任 data center 原来长这样 &#xff0c;据说非常之隐蔽的 如果有天退役了&#xf…

回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果…

第1篇:Arduino与ESP32开发板的安装方法

一、下载安装包 arduino2.1.0-esp32_2.0.9-esp8266_3.1.1离线安装包 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…

计算机网络——OSI与TCP/IP各层的结构与功能,都有哪些协议?

文章目录 一 OSI与TCP/IP各层的结构与功能,都有哪些协议?1.1 应用层1.2 运输层1.3 网络层1.4 数据链路层1.5 物理层1.6 总结一下 二 ⭐TCP 三次握手和四次挥手(面试常客)2.1 TCP 三次握手漫画图解2.2 为什么要三次握手⭐2.3 第2次握手传回了ACK&#xff0c;为什么还要传回SYN&…

小程序的数据绑定和事件绑定

小程序的数据绑定 1.需要渲染的数据放在index.js中的data里 Page({data: {info:HELLO WORLD,imgSrc:/images/1.jpg,randomNum:Math.random()*10,randomNum1:Math.random().toFixed(2)}, }) 2.在WXML中通过{{}}获取数据 <view>{{info}}</view><image src"{{…

C#反编译工具ILSPY

ILSPY ILSpy 是一个开源的.Net程序集浏览器和反编译工具。 Visual Studio 2022附带了默认情况下启用的F12反编译支持&#xff08;使用我们的引擎v7.1&#xff09;。 在Visual Studio 2019中&#xff0c;您必须手动启用F12支持。转到“工具”/“选项”/“文本编辑器”/C#/Adva…