视觉SLAM深度解读

视觉SLAM深度解读点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达本文转自 新机器视觉近年来 SLAM 技术取得了惊人的发展 领先一步的激光 SLAM 已成熟的应用于

点击上方“小白学视觉”,选择加”星标“或“置顶

重磅干货,第一时间送达 

本文转自 | 新机器视觉

视觉SLAM是什么?

视觉SLAM主要是基于相机来完成环境的感知工作,相对而言,相机成本较低,容易放到商品硬件上,且图像信息丰富,因此视觉SLAM也备受关注。

目前,视觉SLAM可分为单目、双目(多目)、RGBD这三类,另还有鱼眼、全景等特殊相机,但目前在研究和产品中还属于少数,此外,结合惯性测量器件(Inertial Measurement Unit,IMU)的视觉SLAM也是现在研究热点之一。从实现难度上来说,大致将这三类方法排序为:单目视觉>双目视觉>RGBD。

视觉SLAM深度解读

单目相机SLAM简称MonoSLAM,仅用一支摄像头就能完成SLAM。最大的优点是传感器简单且成本低廉,但同时也有个大问题,就是不能确切的得到深度。

一方面是由于绝对深度未知,单目SLAM不能得到机器人运动轨迹及地图的真实大小,如果把轨迹和房间同时放大两倍,单目看到的像是一样的,因此,单目SLAM只能估计一个相对深度。另一方面,单目相机无法依靠一张图像获得图像中物体离自己的相对距离。为了估计这个相对深度,单目SLAM要靠运动中的三角测量,来求解相机运动并估计像素的空间位置。即是说,它的轨迹和地图,只有在相机运动之后才能收敛,如果相机不进行运动时,就无法得知像素的位置。同时,相机运动还不能是纯粹的旋转,这就给单目SLAM的应用带来了一些麻烦。

而双目相机与单目不同的是,立体视觉既可以在运动时估计深度,亦可在静止时估计,消除了单目视觉的许多麻烦。不过,双目或多目相机配置与标定均较为复杂,其深度量程也随双目的基线与分辨率限制。通过双目图像计算像素距离,是一件非常消耗计算量的事情,现在多用FPGA来完成。

RGBD相机是2010年左右开始兴起的一种相机,它最大的特点是可以通过红外结构光或TOF原理,直接测出图像中各像素离相机的距离。因此,它比传统相机能够提供更丰富的信息,也不必像单目或双目那样费时费力地计算深度。

视觉SLAM框架解读

视觉SLAM深度解读

1.传感器数据

在视觉SLAM中主要为相机图像信息的读取和预处理。如果在机器人中,还可能有码盘,惯性传感器等信息的读取和同步。

2.视觉里程计

视觉里程计的主要任务是估算相邻图像间相机运动以及局部地图的样子,最简单的是两张图像之间的运动关系。计算机是如何通过图像确定相机的运动的。在图像上,我们只能看到一个个的像素,知道他们是某些空间点在相机的成像平面投影的结果。所以必须先了解相机跟空间点的几何关系。

Vo(又称为前端)能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构,称它为里程计。被称为里程计是因为它只计算相邻时刻的运动,而和再往前的过去信息没有关联。相邻时刻运动串联起来,就构成了机器人的运动轨迹,从而解决了定位问题。另一方面,根据每一时刻的相机位置,计算出各像素对应的空间点的位置,就得到了地图。

3.后端优化

后端优化主要是处理slam过程中噪声的问题。任何传感器都有噪声,所以除了要处理“如何从图像中估计出相机运动”,还要关心这个估计带有多大的噪声。

前端给后端提供待优化的数据,以及这些数据的初始值,而后端负责整体的优化过程,它往往面对的只有数据,不必关系这些数据来自哪里。在视觉slam中,前端和计算接视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波和非线性优化算法。

4.回环检测

回环检测也可以称为闭环检测,是指机器人识别曾到达场景的能力。如果检测成功,可以显著地减小累积误差。回环检测实质上是一种检测观测数据相似性的算法。对于视觉SLAM,多数系统采用目前较为成熟的词袋模型(Bag-of-Words, BoW)。词袋模型把图像中的视觉特征(SIFT, SURF等)聚类,然后建立词典,进而寻找每个图中含有哪些“单词”(word)。也有研究者使用传统模式识别的方法,把回环检测建构成一个分类问题,训练分类器进行分类。

5.建图

建图主要是根据估计的轨迹建立与任务要求对应的地图,在机器人学中,地图的表示主要有栅格地图、直接表征法、拓扑地图以及特征点地图这4种。而特征点地图是用有关的几何特征(如点、直线、面)表示环境,常见于视觉SLAM技术中。这种地图一般通过如GPS、UWB以及摄像头配合稀疏方式的vSLAM算法产生,优点是相对数据存储量和运算量比较小,多见于最早的SLAM算法中。

视觉SLAM工作原理

大多数视觉SLAM系统的工作方式是通过连续的相机帧,跟踪设置关键点,以三角算法定位其3D位置,同时使用此信息来逼近推测相机自己的姿态。简单来说,这些系统的目标是绘制与自身位置相关的环境地图。这个地图可以用于机器人系统在该环境中导航作用。与其他形式的SLAM技术不同,只需一个3D视觉摄像头,就可以做到这一点。

通过跟踪摄像头视频帧中足够数量的关键点,可以快速了解传感器的方向和周围物理环境的结构。所有视觉SLAM系统都在不断的工作,以使重新投影误差(Reprojection Error)或投影点与实际点之间的差异最小化,通常是通过一种称为Bundle Adjustment(BA)的算法解决方案。vSLAM系统需要实时操作,这涉及到大量的运算,因此位置数据和映射数据经常分别进行Bundle Adjustment,但同时进行,便于在最终合并之前加快处理速度。

