【深蓝学院】手写VIO第6章--视觉前端--笔记

第5章相关内容,还是CSDN的传统Markdown编辑器好用。
视觉前段在14讲课程中已经讲过,这里再简单复习一下。

1. 前端工作的定性比较,分析

这一节讲了很多关于前端的方法框架的对比讨论,后面看完了相关的论文之后强烈建议再回来听一听本章的第一节课。
在这里插入图片描述
前端和后端不太一样,前端没办法放在同一个框架中把不同方法进行对比(如光流法和特征匹配法),因为可能不同方法在其特定的工况下都能正常工作。

前端实现上的现实问题
在这里插入图片描述
实际上那个,前端在SLAM最终精度上的影响比后端更大,体现出来的更直观,比如某一段没有跟踪上之类的,可能就会影响整体的精度。

在这里插入图片描述
比如一次仿真中,假设数据和噪声都服从Gaussian distribution,用UKF得到了较好的实验结果,但是在实际情况中可能并不都符合Gaussian distribution,所以这个结论不一定是能够很好地泛化的,overfitting了。
在这里插入图片描述
比如有local mapping,sliding window,理论上来说全局的marg会更好,到那时实际中全局的marg计算力量过大,不太易实现,具体看后端能够有多大的算了和空间来做,如果没有的话可能就用个EKF就行了。
不同数据集间精度的对比没有什么意义,Kitti场景简单,动的物体比较少,EUROC可能已经做到头了;TUM-Mono难一点,场景较多,有过门,过墙之类的。
在这里插入图片描述
前端因为方法不同(比如特征点法第一步提特征点,直接法第一步求梯度,这些方法都不同,很难在方法内(范式内,先这样理解)进行对比,只能在整个系统之间(范式间)进行对比)。

直接法基于灰度不变假设,相对于PnP来说多了乘了个像素梯度,即若该店的梯度为0,则对T的估计无用,故倾向于选择有梯度的点,且梯度越大贡献越大。

在这里插入图片描述

很多地方直接法都比特征点法好,因为可能没办法提取到足够多特征点且容易feature lost。(高翔的主观感受,具体还是需要自己去跑一跑)

在这里插入图片描述

在这里插入图片描述

光流法:PTAM,Tango,现在比较成熟,但缺点也明显;
FAST+光流,GFTT+光流:很实用,很快;
特征匹配:SIFT,FURF匹配的最好,但是计算量大;
特征匹配和光流都依赖角点,提不出来的场景无法使用。

在这里插入图片描述DSO达到某个误差(如小于3)所需的迭代次数,发现跟使用额KF数量和选点数量有关。

2. 前端介绍(以光流来展开)

上手可以用FAST+光流来做一个看看效果。
在这里插入图片描述
VIO的初始化需要讨论一下,下一节讨论。
有一个问题:对于前端,如何保证整体框架是最优的?即第一步计算光流,第二部估计pose…每一步的操作可以保证是最优的,但是没办法保证整体这个前端框架是最优的,大多数是工程上的经验,只要这样做就能得出还不错的结果。你也可以直接搞一个神经网络,输入imgs输出一堆poses和landmarks,

在这里插入图片描述
特征提取方法在CV普及开来之前就已经研究出来了,如角点主要看两个方向的梯度分布,对矩阵进行特征值分解(奇异值分解,平方之后就是特征值?特征值体现的是在两个方向上的分布情况):

  • 如果两方向梯度都接近于0,倾向于是平坦区域(flat)。
  • 如果两个方向都比较大,倾向于角点(Corner)。
  • 如果是一方向较大,另一方向较小,倾向于边(Edge)。

具体实现:Harris提出了一个判断方法,计算 S H a r r i s S_{Harris} SHarris指标,

  • 如果两个都小,则 S H a r r i s S_{Harris} SHarris接近0,
  • 如果都很大,则整体很大,
  • 如果一大一小,则结果不大不小,
    设置阈值来判断是否为Corner

在这里插入图片描述
在Harris基础上改进了评分方式,可以指定选点的个数,根据选点个数来确定比较的阈值。
在这里插入图片描述

