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

重磅干货,第一时间送达

就目前视觉SLAM的引用来区分,分为基于特征法的和直接法的视觉SLAM。上一篇文章(https://zhuanlan.zhihu.com/p/108298657)中分析了特征法和直接法之间的对比关系。以下全篇均在分析基于视觉+IMU的视觉SLAM,即VINS。

基于特征法的视觉SLAM(视觉+imu)在目前发展相对更佳成熟,本文重点分析基于特征法的视觉SLAM的前端特征检测与跟踪问题。就目前来看,主流的框架还是基于fast方法进行特征快速检测,基于光流法进行特征跟踪。与ORB-SLAM不同,基于光流法进行特征跟踪可以甚至在高动态的场景下进行有效的特征跟踪。在高动态场景下,一个关键的问题就是图片容易模糊,基于ORB这种采用描述子进行特征匹配的特征跟踪方法,极易在高动态场景下特征跟踪失败。

jiacheng: 特征点法的话,以VINS为例,需要提前把路上运动中的车提前检测出来,去掉,这样是为了去掉动的特征点。车行驶环境中有很多重复的纹理和区域,感觉像VINS中用光流跟踪比计算描述子的特征点匹配,误匹配的情况可能要好一些,因为光流法会指定当前帧图像上的特征点的初始位置,也就是会在上一帧对应光流点的坐标值附近搜索和上一帧的匹配点。还有就是用特征点法地图重用要简单,只存储特征点,需要的时候拿出来就能恢复位姿了。

jiacheng: 我也理解光流法是对光照更加敏感一些才对,但是测试的时候发现,只有在非常严重的光照变化,比如从黑漆漆的树荫底下一下子暴露到阳光暴晒下,VO才会坚持不住丢掉。

下面简要的讲述一下几种描述子的特点以及相关的问题(特征描述子部分的材料参考了Dr. Yue的讲座介绍):

SIFT(Scale Invariant Feature Transform):该描述子主要具备尺度不变性和旋转不变性等优秀的品质,在视觉特征描述领域获得很好地口碑;描述子由128维的向量描述子组成。根据以下两个公式计算梯度幅值和梯度方向,基于特征点邻域内的像素对应的梯度信息,以获得旋转描述子的旋转不变性,最终获得128维的描述子。

Harris 特征:该特征描述方式主要依赖于特征点与邻域内的相关系数值。其中相关系数计算如下:

其中 表示特征点为中心的邻域范围。 计算如下:

因此可以的到:

其中:

因此可得到简化形式如下:

Harris特征的优势之一是速度快,虽然 Harris 算法相较于其他众多基于灰度的角点提取算法具有明显的优势,但它仍然存在一些不足: 在经典的 Harris 角点检测中,当对角点的兴趣值进行非极大值抑制来确定局部极大值的时候,角点的提取效果几乎完全由设定的阈值大小决定。而阈值的大小也与所提取的角点数量息息相关,一般情况下,阈值越大提取的角点越少,极易造成正确角点的丢失; 阈值越小提取的角点数越多,也会带来很多伪角点。因此,在用 Harris 算法进行角点检测时,阈值这个经验值的选取和设定对角点提取具有很大的影响。这部分参考https://blog.csdn.net/weixin_41695564/article/details/79962401。

Fast特征:Fast特征的提出者Rosten等将Fast角点定义为:若某像素与其周围邻域内足够多的像素点相差较大,则该像素可能是角点。

1, 一个以像素p为中心,半径为3的圆上,有16个像素点(p1、p2、...、p16)。

2、定义一个阈值。计算p1、p9与中心p的像素差,若它们绝对值都小于阈值,则p点不可能是特征点,直接pass掉;否则,当做候选点,有待进一步考察;

3、若p是候选点,则计算p1、p9、p5、p13与中心p的像素差,若它们的绝对值有至少3个超过阈值,则当做候选点,再进行下一步考察;否则,直接pass掉;

4、若p是候选点,则计算p1到p16这16个点与中心p的像素差,若它们有至少9个超过阈值,则是特征点;否则,直接pass掉。

5、对图像进行非极大值抑制:计算特征点出的FAST得分值(即score值,也即s值),判断以特征点p为中心的一个邻域(如3x3或5x5)内,计算若有多个特征点,则判断每个特征点的s值(16个点与中心差值的绝对值总和),若p是邻域所有特征点中响应值最大的,则保留;否则,抑制。若邻域内只有一个特征点(角点),则保留。得分计算公式如下(公式中用V表示得分,t表示阈值):

该fast特征检测方法以快著称,清晰明了,在很多VINS中都采用这种检测方式。

小结:

以无人驾驶,无人机这种高动态的场景来说,以视觉SLAM为背景,fast + 光流的场景将会是一种主流方案。我们的研究(Bai, Xiwei, Weisong Wen, and Li-Ta Hsu. "Robust Visual-Inertial Integrated Navigation System Aided by Online Sensor Model Adaption for Autonomous Ground Vehicles in Urban Areas." (2020).)也发现,基于fast+光流的方式即使在晚上高动态的场景下,也可以获得相对不错的相对定位精度,全程没有fail掉,但是整体精度依旧有待改善。

基于ORB这种高效的描述子的方式,在基于视觉地图做重定位的场合,具有很好的优势,比如类似于VPS等场合。

从全局上讲,典型的VINS主要包括两部分;即前端和后端。主要的VINS的误差来源来自于一下几部分。

特征检测的精度:由于后期的特征跟踪需要检测出前后属于同一个特征的特征点,如果特征检测的精度误差有0.5个pixel,那么反应到3D定位精度上,可能会是一个不小的误差。

特征跟踪精度:在使用光流法跟踪过程中,由于特征跟踪错误,导致计算重投影误差出错,最终的优化求解误差增大。

VINS状态初始化精度:由于VINS的整个优化问题是一个极度非线性的问题,因此一个好的初始化解是优化求解达到最优的关键。总的来说,一个好的初始化解,是优化达到最优解的关键之一。

匀速运动的自身车辆,导致视觉尺度不可观:由于视觉的尺度需要基于IMU的观测量来恢复,当车辆处于匀速运动的时候,由于加速度为0,将会导致视觉尺度不可观。

高动态环境下的动态目标:由于视觉重投影的残差依赖于一个假设:即特征是静止的。然而在高动态环境下,动态车辆上检测的特征将会极大的影响精度。我们组近期的文章在解决这些问题(Bai, Xiwei, Weisong Wen, and Li-Ta Hsu. "Robust Visual-Inertial Integrated Navigation System Aided by Online Sensor Model Adaption for Autonomous Ground Vehicles in Urban Areas." (2020).)

参考文献:

[1] https://www.cnblogs.com/wyuzl/p/7834159.html

[2]https://zhuanlan.zhihu.com/p/108298657

[3]https://blog.csdn.net/weixin_41695564/article/details/79962401

上述内容,如有侵犯版权,请联系作者,会自行删文。

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

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

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

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

下载3:OpenCV实战项目20讲

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

交流群

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

视觉SLAM前端特征检测与跟踪的思考相关推荐

  1. 视觉SLAM前端——LK光流法

    目录: LK光流介绍 单层LK光流 多层LK光流 LK光流   LK光流是一种描述图像运动的方法,利用LK光流可以实现对图像的追踪,从而求解图像运动的位姿.其基本思想如下:   img1,img2分别 ...

  2. 论文简述 | DOT:面向视觉SLAM的动态目标跟踪

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1 摘要 在本文中,我们提出了动态目标跟踪(DOT),一个添加到现有SLAM系统的前端,可以显著提高它 ...

  3. 视觉SLAM前端——ICP

    当我们知道空间点在两个坐标系下的位置时,可以通过ICP来求解其相对位姿.ICP最初常用在激光SLAM中,因为激光可以获得3D位置,而不像视觉还需要经过相机的投影变换,但是从激光雷达获得的三维点云中,我 ...

  4. 视觉SLAM前端——PnP

    如果我们已知多对匹配好的2D/3D特征点,我们可以用PnP方法去求得相机的运动.对于单目相机来说,我们可以通过利用对极约束或者单应性求得相机的运动,然后三角化获得3D点:对于双目可以通过视差恢复深度信 ...

  5. 八种常用激光雷达和视觉SLAM算法的评估与比较

    文章:Evaluation and comparison of eight popular Lidar and Visual SLAM algorithms 作者:Bharath Garigipati ...

  6. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  7. 视觉SLAM综述(入门篇)

      最近几天刚刚接触到视觉SLAM这个研究方向,发现这个方向的知识点挺多挺杂的,于是就自己看文献,刷博客,大致对视觉SLAM有了整体的了解.   这篇博客也算是一个简单的小综述,具体的知识点正在学习之 ...

  8. SLAM | 视觉SLAM中的后端:后端优化算法与建图模板

    点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 前面的话 前面系列一中我们介绍了,VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...

  9. 视觉SLAM融合GPS尝试

    一.前言 最近在做无人机建图的相关工作,基本的方案是ORB SLAM2+Map2DFusion. 在调试好代码后,我利用大疆精灵4在附近的一个公园进行算法测试,得到的效果图如下: 但在一些细节上会有明 ...

最新文章

  1. 最佳的七十五个网络分析和安全工具
  2. html5 loaded,How do you check if a HTML5 audio element is loaded?
  3. mysql benchmark基准测试
  4. docker tomcat:9.0
  5. Transaction rolled back because it has been marked as rollback-only 原因 和解决方案
  6. 网络安全行业全景图(2019年1月)
  7. 线性代数导论20——克莱姆法则、逆矩阵、体积
  8. 利用Windows自带的Certutil查看文件MD5
  9. 又一家边缘计算公司融资啦!!!
  10. java测试性能代码_关于性能:Java代码内部的基准测试
  11. wps怎么下载仿宋gb2312_仿宋gb2312字体
  12. Shotgun/Shotgrid入门学习笔记一
  13. 圣诞节来了,怎能还没有圣诞树呢 快来为心爱的她送上专属的圣诞礼物叭~
  14. PCL- 最小二乘法拟合平面
  15. 宁波大学c语言理论考试试题科目一,c丨科目一理论考试
  16. BetaFlight之穿越机F4飞控设置
  17. Java专项练习一(选择题)
  18. pandas归一化某一列_十分钟带你了解pandas常用方法
  19. Bert NER 实战
  20. 2020数字化转型“飞轮”上阵,华为云WeLink来了!

热门文章

  1. 只做好CTR预估远不够,淘宝融合CTR、GMV、收入等多目标有绝招
  2. 从特斯拉到英伟达,那些端到端自动驾驶研发系统有何不同?
  3. 李开复口中的“联邦学习” 到底是什么?| 技术头条
  4. 使用可进化的AutoML发现神经网络架构
  5. Java 日志框架适配/冲突解决方案(值得收藏)
  6. 用 MySQL 实现分布式锁,你听过吗?
  7. 面试官问我 StringBuilder 线程不安全的点在哪儿.....
  8. 优雅地处理重复请求(并发请求)——附Java实现
  9. Java接地气日常编码技巧
  10. 蚂蚁金服开源增强版Spring Boot 的研发框架!