SLAM面试笔记(3) - 视觉SLAM

news2025/1/18 11:06:11

目录

1 紧耦合、松耦合的区别

(1)紧耦合和松耦合的区别

(2)紧耦合和松耦合的分类

(3)为什么要使用紧耦合

2 SIFT和SUFT的区别

3 视差与深度的关系

4 闭环检测常用方法

5 描述PnP算法

6 梯度下降法、牛顿法、高斯-牛顿法的区别

7 什么是极线约束

8 单目视觉SLAM中尺寸漂移是怎么产生的

9 描述特征点法和直接法的优缺点

10 边缘检测算子有哪些?


1 紧耦合、松耦合的区别

(1)紧耦合和松耦合的区别

紧耦合:是把图像的特征加到特征向量中去,这样做优点是可以免去中间状态的累计误差,提高精度,缺点是系统状态向量的维数会非常高,需要很高的计算量;

松耦合:是把VO处理后获得的变换矩阵和IMU进行融合,这样做优点是计算量小但是会带来累计误差。

在这里插入图片描述

(2)紧耦合和松耦合的分类

vio filter-basedoptimization-based
紧耦合MSCKF,ROVIOOKVIS,VINS
松耦合ssf,msfInertial Aided Dense & Semi-Dense Methods for Robust Direct Visual Odometry

(3)为什么要使用紧耦合

  • 单纯凭(单目)视觉或IMU都不具备估计Pose的能力:视觉存在尺度不确定性、IMU存在零偏导致漂移;
  • 松耦合中,视觉内部BA没有IMU的信息,在整体层面来看不是最优的。
  • 紧耦合可以一次性建模所有的运动和测量信息,更容易达到最优。

2 SIFT和SUFT的区别

  • 构建图像金字塔:SIFT特征利用不同尺寸的图像与高斯差分滤波器卷积;SURF特征利用原图片与不同尺寸的方框滤波器卷积。
  • 特征描述子:SIFT特征有4×4×8=128维描述子,SURF特征有4×4×4=64维描述子。
  • 特征点检测方法:SIFT特征先进行非极大抑制,再去除低对比度的点,再通过Hessian矩阵去除边缘响应过大的点;SURF特征先利用Hessian矩阵确定候选点,然后进行非极大抑制。
  • 特征点主方向:SIFT特征在正方形区域内统计梯度幅值的直方图,直方图最大值对应主方向,可以有多个主方向;SURF特征在圆形区域内计算各个扇形范围内x、y方向的haar小波响应,模最大的扇形方向作为主方向。

3 视差与深度的关系

在相机完成校正后,则有 d / b = f / z,其中 d=u_{L}-u_{R} 表示左右图的横坐标之差,称为视差,b表示基线,f是焦距,z是深度。这个公式其实很好记,在深度和焦距确定的情况下,基线越大,视差也会越大。

4 闭环检测常用方法

ORB SLAM中采用的是词袋模型进行闭环检测筛选出候选帧,再通过求解Sim3判断最合适的关键帧。
LSD SLAM中的闭环检测主要是根据视差、关键帧连接关系,找出候选帧,然后对每个候选帧和测试的关键帧之间进行双向Sim3跟踪,如果求解出的两个李代数满足马氏距离在一定范围内,则认为是闭环成功。

5 描述PnP算法

已知空间点世界坐标系坐标和其像素投影,公式如下:

目前一共有两种解法,直接线性变换方法(一对点能够构造两个线性约束,因此12个自由度一共需要6对匹配点),另外一种就是非线性优化的方法,假设空间坐标点准确,根据最小重投影误差优化相机位姿。
目前有两个主要场景,其一是求解相机相对于某2维图像/3维物体的位姿;其二就是SLAM算法中估计相机位姿时通常需要PnP给出相机初始位姿。
在场景1中,我们通常输入的是物体在世界坐标系下的3D点以及这些3D点在图像上投影的2D点,因此求得的是相机坐标系相对于世界坐标系(Twc)的位姿
在场景2中,通常输入的是上一帧中的3D点(在上一帧的相机坐标系下表示的点)和这些3D点在当前帧中的投影得到的2D点,所以它求得的是当前帧相对于上一帧的位姿变换
 

6 梯度下降法、牛顿法、高斯-牛顿法的区别

在BA优化、PnP、直接法里面都有接触到非线性优化问题,上面几种方法都是针对对非线性优化问题提出的方法,将非线性最优化问题作如下展开,就可以获得梯度下降法和牛顿法

梯度下降法是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。因此指保留一阶梯度信息。缺点是过于贪心,容易走出锯齿路线。

在这里插入图片描述

牛顿法是一个二阶最优化算法,基本思想是利用迭代点处的一阶导数(梯度)和二阶导数(Hessen矩阵)对目标函数进行二次函数近似。因此保留二阶梯度信息。缺点是需要计算H矩阵,计算量太大。

