不小心删掉的文章,要求补上了。其实双目视觉主要问题是立体匹配和视差计算,最新的讨论见:

黄浴:基于深度学习的双目匹配和视差估计​zhuanlan.zhihu.com

另外,目标检测的双目视觉技术讨论如下:

黄浴:深度学习基于立体视觉的3-D目标检测​zhuanlan.zhihu.com


单目视觉是Mobileye(ME)的看家法宝,其实当年它也考虑过双目,最终选择放弃(:。

单目的测距和3-D估计靠什么?是检测目标的Bounding Box(BB),如果无法检测的障碍物,该系统就无法估计其距离和3-D姿态/朝向。没有深度学习的时候,ME主要是基于BB,摄像头标定得到的姿态和高度以及路面平直的假设估算距离。

有了深度学习,可以根据3-D的ground truth来训练NN模型,得到3D大小和姿态估计,距离是基于平行线原理(single view metrology)得到的。不久前百度Apollo公布的单目L3解决方案讲的比较清楚了,参考论文是“3D Bounding Box Estimation by Deep Learning and Geometry".

双目当然可以算视差和深度了,即使没有检测出障碍物(因为有附加的深度信息,检测器会比单目好),也会报警。问题是,双目视觉系统估计视差没那么容易,立体匹配是计算机视觉典型的难题,基线宽得到远目标测距准,而基线短得到近目标测距结果好,这里是存在折衷的。

目前市场上ADAS存在的双目视觉系统就是Subaru EyeSight,据说性能还行。

百度推出的阿波龙L4摆渡车量产100台,就安装了双目系统。还有欧盟自主泊车项目V-Charge也采用了前向双目视觉系统,另外自动驾驶研发系统Berta Benz也是,而且和雷达系统后融合,其中双目匹配的障碍物检测算法Stixel很出名。以前Bosch和Conti这些Tier-1公司也研制过双目视觉解决方案,但没有在市场上产生影响力,据说被砍掉了。

谈到双目系统的难点,除了立体匹配,还有标定。标定后的系统会出现“漂移”的,所以在线标定是必须具有的。单目也是一样,因为轮胎变形和车体颠簸都会影响摄像头外参数变化,必须在线做标定修正一些参数,比如仰角(pitch angle)和偏角(yaw angle)。

双目在线标定就更复杂些,因为双目匹配尽量简化成1-D搜索,所以需要通过stereo rectification将两个镜头光轴方向平行并和基线垂直。所以针对获得的gain相比,增加的复杂度和成本,如果不划算商家就会放弃。

最近重提双目视觉,是因为硅谷芯片公司安霸(Ambarella)在2014年收购意大利帕尔马大学的Vis Lab,研制了双目的ADAS和自动驾驶芯片,去年CES之后就开始进军车企和Tier-1。而且,安霸目前正在继续研究提升该系统的性能。

下图就是它在车顶安装6对立体视觉系统的示意图,其中它们的基线宽度可以不一样的,相应地有效检测距离也就不同。笔者曾坐过它的自动驾驶车,远处可以看到200米,近处20-30米。它确实可以做在线标定,随时调整一些双目视觉的参数。

先说立体匹配。

匹配方法分两种,全局法和局部法,实用的基本是局部法,因为全局法太慢。深度学习可以取代全局法,但目前还不是很成熟。

最著名的局部法就是SGM(semi-global matching),很多产品在用的方法都是基于此的改进,不少视觉芯片都采用这种算法。

Census Transform是将8/24比特的像素变成一个2进制序列,另外一个2值特征叫LBP(local binary pattern)和它相似。立体匹配算法就是基于这个变换将匹配变成一个Hamming距离的最小化搜索。Intel的RealSense当年就是收购了一个成立于1994年基于该技术的双目视觉创业公司,还收购另外几个小公司把他们合在一起做出来的。

PatchMatch是一个加速图像模版匹配的算法,被用在光流计算和视差估计上。之前微软研究院曾经做过一个基于单目手机相机3-D重建的项目,仿造以前成功的基于RGB-D算法KinectFusion,名字也类似MonoFusion,其中深度图估计就是采用一个修正的PatchMatch方法。

再说在线标定。

这是一个利用路上标志线(斑马线)的标定方法:已知斑马线的平行线模式,计算Homography将模式和路面实现匹配。

这个流程图比较复杂,采用SLAM做在线标定,不适合高频率操作:

和单目方法类似,采用车道线平行和路平面这个假设可以快速完成在线标定,即消失点(vanishing point)理论:跟初始化的消失点(与线下标定相关)比较可以算出双目外参数的漂移量。

下面介绍几个典型的双目自动驾驶系统。

Berta Benz采用的障碍物检测算法Stixel基于以下假设:场景中的目标描述为列,重心的原因目标是站立在地面上,每个目标上的上部比下部的深度大。下图(a-d) 介绍了SGM视差结果如何生成Stixel分割结果:

这是他们加上深度学习做视差融合之后再做Stixel的框图和新结果:

介绍一个早期双目障碍物的算法,Generic Obstacle and Lane Detection system (GOLD)。基于IPM(Inverse Perspective Mapping),检测车道线,根据左右图像的差计算路上障碍物:

(a) Left view. (b) Right view. (c) Remapped left view. (d) Remapped right view. (e) Thresholded and filtered difference between remapped views. (f) In light gray, the road area visible from both cameras.

(a) Original. (b) Remapped. (c) Filtered. (d) Enhanced. (e) Binarized

GOLD system architecture

一种经典的方法是根据路面方程(立体视觉)得到路面视差,基于此计算出路面的障碍物:

最后介绍一下安霸收购的VisLab双目系统:

这是双目障碍物检测流程图:

这是基于划分DSI(disparity space image)加速视差估计的方法:

另外还有提高视差精度的滤波方法:

总的看,双目检测障碍物的方法基本基于视差图,基于路面视差的方法较多。也许随着深度学习发展的突飞猛进,加上计算平台的增强,双目自动驾驶系统也会普及起来。

双目估计方法_基于双目视觉的自动驾驶技术相关推荐

  1. 浅析基于双目视觉的自动驾驶技术

    作者丨黄浴@知乎 编辑丨新机器视觉 单目视觉是Mobileye(ME)的看家法宝,其实当年它也考虑过双目,最终选择放弃. 单目的测距和3-D估计靠什么?是检测目标的Bounding Box(BB),如 ...

  2. 基于双目视觉的自动驾驶技术

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|3D视觉工坊 不小心删掉的文章,要求补上了.其实双目视觉主 ...

  3. 双目估计方法_教你提高双目立体视觉系统的精度!

    这里开源了一些经典的立体匹配算法,你可能会感兴趣: https://github.com/ethan-li-coding​github.com 双目立体视觉(Binocular Stereo Visi ...

  4. diy 单片机 自动浇花_基于单片机的自动浇花器的制作方法

    本实用新型涉及浇花设备技术领域,尤其涉及一种基于单片机的自动浇花器. 背景技术: 随着人们生活质量的不断提高,人们喜欢在家里放置花卉来点缀家中环境,从而使花卉种植不断普及,然而大多数花草生长问题是由花 ...

  5. diy 单片机 自动浇花_基于单片机的自动浇花系统

    摘要 很多家庭都种植有令人赏心悦目的花卉,但是当主人外出几天时,为避免这些花卉处于无人浇水的境地,所以设计一种自动浇花器十分必要的.本系统采用51单片机STC12C5A60S2作为核心控制器,用土壤湿 ...

  6. diy 单片机 自动浇花_基于单片机的自动浇花器设计

    龙源期刊网 http://www.qikan.com.cn 基于单片机的自动浇花器设计 作者:陈赋铭 来源:<农家科技下旬刊> 2015 年第 04 期 摘 要:本文是基于单片机 AT89 ...

  7. 用python做生物信息数据分析_基于Python的自动获取生物信息数据的软件设计

    基于 Python 的自动获取生物信息数据的软件设计 * 周斯涵,刘月兰 ** [摘 要] [摘 要] 从国际生物信息学数据库中采集数据来进行相关领域的分析, 但随着数据库规模不断扩大 , 数据来源种 ...

  8. 基于单片机的自动追日系统设计_基于单片机的自动浇花系统的设计

    龙源期刊网 http://www.qikan.com.cn 基于单片机的自动浇花系统的设计 作者:吴蓓 张阳 来源:<现代信息科技> 2018 年第 03 期 摘 要:为了解决人们生活中由 ...

  9. shell编写mysql全备和增备脚本_基于mysqldump编写自动全备增备的shell脚本

    基于mysqldump编写自动全备增备的shell脚本 在线上MySQL数据库备份分为全备和增备,而xtrabackup备份已经支持了增量备份了,但是mysqldump就不支持增量备份,所以我们需要写 ...

最新文章

  1. Buttomsheetdialog的简单实用
  2. 设置USB无线网卡为监听模式大学霸IT达人
  3. HTTP与HTTPS对访问速度(性能)的影响
  4. mysql 三层架构开发_从三层架构迈向领域驱动设计(转载)
  5. Memcached安装
  6. 技能模块的防外挂机制和同步机制优化
  7. 史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(二)
  8. include动作与include指令的区别
  9. linux恢复终端默认配置,以gnome-terminal为例,修改gnome3 的默认配置,
  10. CIO必看:7个常见但一定要避免的数据治理错误
  11. 双语经典:告别单身的必杀技之情话连篇
  12. live writer 中注册博客园需要的设置
  13. abaqus 录制结果动画_后处理动画录制
  14. 重装win10系统(纯净win10系统)
  15. 12306为什么买票这么难
  16. 如何自学VR虚拟现实技术?VR简单上手教程
  17. Android--手机一键Root原理分析
  18. A股动量策略有效性验证
  19. 怎样理解ZBrush中的2.5D绘画
  20. golang力扣leetcode 1823.找出游戏的获胜者

热门文章

  1. php最难,那个PHP中号称最难的‘递归函数’
  2. matlab如何保存子图,MATLAB:在子图中绘制/保存网格函数的X-Y视图
  3. mysql datetime为空不显示_将null和格式不正确的datetime值导入datetime列MySQL
  4. 鸿蒙车载智慧屏评测,华为智慧屏S Pro体验:告诉你鸿蒙OS有多优秀?
  5. Python:如何安装whl文件
  6. ceph关闭同步之后的故障记录
  7. 什么才是年轻人需要的手机?看完OPPO R11就有了答案!
  8. 隐马尔科夫模型(Hidden Markov Models) 系列之一
  9. android 如何开发出一款知名应用:构思篇
  10. HDU_1711 Number Sequence(KMP)