视觉SLAM十四讲学习笔记--第七讲视觉里程计学习笔记总结(1)

专栏系列文章如下:

视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第二讲-开发环境搭建_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和Eigen库_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第三讲-旋转向量、欧拉角、四元数_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第三讲-相似、仿射、射影变换和eigen程序、可视化演示_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记---前三讲学习笔记总结之SLAM的作用、变换和位姿表示_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模型_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第四讲-Sophus实践、相似变换群与李代数_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第五讲-相机模型_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第五讲-图像和实践_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第六讲-非线性优化的实践-高斯牛顿法和曲线拟合_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第六讲学习笔记总结(1)---非线性优化原理_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第六讲学习笔记总结(2)---非线性优化应用_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点发和特征提取和匹配实践_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵

视觉SLAM十四讲学习笔记-第七讲-视觉里程计-单应矩阵和实践

​​​​​​视觉SLAM十四讲学习笔记-第七讲-视觉里程计-三角测量和实践_goldqiu的博客-CSDN博客

​​​​​​视觉SLAM十四讲学习笔记-第七讲-视觉里程计-PnP和实践_goldqiu的博客-CSDN博客

视觉SLAM十四讲学习笔记-第七讲-视觉里程计-ICP和实践_goldqiu的博客-CSDN博客

视觉SLAM前端视觉里程计(VO)的特征点法:

作用:根据相邻图像的信息估计出粗略的相机运动,给后端提供较好的初始值

两视图几何(Two-view geometry):提取、匹配图像特征点,然后估计两帧之间的相机运动和场景结构,从而实现一个两帧间视觉里程计

优势:稳定,对光照、动态物体不敏感

特征点---路标(Landmark)---图像特征(Feature)

作用:直接从矩阵层面考虑运动估计非常困难,所以要简化运动估计问题。

特点:图像中选取的比较有代表性的点,在相机视角发生少量变化后会保持不变,在相机运动之后保持稳定,能在各个图像中找到相同的点。

定义:特征是图像信息的另一种数字表达形式。

特征点的“进化”:

首先考虑灰度值不同的图像块

但灰度值受光照、形变、物体材质的影响严重,在不同图像间变化非常大,不够稳定。理想的情况是,当场景和相机视角发生少量改变时,算法还能从图像中判断哪些地方是同一个点。

于是考虑图像中的角点、边缘

角点相比于像素区块而言更加“特别”,在不同图像之间的辨识度更强。所以角点就是所谓的特征。

角点的提取算法: Harris 角点、FAST 角点 、GFTT 角点等等。

然而在大多数应用中,单纯的角点依然不能满足很多需求。考虑尺度如,从远处看上去是角点的地方,当相机走近之后,可能就不显示为角点了。考虑旋转如,当旋转相机时,角点的外观会发生变化,也就不容易辨认出那是同一个角点。为此,就提出了许多更加稳定的局部图像特征,如SIFT 、SURF 、ORB ,等等。

于是有了人工设计的特征点,其性质:

  1. 可重复性(Repeatability):相同的特征可以在不同的图像中找到。
  2. 可区别性(Distinctiveness):不同的特征有不同的表达。
  3. 高效率(Efficiency):同一图像中,特征点的数量应远小于像素的数量。
  4. 本地性(Locality):特征仅与一小片图像区域相关。

其定义:由关键点(Key-point)和描述子(Descriptor)两部分组成。

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

描述子通常是一个向量,按照某种人为设计的方式,描述了该关键点周围像素的信息,是按照“外观相似的特征应该有相似的描述子”的原则设计的。因此只要两个特征点的描述子在向量空间上的距离相近,就可以认为它们是同样的特征点。

典型特征

SIFT(尺度不变特征变换,Scale-Invariant FeatureTransform):充分考虑了在图像变换过程中出现的光照、尺度、旋转等变化,但随之而来的是极大的计算量。

FAST关键点:考虑适当降低精度和鲁棒性,以提升计算的速度,属于计算特别快的一种特征点(没有描述子);

ORB(Oriented FASTand Rotated BRIEF)特征:改进了 FAST 检测子不具有方向性的问题,并采用速度极快的二进制描述子BRIEF,使整个图像特征提取的环节大大加速。ORB在保持了特征子具有旋转、尺度不变性的同时,速度方面提升明显,对于实时性要求很高的SLAM来说是一个很好的选择。在目前的 SLAM方案中,ORB 是质量与性能之间较好的折中。

特征点进化表格:

ORB 特征:

关键点称为“Oriented FAST”,是一种改进的FAST角点。