视觉SLAM与激光SLAM有什么区别?

在业内,视觉SLAM与激光SLAM谁更胜一筹,谁将成为未来主流趋势这一问题,成为大家关注的热点,不同的人也有不同的看法及见解,以下将从成本、应用场景、地图精度、易用性几个方面来进行详细阐述。

1.成本

从成本上来说,激光雷达普遍价格较高,但目前国内也有低成本的激光雷达解决方案,而VSLAM主要是通过摄像头来采集数据信息,跟激光雷达一对比,摄像头的成本显然要低很多。但激光雷达能更高精度的测出障碍点的角度和距离,方便定位导航。

2.应用场景

从应用场景来说,VSLAM的应用场景要丰富很多。VSLAM在室内外环境下均能开展工作,但是对光的依赖程度高,在暗处或者一些无纹理区域是无法进行工作的。而激光SLAM目前主要被应用在室内,用来进行地图构建和导航工作。

3.地图精度

激光SLAM在构建地图的时候,精度较高,思岚科技的RPLIDAR系列构建的地图精度可达到2cm左右;VSLAM,比如常见的,大家也用的非常多的深度摄像机Kinect,(测距范围在3-12m之间),地图构建精度约3cm;所以激光SLAM构建的地图精度一般来说比VSLAM高,且能直接用于定位导航。

视觉SLAM深度解读

视觉SLAM的地图建立

4.易用性

激光SLAM和基于深度相机的视觉SLAM均是通过直接获取环境中的点云数据,根据生成的点云数据,测算哪里有障碍物以及障碍物的距离。但是基于单目、双目、鱼眼摄像机的视觉SLAM方案,则不能直接获得环境中的点云,而是形成灰色或彩色图像,需要通过不断移动自身的位置,通过提取、匹配特征点,利用三角测距的方法测算出障碍物的距离。

总体来说,激光SLAM相对更为成熟,也是目前最为可靠的定位导航方案,而视觉SLAM仍是今后研究的一个主流方向,但未来,两者融合是必然趋势。(本文来源:SLAMTEC)

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

视觉SLAM深度解读

视觉SLAM深度解读

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233205.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月7日 下午3:01
下一篇 2025年8月7日 下午3:22


相关推荐

  • ipvsadm 的基本使用

    ipvsadm 的基本使用要使用 LVS 的能力 只需要安装一个 LVS 的管理工具 ipvsadmLVS 的结构主要分为两个部分 工作在内核空间的 IPVS 模块 LVS 的能力实际上都是由 nbsp IPVS 模块实现的 工作在用户空间的 ipvsadm 模块 其作用就是向用户提供一个命令接口 用于将配置的虚拟服务器 真实服务器等传给 IPVS 模块 nbsp ipvsadm 工具的使用 nbsp nbsp nbsp ipvsadm 命令分为 nbsp 命令

    2025年10月20日
    3
  • 域名与优化之间的联系[通俗易懂]

    域名与优化之间的联系[通俗易懂]什么域名有利于网站优化?域名与网站优化有什么的关系?域名与网站优化有关系吗?很多人不知道域名的好坏其实与网站优化也是有着联系的,什么样的域名对于网站优化有好处呢?今天这篇文章外链代发SEO就来给各位介绍一下关于域名与网站优化的关系。可能有的新站长对于域名与网站优化之间的关系不是很清楚,其实域名的挑选对网站企业的发展有着重要的影响和含义,一个好的域名不只使网民简单记,并且对企业的品牌宣扬有着非常重…

    2022年5月17日
    61
  • Circos入门教程

    Circos入门教程1Circos 简介 Circos 是一个非常酷炫的基因组数据可视化软件 能够将基因组数据映射到环形的基因组坐标上 用相互嵌套的环道来展示基因组数据 还可以通过连接线来呈现基因组区块之间的关系 Circos 的开发者是一位加拿大的生物信息学家 MartinKrzywi 值得一提的是 他还是一位专业的摄影师 于是 科学和艺术的交融 催生了 Circos 这款强大的可视化软件 果真不懂艺术的码农不是好的生物学家 自从 Circos 诞生以后 圈图就成了生物信息可视化的明星图形 不时见诸顶尖杂志的文章 尽管有意见

    2026年3月17日
    1
  • windows驱动程序开发(普及)

    windows驱动程序开发(普及)1 用户态驱动驱动程序和核心态驱动程序 下图描绘出了操作系统驱动程序的相关组成部分的概貌 500 this width 500 border 0 src http blogger org cn blog uploadfile 46322 GIF Windows 驱动程序既可以运行在用户态也可以运行在核心模态 l nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 用户态的

    2026年3月26日
    1
  • original_keras_version = f.attrs[‘keras_version‘].decode(‘utf8‘)

    original_keras_version = f.attrs[‘keras_version‘].decode(‘utf8‘)File”/home/liqiang/anaconda3/envs/tensorflow1.8/lib/python3.6/site-packages/keras/engine/saving.py”,line1004,inload_weights_from_hdf5_grouporiginal_keras_version=f.attrs[‘keras_version’].decode(‘utf8’)AttributeError:’str’objecthasnoatt…

    2022年10月18日
    6
  • Adam优化算法「建议收藏」

    Adam优化算法「建议收藏」深度学习常常需要大量的时间和计算机资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练加速模型的学习,但需要的计算资源并没有丝毫减少。而唯有需要资源更少、令模型收敛更快的

    2022年8月1日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号