摘抄自:http://www.360doc.com/content/16/0603/05/478627_564621458.shtml

两种已经比较成熟的视觉感知系统:光流测速模块和视觉里程计。

  光流测速模块顾名思义,只能测速度。通常一个光流测速模块由一个相机、一个惯性测量元件、一个超声波模块构成,它的主要原理是计算机视觉技术中于1981年被发展出来的“光流追踪”算法。

“光流”的概念最早在1950年代由心理学家和生物学家提出,指的是一个观察者和他在观察的事物发生相对运动时,这些事物在他眼前成的像会产生“运动的模式”,人脑利用这种“运动的模式”能够更灵敏地感知周围什么东西在动。比如下图中,读者一看就可以直观理解“光流”的意义。后来计算机科学家布鲁斯-卢卡斯和金出武雄在1981年发明了Lucas-Kanade算法,通过算法计算出连续拍摄的图片上的光流,并证明了光流可以反解出相对运动的速度。虽然三十多年来,Lucas-Kanade算法始终被公认为最好的“光流追踪”算法,但是它有比较大的局限性,它包含很多假设,比如假设连续图片的平均亮度相同,比如假设图片中的物体只发生平面运动等等。另外,光流算法算出的速度是没有尺度的,因为相机图像的单位是像素,所以光流算法只能给出“你现在的速度是10个像素每秒”,但是没法算出10个像素是1厘米还是1米。恢复尺度的方式是增加一个超声波模块测量平面运动离相机的距离,这样就能够把像素运动转换成真实的运动。最后,如果要让光流测速模块在晃来晃去的多旋翼飞行器上也能使用,通过惯性测量元件找出图像所代表的平面也是必不可少的,这一点需要在算法上进行两种传感器很好的配合。

  光流算法原理上只可以测三维速度,不能直接测量三维位置。我们同样可以通过把光流测速模块测出的三维速度积分获得三维位置,但是就像惯性测量元件积分会发散一样,光流测速模块积分得到的位置也会发散。好在它不会天马行空地失去控制,和组合导航技术中除了GPS之外的传感器妥善融合之后,它可以做到悬停时测量的位置不发散。因此可以说光流测速模块只在有限的条件下能够替代GPS。

光流测速模块已经形成了非常标准的解决方案。大疆悟以及精灵3上都装载了自主研发的光流测速模块,另外著名的开源飞控产品Pixhawk中包含了一个叫做PX4Flow的光流测速模块,并且开源了所有的代码和硬件方案。所以光流测速模块目前已经广泛出现在了各大厂商的多旋翼飞行器产品上。视觉里程计相比光流测速模块,增加了直接测量位置的能力,所以才叫“里程计”。视觉里程计比光流测速模块能力更强,性能更好。

  读者可能会问,为什么听起来视觉里程计和光流测速模块参与的传感器数量差不多(光流测速模块甚至还多一个超声波模块),但是视觉里程计能力反而更强呢。这里的原因不在于传感器硬件,而在软件算法上。前面已经说到光流追踪算法有很多简化的假设,只能测量平面运动,增加其他传感器硬件一定程度上是为了把那些为了计算方便而简化掉的因素重新弥补起来。

  而视觉里程计算法则复杂得多,它不仅要通过图像反推出视野中物体的平面运动,还要反推出这些物体的三维位置,并且基于这些物体的三维位置做很多次的优化计算,算法复杂度成倍于光流测速模块。有些视觉里程计的算法甚至包含完整的光流追踪的算法,但是仅仅把计算光流作为预处理图像的步骤。

视觉里程计能够直接测量位置,测量值也比较准确,不会像光流测速模块那样发散。通常比较优秀的视觉里程计飞100米之后只会积累十几厘米到几十厘米的误差,这个测量水平比起导弹上几百万的惯性测量元件还是差了不少,但是考虑到视觉里程计的价格极其低廉,对比起来它的性价比非常高。

  视觉里程计有几个不同层次的难度,最简单的是两个相机构成的双目立体视觉系统加惯性测量元件,最难的是一个相机构成的单目视觉系统加惯性测量元件。如果视觉里程计和光流测速模块硬件一致,那么这里的视觉里程计采用的是单目视觉系统。目前,双目立体视觉系统加惯性测量元件实现自身状态观测已经是比较完善的技术,而单目视觉系统则是活跃的研究方向,世界上做这个研究方向较好的大学有美国的宾西法尼亚大学、瑞士的苏黎世联邦理工学院、英国的牛津大学、我国的香港科技大学和其他一些欧美院校。