在这里插入图片描述
warp光流:对于光流的改进。由于视角可能会发生变化,特征块也会变化,所以要对特征块进行变换使得变换之后的特征块更像待追踪的块(常取仿射变换),在优化过程中,变换的参数还可以调整,以在线估计最优的变换参数。
在这里插入图片描述
还可以给Warp光流加上金字塔,对高速运动的场景效果更好

在这里插入图片描述

  1. 不能远距离track,一个具体例子:如果相机不动,有人从面前走过,期间过了100帧图像,那么可能第1帧和第100帧就无法track上了。
    工程上的解决方法例如track with map,上面的方法是track weith last( I k I_k Ik I k − 1 t r a c k I_{k-1}track Ik1track)或者是recent,当做完之后再跟地图去比,把地图中的一些点往投到 I k I_k Ik中投,发现能够投过来,然后再把 I k I_k Ik I 1 I_1 I1进行对比,看改点能否被track。
  2. 远近这种场景比较常见,比如远处是空白,但是近处发现有纹理。
  3. 角点对效果好,边效果不好
  4. 稀疏光流约束差,可能存在outlier,如稠密光流约束附近的点的亮度差不多,但稀疏没有。

3. 关键帧与三角化

3.1. 关键帧

在这里插入图片描述

  1. 关键帧是为了减小问题规模,使得后端能够计算得过来
  2. 处理相机停止的情况,避免后端退化:如果不挑选KF,camera 不动会导致逆深度计算错误,逆深度变成不可观的,有多个解。
    关键帧选择:
  3. 不能太近:太近可能退化,或者三角化算不出深度
  4. 不能太远:太远可能共视点过少,丢掉中间的motion

在这里插入图片描述
非KF只算前端,不进后端。
插入KF的一个策略:在后端算力的允许的情况下,尽可能多地插入KF,因为KF对后端是友好的(光束法平差,误差均摊,整体误差变小)

在这里插入图片描述
ORB_SLAM2后端有个local mapping,只要该线程idle时就插KF,然后对于冗余的再删掉。

DSO使用了sliding window,窗口内保持5~7个KF,并保持一定的展开,老的几帧,中等的几帧,最新的几帧,有以下策略

  • 对于老的关键帧,将其中的landmark投到新的里面去,如果新的里面没有观测到这些landmark,则marg掉老的KF。
  • 每个KF都有最小寿命,防止刚进来就被marg。

3.2. 三角化

在这里插入图片描述
三角化的条件和时间,有的方法只在KF上提Feature,有的每帧都提。前者计算量很小,但是可能导致三角化时点不够,效果不好;后者计算量大但是效果好。

在这里插入图片描述
取(10)第3行,带入(10),取钱两行可得(12),这里说一下矩阵的维度,
P k P_k Pk:3*4,每行系数都是1*4,即 P k , 1 T , P k , 2 T , P k , 3 T P_{k,1}^T,P_{k,2}^T,P_{k,3}^T Pk,1T,Pk,2T,Pk,3T都是4*1
y y y:4*1
(13)中D矩阵每行都是4*1,由于每次观测会有u,v两个方程,所以一次观测就是 ( 2 ∗ 1 ) ∗ 4 (2*1)*4 (21)4行的D,n此就是 2 n ∗ 4 2n*4 2n4行。
在这里插入图片描述

求解
在这里插入图片描述

在这里插入图片描述

  1. 作业待解:为什么取 y = u 4 y=u_4 y=u4
  2. 由于系数矩阵容易满秩,故寻求最小二乘的数值解,对 D T D D^TD DTD进行奇异值分解(SVD),分解出的奇异值一般是从大到小排列, D T D D^TD DTD 4 ∗ 4 4*4 44的,4个奇异值,判断该解是否有效(判断三角化是否成立),看 σ 4 < < σ 3 \sigma_4<<\sigma_3 σ4<<σ3(经验上取1e-2~1e-4算远小于,也可以卡得更严一点更小一点)是否成立, σ 1 σ 2 σ 3 \sigma_1\sigma_2 \sigma_3 σ1σ2σ3组成了一个三维的空间, σ 4 \sigma_4 σ4是零空间
  3. D的数值可能不稳定,数值过大的话会导致较小值的影响体现不出来,需要对D进行rescale,取值方法取为一个对角阵,取D最大元素之逆。
  4. 还需要检测深度是否满足正确条件。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java计算机毕设】 留守儿童爱心捐赠管理系统 springboot vue html mysql 送文档ppt