描述子称为BRIEF(Binary Robust Independent Elementary Feature)。

提取 ORB 特征的步骤:

  1. FAST 角点提取:找出图像中的“角点”。相较于原版的 FAST,ORB中计算了特征点的主方向,为后续的BRIEF描述子增加了旋转不变特性。
  2. BRIEF 描述子:对前一步提取出特征点的周围图像区域进行描述。ORB对BRIEF进行了一些改进,主要是指在 BRIEF中使用了先前计算的方向信息。

原始FAST关键点: 主要检测局部像素灰度变化明显的地方,以速度快著称。它的思想是:如果一个像素与邻域的像素差别较大(过亮或过暗),那么它更可能是角点。

检测过程如下:

  1. 在图像中选取像素p,假设它的亮度为Ip。
  2. 设置一个阈值T (比如,Ip 的20%)。
  3. 以像素p为中心,选取半径为3的圆上的16个像素点。
  4. 假如选取的圆上有连续的N个点的亮度大于 Ip + T 或小于 Ip − T,那么像素p可以被认为是特征点(N通常取12,即为 FAST-12。其他常用的 N 取值为 9 和 11,它们分别被称为FAST-9 和 FAST-11)。
  5. 循环以上四步,对每一个像素执行相同的操作。

更高效的FAST-12 算法:

  1. 添加预测试操作,以快速地排除绝大多数不是角点的像素。具体操作为,对于每个像素,直接检测邻域圆上的第 1, 5, 9, 13 个像素的亮度。只有当这 4个像素中有 3 个同时大于 Ip + T 或小于 Ip − T 时,当前像素才有可能是一个角点,否则应该直接排除。
  2. 原始的 FAST角点经常出现“扎堆”的现象。在第一遍检测之后,还需要用非极大值抑制(Non-maximal suppression),在一定区域内仅保留响应极大值的角点,避免角点集中的问题。

FAST特征点的缺点:重复性不强,分布不均匀,不具有方向信息(旋转)和尺度信息(远处看着像是角点的地方,接近后看可能就不是角点了)。

添加了尺度和旋转描述的ORB特征:

Oriented FAST关键点

尺度不变性由构建图像金字塔,并在金字塔的每一层上检测角点来实现。而特征的旋转是由灰度质心法(Intensity Centroid)实现的。

  1. 金字塔底层是原始图像。每往上一层,就对图像进行一个固定倍率的缩放,这样就有了不同分辨率的图像。较小的图像可以看成是远处看过来的场景。在特征匹配算法中可以匹配不同层上的图像,从而实现尺度不变性。例如,如果相机在后退,那么应该能够在上一个图像金字塔的上层和下一个图像的下层中找到匹配。
  2. 在旋转方面,计算特征点附近的图像灰度质心。所谓质心是指以图像块灰度值作为权重的中心。

BRIEF 描述子

其描述向量由许多个0和1组成,这里的0和1编码了关键点附近两个随机像素(比如p和q)的大小关系:如果p比q 大,则取1,反之就取0。如果取了128个这样的 p, q,最后就得到128维由0、1组成的向量。BRIEF使用了随机选点的比较,速度非常快,而且由于使用了二进制表达,存储起来也十分方便,适用于实时的图像匹配。原始的 BRIEF描述子不具有旋转不变性,因此在图像发生旋转时容易丢失。而ORB在FAST特征点提取阶段计算了关键点的方向,所以可以利用方向信息,计算旋转之后的“Steer BRIEF”特征使ORB的描述子具有较好的旋转不变性。

改进后的特征点鲁棒性和效率都更强了。

ORB特征点性能改进表

后补。。。

特征匹配:解决SLAM中的数据关联问题(data association)

确定当前看到的路标与之前看到的路标之间的对应关系。通过对图像与图像或者图像与地图之间的描述子进行准确匹配,可以为后续的姿态估计、优化等操作减轻大量负担。然而由于图像特征的局部特性,误匹配的情况广泛存在,部分原因是场景中经常存在大量的重复纹理,使得特征描述非常相似。

匹配的算法:

  1. 暴力匹配(Brute-Force Matcher):特征点数量很大时,暴力匹配法的运算量将变得很大,特别是当想要匹配某个帧和一张地图的时候。
  2. 快速近似最近邻(FLANN)算法:更加适合于匹配点数量极多的情况。

第七章内容总结图

后补。。。

最近这个专栏比较少时间去写了,科研任务逐渐收紧,后面等过年放假有时间再整理,抱歉!

 

你可能感兴趣的:(算法,书籍学习笔记,学习,机器学习,自动驾驶)