光流测速和视觉里程计相关推荐

  1. svo: semi-direct visual odometry 半直接视觉里程计 fast角点匹配 光流匹配 单应变换求位姿 直接法求解位姿 高斯均匀分布混合深度滤波

    svo: semi-direct visual odometry 半直接视觉里程计 本博文github地址 svo代码注释 SVO代码分析 较细致 svo: semi-direct visual od ...

  2. 【slam十四讲第二版】【课本例题代码向】【第七讲~视觉里程计Ⅱ】【使用LK光流(cv)】【高斯牛顿法实现单层光流和多层光流】【实现单层直接法和多层直接法】

    [slam十四讲第二版][课本例题代码向][第七讲~视觉里程计Ⅱ][使用LK光流(cv)][高斯牛顿法实现单层光流和多层光流][实现单层直接法和多层直接法] 0 前言 1 使用LK光流(cv) 1.1 ...

  3. 第8讲 视觉里程计2 --- 光流

    特征点法的缺陷 尽管特征点法在视觉里程计中占据主流地位,但研究者们还是认识到它至少有以下几个缺点: (1)关键点的提取和描述子的计算十分耗时. (2)使用特征点时,忽略了除特征点以外的所有信息.一幅图 ...

  4. 视觉里程计 第一部分:前30年的发展和理论基础

    视觉里程计 第一部分:前30年的发展和理论基础 VisualOdometry -Part I The First 30 Years and Fundamentals TaylorGuo, 2017年1 ...

  5. SLAM 06.视觉里程计-3-直接法

    1.特征法和直接法比较 1.1.特征法的缺点 特征点法有如下几个缺点: 特征点法需要提取多个特征点以及描述子,并且要进行多个特征点之间的匹配,运算量很大,难于满足实时要求.SIFT目前在CPU上是无法 ...

  6. SLAM前端中的视觉里程计和回环检测

    1. 通常的惯例是把 VSLAM 分为前端和后端.前端为视觉里程计和回环检测,相当于是对图像数据进行关联:后端是对前端输出的结果进行优化,利用滤波或非线性优化理论,得到最优的位姿估计和全局一致性地图. ...

  7. SVO 半直接视觉里程计

    SVO 从名字来看,是半直接视觉里程计,所谓半直接是指通过对图像中的特征点图像块进行直接匹配来获取相机位姿,而不像直接匹配法那样对整个图像使用直接匹配.整幅图像的直接匹配法常见于RGBD传感器,因为R ...

  8. CVPR2021:推广到开放世界的在线自适应深度视觉里程计

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 Generalizing to the Open World Deep Visual Odometry ...

  9. 去掉左边0_SLAM从0到1——11. 视觉里程计VO内容框架

    「本文是之前学习VO 部分整理的思维导图,笔记写入之后均折叠了起来,正文中采用markdown格式展开,可看到笔记内容」 放上来的目的其实是方便自己查阅笔记,同样给有需要的同学提供一点思路. 整体上的 ...

最新文章

  1. nginxtomca负载均衡
  2. MySQL内部执行流程
  3. 和低压电气有关的71个问题
  4. Android简单调用相机Camera功能,实现打开照相功能
  5. 常用查找算法(顺序、折半、二叉树、哈希、分块)介绍
  6. mockito java_Java:使用Mockito模拟ResultSet
  7. 【渝粤题库】陕西师范大学164202 市场营销学 作业(专升本)
  8. python 傅里叶_基于python的图像傅里叶处理
  9. 消息长度_填坑笔记:RocketMQ消息订阅失败问题?
  10. 操作系统锁的实现方法有哪几种_java 偏向锁、轻量级锁及重量级锁synchronized原理...
  11. TortoiseSVN配置
  12. 制作背景透明图标的小工具(附源代码)
  13. 忆暖行动|“ 还可以留一点做成柿饼,做法也很简单,就是挑硬柿子把皮削掉,用开水烫个几秒”
  14. 京东股权众筹投后总结和反思
  15. APP开发的上线流程
  16. DID分布式身份标识技术调研
  17. 基于SpringBoot的智能物流监控系统数据系统
  18. Alpine linux 小内存版,Alpine Linux系统-Alpine Linux系统【轻量级Linux】下载v3.11.0 最新版-西西软件下载...
  19. 【FinE】在险价值(VaR)计算
  20. 解决Unable to find encoder for type stored in a Dataset问题

热门文章

  1. 电工学复习【6】-- 基本放大电路
  2. 最小二乘法的几种拟合函数
  3. 【微信开发第四章】SpringBoot实现微信H5支付
  4. 大数据_数据中台建设的成熟度评估模型
  5. 打开sqlite3文件方法
  6. 如何登录锐捷设备(智慧教室篇)
  7. 法国语言学校学两年可以过c1,半年从A2到 telc C1 Befriedigen 经验
  8. matlab bvp4c猜测解,对具有两个解的 BVP 求解
  9. 时域和频域的简单理解方法
  10. c语言定义指向结构体的指针,C语言入门教程-指向结构体的指针