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

news2024/11/26 22:45:09

第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.coloradmin.cn/o/1075589.html

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

相关文章

如何在Firefox中配置HTTP?

在浏览器中配置HTTP是一个常见的需求&#xff0c;它可以让我们轻松访问需要的网站或保护个人隐私。本文将为您详细介绍如何在Firefox浏览器中配置HTTP应用&#xff0c;帮助您实现无缝的HTTP体验。无论您是初次接触HTTP还是有一定经验的用户&#xff0c;本文都能为您提供实用的操…

ParCNetV2: Oversized Kernel with Enhanced Attention(超大的内核,增强了注意力)

贡献&#xff1a; 提出了超大卷积&#xff0c;用于CNN中长距离特征相互作用的有效建模。与ParCNetV1相比&#xff0c;它能够在所有空间位置上进行均匀卷积&#xff0c;同时消除了对额外位置编码的需求。提出了两个分叉门单元(空间BGU和通道BGU)&#xff0c;它们是紧凑而强大的…

阿里云服务器计算型规格族18个实例规格性能特点和适用场景汇总

阿里云服务器ECS计算型规格族属于独享型云服务器&#xff0c;在高负载不会出现计算资源争夺现象&#xff0c;因为每一个vCPU都对应一个Intel Xeon 处理器核心的超线程&#xff0c;具有性能稳定且资源独享的特点。本文介绍阿里云服务器ECS计算型实例规格族18个具体实例规格的性…

力扣第113题 路径总和 || 树 深度优先搜索 回溯 二叉树

题目 113. 路径总和 II 中等 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,n…

Maven系列第3篇:详解maven解决依赖问题

maven系列目标&#xff1a;从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第3篇。 我们先来回顾一下什么是maven&#xff1f; maven是apache软件基金会组织维护的一款自动化构件工具&#xff0c;专注服务于java平台的项目构件和依赖管理。 本文主要内容…

高频时序数据仓库

天软课堂将在本周四添加新主题--天软超高频行情数据。针对市场上高频行情数据处理业务的相关痛点&#xff0c;直观的在线演示如何通过天软高频数仓及高性能计算能力&#xff0c;将其逐个击破&#xff0c;期待各位老师的参会。

不吹不黑,网络安全工程师年薪30万是真的吗?

近几年&#xff0c;网络安全愈演愈烈&#xff0c;很多人都开始重视网络安全&#xff0c;有些公司为了招聘网安人才主动给出去30万甚至更高的年薪&#xff0c;那么&#xff0c;今天就来说一下网络安全工程师的那些事&#xff0c;看看他们真的是有这么厉害吗&#xff1f;他们又凭…

如何处理前端路由?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【Redis】Redis性能优化:理解与使用Redis Pipeline

原创不易&#xff0c;注重版权。转载请注明原作者和原文链接 文章目录 Pipeline介绍原生批命令(MSET, MGET) VS PipelinePipeline的优缺点一些疑问Pipeline代码实现 当我们谈论Redis数据处理和存储的优化方法时&#xff0c;「 Redis Pipeline」无疑是一个不能忽视的重要技术。…

06-Zookeeper选举Leader源码剖析

上一篇&#xff1a;05-Zookeeper典型使用场景实战 一、为什么要看源码 提升技术功底&#xff1a;学习源码里的优秀设计思想&#xff0c;比如一些疑难问题的解决思路&#xff0c;还有一些优秀的设计模式&#xff0c;整体提升自己的技术功底深度掌握技术框架&#xff1a;源码看多…

文献检索技巧收集

在进行文献阅读之前最重要的工作就是文献检索&#xff0c;筛选出有价值的文献进行阅读。在写作的时候直接plain text&#xff0c;少用标题 文献检索–>文献阅读–>文献整理–>… 一、搜索技巧 加不加引号&#xff0c;在搜索中文时不会有这个烦恼&#xff0c;中文分词时…

Unity实现设计模式——适配器模式

Unity实现设计模式——适配器模式 适配器模式又称为变压器模式、包装模式&#xff08;Wrapper&#xff09; 将一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 在一个在役的项目期望在原有接口的基础…

短视频营销:品牌与年轻消费者的新连接方式

近年短视频平台早已成为了品牌推广的首选热门渠道。通过短小精悍、生动有趣的视频内容&#xff0c;品牌可以与用户进行更直接、更有效的互动&#xff0c;传递品牌形象和价值观。在本文中&#xff0c;我们将介绍一些成功的短视频营销案例&#xff0c;展示创新引领品牌推广的新时…

K8S存储总结持久化存储解决方案(以NFS为例)

目录 K8S存储 一、emptydir 1. emptydir是什么 2. emptydir例子 二、hostpath hostpath 是什么 hostpath 例子 弊端 三、持久化存储 1.Persistent Volume(PV) 2.Persistent Volume Claim(PVC) 3.PV/PVC结合NFS使用实践&#xff08;持久存储&#xff09; 1. NFS服务…

LeetCode-94-二叉树的中序遍历

题目描述&#xff1a; 题目链接&#xff1a;LeetCode-94-二叉树的中序遍历 解题思路&#xff1a;递归&#xff0c;具体可以参考 LeetCode-144-二叉树的前序遍历 代码实现&#xff1a; class Solution {List<Integer> listnew ArrayList<>();public List<Integer…

基于SpringBoot的网上摄影工作室

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 作品分类管理 轮播图管理 摄影作品管理 摄影作品收藏 摄影圈 摄影作品发布 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统…

启动Spring Boot项目

介绍启动运行Spring Boot项目打包的jar 1、使用java -jar命令启动项目 java -jar project.jar 执行效果&#xff1a; 使用java -jar 文件名.jar启动项目&#xff0c;项目在前台运行&#xff0c;项目运行的日志将打印在当前控制台上&#xff0c;若退出当前控制台&#xff0c…

汽车烟雾测漏仪(EP120)

【汽车烟雾测漏仪&#xff08;EP120&#xff09;】 此烟雾测漏仪专为车辆管道&#xff08;油道、气道、冷却管道&#xff09; 的泄露检测而设计。适用于所有轻型 汽车、摩托车、轻卡、游艇等。 【特点】 具有空气模式和烟雾模式。空气模式&#xff0c;无需烟雾&#xff0c;检测…

Springboot 订餐管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 订餐管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

HTML5+CSS3+JS小实例:仿优酷视频轮播图

实例:仿优酷视频轮播图 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=&quo…