而把非线性问题,先进行一阶展开,然后再作平方处理就可以得到高斯-牛顿法和列文博格方法

高斯-牛顿法对上式展开并对Δ x进行求导即可得高斯牛顿方程,其实其就是使用对牛顿法的H矩阵进行替换,但是有可能为奇异矩阵或变态,Δ x也会造成结果不稳定,因此稳定性差。

列文博格法就是在高斯-牛顿法的基础上对Δ x添加一个信赖区域,保证其只在展开点附近有效,即其优化问题变为带有不等式约束的优化问题,利用Lagrange乘子求解。

7 什么是极线约束

极线约束描述的是当同一个点投影到两个不同视角的图像上时,特征点、相机光心在投影模型下形成的约束,所谓极线约束就是说同一个点在两幅图像上的映射,已知左图映射点p1,那么右图映射点p2一定在相对于p1的极线上,这样可以减少待匹配的点数量。
如图所示, 两个相机光心连线为O1O2被称为基线,基线与像平面image1和image2的交点e1、e2被称为基点;平面PO1O2被称为极平面,极平面与像平面image1和image2的交线e1P1、e2P2被称为极线。
如果世界点P(未知)在image1上的特征点为P1(已知),那么世界点P必定在P1O1O2所在平面上,即世界点P在image2上的像点必然在平面P1O1O2与像平面image2的交线e2P2上。这就是极线约束。

在这里插入图片描述

8 单目视觉SLAM中尺寸漂移是怎么产生的

用单目估计出来的位移,与真实世界相差一个比例,叫做尺度。这个比例在单目初始化时通过三角化确定,但单纯靠视觉无法确定这个比例到底有多大。由于SLAM过程中噪声的影响,这个比例还不是固定不变的。修正方式是通过回环检测计算Sim3进行修正。

9 描述特征点法和直接法的优缺点

特征点法

  • 优点:1. 没有直接法的强假设,更加精确;2. 相较与直接法,可以在更快的运动下工作,鲁棒性好
  • 缺点:1. 特征提取和特征匹配过程耗时长;2. 特征点少的场景中无法使用;3.只能构建稀疏地图

直接法

  • 优点:1.省去了特征提取和特征匹配的时间,速度较快;2. 可以用在特征缺失的场合;3. 可以构建半稠密/稠密地图
  • 缺点:1. 易受光照和模糊影响;2.运动必须慢;3.非凸性,易陷入局部极小解

10 边缘检测算子有哪些?

边缘检测一般分为三步,分别是滤波、增强、检测。基本原理都是用高斯滤波器进行去噪,之后在用卷积内核寻找像素梯度。常用有三种算法:canny算子,sobel算子,laplacian算子
canny算子:一种完善的边缘检测算法,抗噪能力强,用高斯滤波平滑图像,用一阶偏导的有限差分计算梯度的幅值和方向,对梯度幅值进行非极大值抑制,采用双阈值检测和连接边缘。
sobel算子:一阶导数算子,引入局部平均运算,对噪声具有平滑作用,抗噪声能力强,计算量较大,但定位精度不高,得到的边缘比较粗,适用于精度要求不高的场合。
laplacian算子:二阶微分算子,具有旋转不变性,容易受噪声影响,不能检测边缘的方向,一般不直接用于检测边缘,而是判断明暗变化。

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

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

相关文章

SQL基础

