视觉SLAM十四讲:从理论到实践(Chapter8:视觉里程计2)

news2024/11/15 11:40:49

前言

学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可

一、目标

1.理解光流法跟踪特征点的原理。
2.理解直接法是如何估计相机位姿的。
3.实现多层直接法的计算。

特征点法存在缺陷:

二、光流(Optical Flow)

光流:空间运动物体在观察成像平面上的像素运动的瞬时速度。

稀疏光流:计算部分像素的运动

稠密光流:计算所有像素的运动

Lucas-Kanade光流

灰度不变假设:同一个空间点的像素灰度值,在各个图像中是固定不变的。灰度不变假设是一个很强的假设,实际中很可能不成立。

根据灰度不变假设,有:

于是有:

在LK光流中,假设某一个窗口(patch)内的像素具有相同的运动。

三、直接法

依旧是灰度不变假设的前提,同时还需要无遮挡,完全漫发射,不考虑光照变化的前提

目标函数:最小化光度误差(Photometric error)

直接法的跟踪方式有:LSD,SVO,DTAM等开源方案。

,第一项与相机位姿没有关系,所以只对第二项求梯度,因此引入中间变量:q=TP,u=\frac{1}{Z_2}Kq,所以会有:

第一项:,像素点位置变化时,图像亮度的变化情况。

第二项:空间点的变化对像素坐标的影响。

第三项:

后两项只与三维点q有关,与图像无关,因此常合到一起,物理意义为:相机发生微小运动后,投影在像面上的像素点位置的变化情况,也就是重投影误差的梯度,其公式形式为:

DTAM——使用所有像素。(但无梯度处对目标函数无贡献)

SVO——使用fast关键点处所在的4x4的patch。(fast特征点表明该处梯度明显)

LSD——使用梯度明显的所有像素点。(数量比SVO多,但比所有像素要少) 

非线性优化的实现方式:

Eigen:需要自己编写,优点是中间过程可以检验是否正确

g2o:快速且方便,但中间过程被隐藏在中间框架里,不可视

直接法的优点:

1. 可以省去计算特征点、描述子的时间。
2. 只要求有像素梯度即可,不需要特征点。因此,直接法可以在特征缺失的场合下使用。比较极端的例子是只有渐变的一幅图像。它可能无法提取角点类特征,但可以用直接法估计它的运动。在演示实验中,我们看到直接法对随机选取的点亦能正常工作。这一点在实用中非常关键,因为实用场景很有可能没有很多角点可供使用。
3. 可以构建半稠密乃至稠密的地图,这是特征点法无法做到的。

直接法的缺点:

1. 非凸性!直接法完全依靠梯度搜索,降低目标函数来计算相机位姿。 但是图像本身是强烈非凸的函数。——优化算法容易局部极小,只在运动很小时才行。

2. 单个像素没有区分度。找一个和它像的实在太多了!——每个像素对改变相机运动的“意见”不一致。只能少数服从多数,以数量代替 质量。

3. 灰度值不变是很强的假设。

直接法适用于初始值还不错,而且前后两帧的运动距离不能差太远的情况。

总结

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

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

相关文章

SEO之关键词扩展(二)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 (接上一篇。。。) 5、各种形式的变体 1.同义词 假设核心关键词是酒店,…

Python版《消消乐》,附源码

曾经风靡一时的消消乐,至今坐在地铁上都可以看到很多人依然在玩,想当年我也是大军中的一员,那家伙,吃饭都在玩,进入到高级的那种胜利感还是很爽的,连续消,无限消,哈哈,现…

Kotlin中的StateFlow和SharedFlow有什么区别?

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在Kotlin的协程库kotlinx.coroutines中,StateFlow和SharedFlow是两种用于处理事件流的API,它们有相似之处,但…

MySQL中获取时间的方法

大家好,在MySQL数据库开发中,获取时间是一个常见的需求。MySQL提供了多种方法来获取当前日期、时间和时间戳,并且可以对时间进行格式化、计算和转换。 以下是一些常用的MySQL时间函数及其示例: 1、NOW():用于获取当前…

GPT-4与GPT-4O的区别详解:面向小白用户

1. 模型介绍 在人工智能的语言模型领域,OpenAI的GPT-4和GPT-4O是最新的成员。这两个模型虽然来源于相同的基础技术,但在功能和应用上有着明显的区别。 GPT-4:这是一个通用型语言模型,可以理解和生成自然语言。无论是写作、对话还…

MySQL 关键特性一:插入缓冲、双写缓冲

前言 ​ 本文主要介绍 mysql 的几大特性之几,如:双写缓冲和插入缓存。 双写缓冲 基本概念 ​ 双写缓冲(doublewrite buffer)是MySQL/InnoDB中用于支持原子页面更新的一种机制。在传统的数据库系统中,为了保证数据的…

小米商城格式化检测点