1.项目视频演示 【java计算机毕设】留守儿童爱心捐赠管理系统 springboot vue html mysql 送文档ppt 2.项目功能截图 3.项目简介 后端&#xff1a;springboot&#xff0c;前端&#xff1a;vue&#xff0c;html&#xff0c;数据库&#xff1a;mysql&#xff0c;开发软件idea 留…

Vue数据代理的原理

一、Object.defineProperty方法 我们可以使用一个Object.defineProperty方法给一个对象添加属性&#xff0c;并对该属性进行权限设置 语法格式如下&#xff1a; Object.defineProperty(对象 , "属性名" , { // 配置项 }) let Person {name:"寻霖",age:1…

数据结构:排序- 插入排序(插入排序and希尔排序) , 选择排序(选择排序and堆排序) , 交换排序(冒泡排序and快速排序) , 归并排序

目录 前言 复杂度总结 预备代码 插入排序 1.直接插入排序: 时间复杂度O(N^2) \空间复杂度O(1) 复杂度&#xff08;空间/时间&#xff09;&#xff1a; 2.希尔排序&#xff1a; 时间复杂度 O(N^1.3~ N^2&#xff09; 空间复杂度为O(1) 复杂度&#xff08;空间/时间&#…

ctfshow web入门 php特性 web131-web135

1.web131 和上题一样差不多&#xff0c;正则最大回溯次数绕过 import requests url"" data{f:very*250000360Dctfshow } rrequests.post(url,datadata) print(r.text)2.web132 通过扫描发现robots.txt,访问/admin发现源码 &&和||都是短路运算符 只要满足co…

PyCharm搭建Scrapy环境

Scrapy入门 1、Scrapy概述2、PyCharm搭建Scrapy环境3、Scrapy使用四部曲4、Scrapy入门案例4.1、明确目标4.2、制作爬虫4.3、存储数据4.4、运行爬虫 1、Scrapy概述 Scrapy是一个由Python语言开发的适用爬取网站数据、提取结构性数据的Web应用程序框架。主要用于数据挖掘、信息处…

景联文科技:AI大模型强势赋能,助力自动驾驶迭代升级

我国一直以来都将自动驾驶作为新兴产业发展的重点领域之一&#xff0c;工信部等相关部委出台了一系列自动驾驶发展战略、规划和标准&#xff0c;一些地方政府也在积极开展关于自动驾驶的地方立法&#xff0c;为自动驾驶技术的研发和应用提供更加具体的法律保障。例如&#xff0…

浅谈风力发电场集中监控系统解决方案

作为清洁能源之一&#xff0c;风力发电场近几年装机容量快速增长。8月17日&#xff0c;国家能源局发布1-7月份全国电力工业统计数据。截至7月底&#xff0c;全国累计发电装机容量约27.4亿千瓦&#xff0c;同比增长11.5%。其中&#xff0c;太阳能发电装机容量约4.9亿千瓦&#x…

【鼠标右键菜单添加用VSCode打开文件或文件夹】

鼠标右键菜单添加用VSCode打开文件或文件夹 演示效果如下&#xff1a; 右击文件 或右击文件夹 或在文件夹内空白处右击 方法一&#xff1a;重装软件 重装软件&#xff0c;安装时勾选如图所示方框&#xff08;如果登录的有账号保存有配置信息可以选择重装软件&#xff0c…

Windows服务器获取本地文件夹文件

1、直接复制粘贴 通过远程连接到这个服务器&#xff0c;然后本机到服务器能直接粘贴复制文件上去 注&#xff1a;首先服务器要先开启远程桌面哦 2、Windows远程连接 有的不能复制粘贴的&#xff0c;可以用第二种方法。 ①、windowsR,输入mstsc ②、点击“选项”按钮&#x…

OpenWRT配置SFTP远程文件传输,实现数据安全保护