目录 1.库操作 2.表操作 3.表操作--修改 4.表操作 --删表 5.添加数据 管理数据 查询表中数据(重点) 判空条件 1.模糊条件查询 2.聚合查询(函数) 3.排序查询 4.分页查询 5.分组查询(配合聚合函数用于统计&a…

C++模拟实现读写锁

文章目录一、读者写者问题二、读写锁1.读写锁的概念2.读写锁的设计(1)成员变量(2)构造函数和析构函数(3)readLock函数(4)readUnlock函数(5)writeLock函数(6)writeUnlock函数3.RWLock类代码三、测试读写锁一、读者写者问题 在编写多线程的时候,有一种情况是非常常见…

为什么黑客不黑/攻击赌博网站?如何入门黑客?

攻击了,只是你不知道而已! 同样,对方也不会通知你,告诉你他黑了赌博网站。 攻击赌博网站的不一定是正义的黑客,也可能是因赌博输钱而误入歧途的法外狂徒。之前看过一个警方破获的真实案件:28岁小伙因赌博…

Linux 操作系统原理作业 - 行人与机动车问题

大三上学期操作系统原理这门课中,老师给了一道作业《行人与机动车问题》; 即Linux多线程下处理行人与机动车谁优先的问题,需要用到多线程和互斥量; 行人 - 机动 车问题 假设有一个路口,有很多行人和机动车需要通过&a…

1673_MIT 6.828 Homework xv6 lazy page allocation要求翻译

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 在计划表中看到了这样一份作业,做一个简单的翻译整理。原来的页面:Homework: xv6 lazy page allocation (mit.edu) 家庭作业:x…

代码版本M、RC、GA、Release等标识的区别

引言 最近听说spring framework有了重大版本调整,出了6.0的GA版本了 那GA是啥意思呢? 看了下spring 官网和代码仓库,除了GA,还有M、RC、Release等 Spring FrameworkLevel up your Java code and explore what Spring can do f…

[Java Web]element | 一个由饿了么公司开发的前端框架,让你快速构建现代化、美观的 Web 应用程序。

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:Java Web ⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正&a…

【mybatis】mybatis的工作原理

目录一、工作流程二、说明2.1 构建SqlSessionFactory2.2 SqlSession的获取2.3 SqlSession执行语句三、源码结构3.1 接口层3.2 核心处理3.3 核心处理层四、代码示例4.1 通过inputStream构建SqlSessionFactory4.2 通过configuration构建SqlSessionFactory4.3 mybatis-config.xml示…

groovy环境搭建

什么是DSL? 领域特定语言DSL(全称:domain specific language) 常见的DSL语言有:UML、HTML、SQL、XML、Groovy 作用:解决某一特定领域的问题 什么是groovy? groovy是一种基于JVM的敏捷开发语言。 结合了Python、Ruby和…

Vite4+Vuejs3项目初步搭建,并部署多个vue项目到nginx

前提条件 1、熟悉命令行 2、已安装 16.0 或更高版本的 Node.js 参照vuejs官网的步骤,创建一个vue前端项目 当前vuejs的版本:3.2.47 npm init vuelatestVue.js - The Progressive JavaScript Framework√ Project name: ... vuejs3-project√ Add Type…

BitDock桌面美化工具 一直在后台偷偷上传东西,具体上传什么东西不知,一天耗费我几十个G的流量

通过流量防火墙监控发现bitdock一直在上传东西,目前截止发现已上传了40G的流量 ――――――――――――――――――――――― 程序名称:SystemAudioDetection.exe 程序说明: 路径:D:\BitDock\AudioEngine\SystemAudioDetecti…

【C 字符串】02 字符串函数(命令行参数)

Navigator一、strlen()函数—统计长度二、strcat()函数—拼接三、strncat()函数—strcat()的升级四、strcmp()和strncmp()—比较五、strcpy()和strncpy()—拷贝六、sprintf()函数—合并多个字符串七、其他可能用到的字符串函数八、ctype.h中的字符函数九、把字符串转换为数字十…

在线文章生成工具-原创文章生成工具

在线文章生成器 在线文章生成器是指一种可以在线使用的自动化创造文章的工具。它可以使用自然语言处理(NLP)技术和人工智能算法提供需要的信息,基于标题、关键字,句子关联性等元素自动创造文章内容,涵盖各种类型&…

双端队列 码蹄集

题目来源:码蹄集 题目描述: 题意分析: 这道题目需要使用到双端队列的数据结构。我们可以借助 STL 中的 deque 来实现这个数据结构。具体来说,我们可以通过 deque 的 push_front 和 push_back 操作在队列的头部和尾部添加元素&am…

地球系统模式(CESM)实践技术应用

目前通用地球系统模式(Community Earth System Model,CESM)在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。于2010年07月推出以来,一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、海洋、海冰、陆冰…

图形库EasyX的学习:)

最近学了一点做小游戏的基本知识,来总结一下,巩固一下记忆: 在这个基础上初学者要先明白vs的下载及基本使用还有图形库的下载及安装; 然后才是正题: 图形库里包含c语法,所以要用c文件,但是除…

Ubantu docker学习笔记(六)容器数据卷——补充实验

文章目录一、volume container二、 data-packed volume container三、利用数据卷驱动共享数据注意要在同一个网络配置下!3.1服务端3.2客户端一、volume container 这里我觉得很好理解,volume container是专门为其他容器提供volume的容器。其实也就相当于…

深圳海运到墨西哥需要多长时间

目前,墨西哥的跨境电商商业正在高速发展,并且具有可观的红利。因此,从中国到墨西哥的运输需求很大,特别是海运,是很多跨境电商卖家主要选择的运输方式。 一般而言,中国到墨西哥的跨境卖家们普遍关注海运所需…

“终于我从字节离职了...“一个年薪40W的测试工程师的自白...

”我递上了我的辞职信,不是因为公司给的不多,也不是因为公司待我不好,但是我觉得,我每天看中我憔悴的面容,每天晚上拖着疲惫的身体躺在床上,我都不知道人生的意义,是赚钱吗?是为了更…

【云原生进阶之容器】第五章容器运行时5.8--容器热迁移

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述