小米商城格式化检测点: var a function () {var x !0;return function (a, t) {var e x ? function () {if (t) {var x t.apply(a, arguments);t null;return x;}} : function () {};x !1;return e;};}();var t {};function e(n) {var r a(this, function…

数据持久化第七课-URL重写与Ajax

数据持久化第七课-URL重写与Ajax 一.预习笔记 1.URL重写(对网页地址进行保护) 首先编写module,实现对网络地址的处理 其次就是module的配置 最后验证url重写技术 2.Ajax数据交互 编写后端响应数据 处理跨域的配置问题 运行项目得到后端响应数据的地址 编写前端ajax进行数据请…

珈和科技携手浙江省气候中心,打造农业气象数字化服务新标杆!

古谚有云:春耕夏种秋收冬藏,皆在天时。可天有不测风云,农有“旦夕祸福”。寒潮、干旱、洪涝等气象灾害频繁发生,给农业生产带来了巨大挑战。 气候变化直接影响着农业生产,数字化时代,如何依靠科技手段降低…

解决 clickhouse jdbc 偶现 failed to respond 问题

背景 Clickhouse集群版本为 Github Clickhouse 22.3.5.5, clickhouse-jdbc 版本为 0.2.4。 问题表现 随着业务需求的扩展,基于Clickhouse 需要支持更多任务在期望的时效内完成,于是将业务系统和Clickhouse交互的部分都提交给可动态调整核心…

【面试笔记】单片机软件工程师,工业控制方向(储能)

文章目录 1. 基础知识1.1 C语言笔试题1.1.1 用宏定义得到一个数组所含的元素个数1.1.2 定义函数指针从程序固定地址(0)开始执行1.1.3 volatile的含义及作用1.1.4 32位系统,整数7和-7,分别以大端和小端存储,请示意说明 1.2 嵌入式基础1.2.1 简…

知识图谱应用---智慧金融

文章目录 智慧金融典型应用 智慧金融 智慧金融作为一个有机整体,知识图谱提供了金融领域知识提取、融合、分析、推断、决策等功能,如下图所示。在场景方面,智慧金融涵盖智慧支付、智慧财富管理、智慧银行、智慧证券、智慧保险、智慧风控等诸多…

【教程】使用 Tailchat 搭建团队内部聊天平台,Slack 的下一个替代品!

前言 多人协作,私有聊天一直是团队协作的关键点,现在有很多专注于团队协作的应用和平台,比如飞书、企业微信和Slack等。这期教程将带你手把手的搭建一个在线的团队协作向聊天室,希望对你有所帮助! 本期聊天室使用TailChat作为服务…

Rust 第三方库创建和导入(cargo --lib)

前言 日常开发过程中,难免会有一些工具方法,多个项目之间可能会重复使用。 所以将这些方法集成到一个第三方包中方便后期维护和管理, 比如工具函数如果需要修改,多个项目可能每个都需要改代码, 抽离到单独的包中只需要…

esp32-c6所有配套教程

1.介绍 本文是esp32-c6所有资料的介绍 如果需要详细代码的话请访问下面这个链接 esp32-c6使用教程wifi(espidf修改成arduino)附带代码websocket,舵机,点灯【2024年】-CSDN博客 配置环境 视频教程 0-2设置开发环境_哔哩哔哩_bi…

【python】成功解决“ImportError: cannot import name ‘triu’ from ‘scipy.linalg’”错误的全面指南

成功解决“ImportError: cannot import name ‘triu’ from ‘scipy.linalg’”错误的全面指南 在Python编程中,尤其是在使用scipy这个科学计算库时,可能会遇到ImportError错误,提示无法从scipy.linalg模块中导入名为triu的函数。这个错误通…

Linux入门教程笔记(一文带你了解Linux并精通)

文章目录 一、Linux概述二、Linux目录结构(重点)2.1 Linux文件系统的类型2.2 Linux文件系统的结构2.3 具体的目录结构2.3.1 Linux 根目录2.3.2 Linux /usr目录2.3.3 Linux /var 目录2.3.4 tar包存放目录:crossed_swords: 三、vi和vim编辑器四、Lnux开机&…

SpringMVC接收数据

SpringMVC接收数据 SpringMVC处理请求流程 SpringMVC涉及组件理解: DispatcherServlet : SpringMVC提供,我们需要使用web.xml配置使其生效,它是整个流程处理的核心,所有请求都经过它的处理和分发![ CEO ]HandlerMappi…

16个常用的思维模型

01.机会成本 02.沉没成本 03.直觉思维 04.决策树 05.非SR模型 06.确认性偏差 07.易得性偏差 08.逆向思维 09.六顶思考帽 10.101010旁观思维 11.升级思维 11.笛卡尔模型 13.第一性原理 14.奥卡姆剃刀理论 15.马斯洛需求层次理论 16.反脆弱思维 来源:16个常用的思维模…

基于最大重叠离散小波变换的PPG信号降噪(MATLAB 2018)

光电容积脉搏波PPG信号结合相关算法可以用于人体生理参数检测,如血压、血氧饱和度等,但采集过程中极易受到噪声干扰,对于血压、血氧饱和度测量的准确性造成影响。随着当今社会医疗保健技术的发展,可穿戴监测设备对于PPG信号的质量…