文章目录 前言1. openssh-sftp-server 安装2. 安装cpolar工具3.配置SFTP远程访问4.固定远程连接地址 前言 本次教程我们将在OpenWRT上安装SFTP服务&#xff0c;并结合cpolar内网穿透&#xff0c;创建安全隧道映射22端口&#xff0c;实现在公网环境下远程OpenWRT SFTP&#xff…

万万没想到,我用文心一言开发了一个儿童小玩具

最近关注到一年一度的百度世界大会今年将于10月17日在北京首钢园举办&#xff0c;本期大会的主题是“生成未来&#xff08;PROMPT THE WORLD&#xff09;”。会上&#xff0c;李彦宏会做主题为「手把手教你做AI原生应用」的演讲&#xff0c;比较期待 Robin 会怎么展示。据说&am…

使用枚举Enum代替Integer类型

一、问题 虽然项目使用了枚举Enum&#xff0c;来替代原来的Constant常量类&#xff0c;但DTO对象的入参仍然是Integer类型&#xff0c;顶多再加个 {link } 说明它是对应哪个枚举。 但这仍然无法限制传入的值不会乱传。要是有人不写{link } 或者{link } 写错&#xff0c;那更死…

host配置

配置host文件的作用主要是用于自定义域名与IP地址之间的映射关系。Host文件是一个操作系统用于将人类可读的域名&#xff08;例如&#xff1a;www.example.com&#xff09;映射到IP地址&#xff08;例如&#xff1a;192.168.1.1&#xff09;的文件。当你在浏览器中输入一个网址…

【小工具-生成合并文件】使用python实现2个excel文件根据主键合并生成csv文件

1 小工具说明 1.1 功能说明 一般来说&#xff0c;我们会先有一个老的文件&#xff0c;这个文件内容是定制好相关列的表格&#xff0c;作为每天的报告。 当下一天来的时候&#xff0c;需要根据新的报表文件和昨天的报表文件做一个合并&#xff0c;合并的时候就会出现有些事新增…

H5逆向之远程RPC

引言前一讲说过H5 怎么去抓包,逆向分析。其中说到RPC。这一节详细讲一下。有一种情况,JS 比较复杂,混淆的厉害。 这个时候就用到RPC。原理就是,hook web 浏览器,直接调用js 里边的方法。 Node 服务。为什么用到Node 服务,先来看下这架构 Node 对外提供各种接口,外部可以…

基于乌燕鸥优化的BP神经网络(分类应用) - 附代码

基于乌燕鸥优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于乌燕鸥优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.乌燕鸥优化BP神经网络3.1 BP神经网络参数设置3.2 乌燕鸥算法应用 4.测试结果&#x…

【pycharm】sqlite3:Driver class ‘org.sqlite.JDBC‘ not found

pycharm 连接sqlite3的时候&#xff0c;点击&#xff1a;Test Connection 提示&#xff1a;Driver class ‘org.sqlite.JDBC’ not found. 点击&#xff1a;Download missing driver files 点击&#xff1a;Test Connection 这样就ok了&#xff1b;

VR全景拍摄酒店,为用户消除“不透明度”

近日在各大社交平台上&#xff0c;出现了不少吐槽国庆期间酒店价格太贵的帖子&#xff0c;而一些热门旅游地的度假酒店、网红民宿的热门房型已经“一房难求”&#xff0c;这就出现酒店房型与预定房型不同的现象出现&#xff0c;VR全景拍摄技术同酒店行业的结合&#xff0c;就可…

linux中Crontab定时参数

注&#xff1a;图片转载于 点我进入图片出处 * * * * * sh /data/var/test.sh >> test_crontab_log.log分钟 0~59 0表示没分周 小时 0~23 0表示每小时 天 1~31 *表示每天 月 1~12 *表示每月 周 0~7 */0/7表示每周

PDF编辑和OCR文字识别工具ABBYY FineReader PDF

ABBYY FineReader PDF是一款专业的OCR文字识别和PDF编辑工具&#xff0c;可以帮助用户更好地处理和管理PDF文档。以下是ABBYY FineReader PDF的一些特点&#xff1a; 1. 文字识别精准&#xff1a;ABBYY FineReader PDF具有强大的OCR文字识别功能&#xff0c;可以将PDF中的文字…