前面说过视觉SLAM系统分为前端和后端两个内容,前端也叫做视觉里程计。视觉里程计的主要作用是根据相邻的两张图像的信息粗略的估计出相机运动,给后端一个较好的初始值。视觉里程计的两大算法为:特征点法和直接法。本讲主要是特征点法。

1、特征点法

视觉里程计最核心的问题是如何根据图像来估计相机运动。图像在计算机中是以矩阵的形式存储的,直接从矩阵的角度来估计图像是比较复杂的。一个简便的做法是:在图像中选取一些有代表性的点,这些点在相机视角发生少量变化后仍会保持不变,我们需要在各个图像中找到相同的点,在这些点的基础上来讨论相机位姿估计问题。在SLAM模型中,称这些点为路标,在视觉SLAM中,称路标为图像特征。

特征点是图像中一些特别的地方,我们可以将图像中的角点,边缘,区块都当作图像中有代表性的地方。

我们更容易在两幅图像中指出同一个角点,两幅图像中指出同一个边缘则较为困难,因为边缘附近图像的局部是相似的,两幅图像的同一个区块则是最复杂的。

角点最好辨认,所以一种直观的提取特征方式就是在不同的图像间辨认角点,确认他们的对应关系。角点的提取算法有:Harris角点,Fast角点等。

然而在实际应用中,单纯的提取角点不能够解决问题,图像远处看是一个角点,当相机离近后可能就不是角点了。或者当相机旋转运动时,角点的外观也会发生变化,也不容易辨认是同一个角点。在经过人工设计后有著名的SIFT,SURF,ORB等,特征点有以下性质:

1、可重复性:相同的特征可以在不同的图像中找到

2、可区别性:不同的特征有不同的表达

3、高效率:同一图像中,特征点的数量应远小于像素数量(减少计算量)

4、本地性:特征点仅与小片图像区域有关

特征点由关键点描述子两部分组成。所以当我们说计算ORB的特征点就是计算ORB的关键点和描述子。

关键点是指该特征点在图像里的位置,有些特征点还具有朝向,大小的信息。

描述子通常是一个向量,按照某种人为设计的方式,描述该关键点周围像素的信息。描述子是按照:外观相似的特征应该有相似的描述子这一原则设计的。所以,如果两个特征点的描述子在向量空间中距离相近,就可以认为是同样的特征点。

1、ORB特征

ORB特征由关键点和描述子两部分组成,提取ORB特征主要分为以下两个步骤:

1、FAST角点提取:找出图像中的角点。ORB相比原版的FAST,ORB中计算了特征点的主方向,为后续的BRIEF描述子增加了旋转不变特性。

2、BRIEF描述子:对前一步提取的特征点的周围图像区域进行描述。ORB在对BRIEF进行了一些改进,主要是指在BRIEF中使用了先前计算的方向信息。

FAST关键点

FAST是一种角点,主要检测局部像素灰度变化明显的地方,速度快。思想为:如果一个像素与领域的像素差别较大(过亮或过暗),那么可能是角点。FAST只需要比较像素亮度的大小即可:

在FAST-12算法中,为了高效,增加了一项预测试操作。对于每个像素,直接检测邻域圆上的1,5,9,13像素,当这四个像素中有三个同时大于亮度±阈值时候,才可能是一个角点,这样大大加快了检测速度。

FAST特征点仅仅是比较像素间亮度的差异,所以速度很快,但是FAST具备尺度问题,由于它只取半径为3的圆,远处看是角点的地方,在近处也许就不是角点。针对这样的问题,ORB增加了尺度和旋转的描述。尺度不变性由构建图像金字塔解决,旋转问题由灰度质心法解决。

金字塔底层是原始图像,每往上一层,就对图像进行一定倍率的缩放,这样就有了不同分辨率的图像。较小的图像看作是远处看过来的场景。我们可以匹配不同层上的图像,从而实现尺度不变性。假如相机在倒退,我们应该在上一层或者下一层找到匹配。

旋转方面,计算特征点附近的图像灰度质心,质心是指以图像块灰度值作为权重的中心,步骤为:

在一个小的图像块B中,定义图像块的矩为:

2、通过矩来寻找图像块的质心:

3、连接图像块的几何中心O和质心C,得到方向向量OC,特征点的方向定义为:

通过图像金字塔和计算图像灰度质心,FAST角点有了尺度和旋转的描述,增强了鲁棒性。

BRIEF描述子

BRIEF是一种二进制描述子,描述向量由许多0,1组成,这里的0,1编码了关键点附近两个随机像素(p和q)的大小关系:如果p大于q,取1,反之取0。取128个这样的p,q,则最后得到128维由0,1组成的向量。由BRIEF是由二进制组成,存储起来也很方便,适用于实时图像匹配。但是BRIEF不具备旋转不变性,使得图像在旋转时容易丢失,但是ORB的FAST特征点在提取的时候解决了旋转问题,所以ORB方法在SLAM中很受欢迎。

2、特征匹配

特征匹配是视觉SLAM中极为重要的一步,特征匹配确立当前看到的路标与之前看到的路标之间的对应关系。通过对图像与图像或者图像与地图之间的描述子进行准确匹配,可以为后续的优化减轻负担。

考虑两个时刻的图像,在图像中提取到特征点,在图像

中提取到特征点 。如何寻找这两个元素的对应关系?最简单的是暴力匹配。即对每一个特征点与所有的测量描述子的距离。对于BRIEF描述子,往往使用汉明距离作为度量——两个二进制串之间的汉明距离,指的是其不同位数的个数。如果特征点数量很大,暴力匹配的方法的运算量会很大。快速近似最近邻算法更适合与匹配点数量极多的情况,该算法集成于OpenCV,可以直接使用。

视觉SLAM14讲——视觉里程计1(特征点法)相关推荐

  1. 视觉里程计:特征点法之ORB特征点

    VO的核心问题在于根据图像信息估计相机的运动轨迹 .通常从图像中选取具有代表性的点,并当相机运动后,从不同的图像中找到对应的相同点,从而确定相机位姿估计问题.在经典SLAM模型中,称这种点为路标,而在 ...

  2. LVI-SAM:使用SAM的激光-视觉-惯导紧耦合里程计

    转载自:https://mp.weixin.qq.com/s/MlN-0BD9rAdJwsVco7TRlg LVI-SAM:使用SAM的激光-视觉-惯导紧耦合里程计 原创 泡泡机器人 泡泡机器人SLA ...

  3. 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程

    一:前言介绍 LVI-SAM是Tixiao Shan的最新力作,Tixiao Shan是Lego-loam(基于激光雷达里程计的SLAM框架)和Lio-sam(基于惯性-雷达紧耦合的SLAM框架)的作 ...

  4. 视觉slam14讲学习(一)之se3上的定位表示:轨迹显示与轨迹误差

    文章目录 1.读出trajectory.txt中的轨迹信息 2. 用pangolin画出轨迹poses 3. 利用Eigen进行欧拉角和四元数的转化 4. 画出两条轨迹,对定位精度进行分析 5.结果显 ...

  5. 视觉slam14讲ch5 opencv安装 ubuntu20.04

    视觉slam14讲ch5 opencv安装 ubuntu20.04 最近在学习视觉slam14讲第五章时,由于opencv需要较多依赖项,安装过程经历了一些曲折,在此进行记录. 1.下载opencv工 ...

  6. 视觉里程计——基于特征点的位姿估计

    slam系统分为前端和后端,其中前端也叫视觉里程计,视觉里程计根据相邻图像的信息进行粗略的位姿估计,为后端提供较好的初始值,发展至今,视觉里程计的算法主要分为两大类:特征点法与直接法:其中特征点法具有 ...

  7. 视觉slam14讲之相机与框架

    一. 视觉相机 视觉slam使用的相机,以一定速率拍摄周围的环境,形成一个连续的视频流,用以采集数据.使用到的相机分为:单目相机(Monocular),双目相机(Stereo)和深度相机(RGB-D) ...

  8. 视觉SLAM14讲笔记04:ch7对极几何(epipolar geometry)

    2D-2D:对极几何(epipolar geometry) 对极约束 现在,假设我们从两张图像中,得到了一对配对好的特征点,像图7-7里显示的那样.如果我们有若干对这样的匹配点,就可以通过这些二维图像 ...

  9. 【视觉SLAM14讲】ch3课后题答案

    1.验证旋转矩阵是正交矩阵 感觉下面这篇博客写的不错 http://www.cnblogs.com/caster99/p/4703033.html 总结一下:旋转矩阵是一个完美的矩阵--正交矩阵.①行 ...

最新文章

  1. Keil C语言数据类型,KeilC的指针类型
  2. linux下Makefile中包含有shared library动态链接库文件时候的简单例子
  3. SQL on Linux Run on Docker
  4. 偏心率e用于描述某一轨道与圆轨道的区别
  5. C#如何在钉钉开发平台中创建部门
  6. NIO : selector、channel、buffer的实例
  7. 一个计算周次和本周时间范围的代码(c#)
  8. Linux性能测试工具
  9. Python批量下载中国大学MOOC课件
  10. vivo 计算机怎么使用方法,vivo怎么能连接到电脑
  11. Eviews10下载及安装
  12. 面向车路协同的路侧感知仿真系统
  13. Python--绘制点
  14. udp buffer 和reassemble buffer
  15. R语言使用lm函数构建线性回归模型、使用car包中的oulierTest函数识别样本数据中可能的离群值( identify possible outliers)
  16. 网络营销策略——4P
  17. 阿里云客服机器人人工服务配置文档
  18. gis平移至所选要素_ArcGIS中如何实现矢量数据平移
  19. ShuffleNetv2论文详解
  20. 数据库操作问题总结(持续更新...)

热门文章

  1. Seek Tiger创世节点的推出,对于Web3舞台的重要性
  2. 关于JObject的用法,以及实现动态生成实体对象、动态创建一些Josn组合
  3. 鸿蒙系统首批机型,首批支持鸿蒙系统的手机有哪些-华为鸿蒙系统支持机型全一览...
  4. ARM指令中如何判断一个立即数是有效立即数
  5. python搭建虚拟环境完整步骤
  6. netcore 高并发秒杀项目实战3
  7. std::string::npos
  8. c语言编写http服务器
  9. 在线商城 php jsp,基于ssh/jsp/java/asp.net/php的鲜果商城管理系统
  10. git 命令删除远程分支和本地分支