双目估计方法_为什么双目自动驾驶系统难以普及技术详解+典型案例分析

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

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

有了深度学习,可以根据3-D的groundtruth来训练NN模型,得到3D大小和姿态估计,距离是基于平行线原理得到的。不久前百度Apollo公布的单目L3解决方案讲的比较清楚了,参考论文是:

“3DBoundingBoxEstimationbyDeepLearningandGeometry".

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

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

52f11e7079b9d2c03dfcc52abc6f0117.png

百度推出的阿波龙L4摆渡车量产100台,就安装了双目系统。还有欧盟自主泊车项目V-Charge也采用了前向双目视觉系统,另外自动驾驶研发系统BertaBenz也是,而且和雷达系统后融合,其中双目匹配的障碍物检测算法Stixel很出名。

以前Bosch和Conti这些Tier-1公司也研制过双目视觉解决方案,但没有在市场上产生影响力,据说被砍掉了。

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

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

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

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

2f57e23098be868804e5d74e2376011f.png

立体匹配

先说立体匹配,即视差/深度估计。如图假设左右摄像头焦距f,基线宽B,3-D点X的深度z,而其视差即可见视差能够反算深度值。但是这里最难的就是左右镜头看到的图像如何确定是同一个目标,即匹配问题。

匹配方法分两种,全局法和局部法,双目匹配的四个步骤:

  • 匹配成本计算;
  • 成本聚集;
  • 视差计算/优化;
  • 视差修正。

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

SGM就是把一个全局优化近似成多个局部优化的问题组合,如下公式是2-D匹配的优化目标函数,SGM实现成为多个1-D优化路径之和

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

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

其基本思想就是对视差和平面参数随机初始化,然后通过邻域像素之间信息传播更新估计。PM算法分五个步骤:

1)空间传播:每个像素检查左边和上边邻居视差和平面参数,如果匹配成本变小就取代当前估计;

2)视角传播:其他视角的像素做变换,检查其对应图像的估计,如果变小就取代;

3)时域传播:前后帧考虑对应像素的估计;

4)平面细化:随机产生样本,如果估计使匹配成本下降,更新。

5)后处理:左右一致性和加权中值滤波器去除出格点。

在线标定

再说在线标定。

这是一个利用路上标志线的标定方法:已知斑马线的平行线模式,检测斑马线并提取角点,计算斑马线模式和路面实现匹配的单映性变换参数,得到标定参数。

a01dffe6bb97f44b5a742ba82afd3c48.png

和单目方法类似,采用车道线平行和路平面这个假设可以快速完成在线标定,即消失点理论:假设一个平坦的道路模型,清晰的纵向车道线,没有其他目标的边缘和它们平行;要求驾驶车辆速度慢,车道线连续,左右相机的双目配置要左摄像头相对路面的仰角/斜角比较小;这样跟初始化的消失点比较可以算出双目外参数的漂移量,其算法就是从消失点估计摄像头仰角/斜角。

c902fb917bdeb2cbd7b7e7d32eb63be9.png

典型的双目自动驾驶系统

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

6b994dff0cfb94b12a480f94563c891f.png

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

ba16b07d7f00f001ba39e42349f503bf.png

介绍一个VisLab早期双目障碍物的算法,GenericObstacleandLaneDetectionsystem。基于IPM,检测车道线,根据左右图像的差计算路上障碍物:

a)Left.RightRemappedleft.Remappedright.Thresholdedandfiltereddifferencebetweenremappedviews.Inlightgray,theroadareavisiblefrombothcameras.

a)Original.Remapped.Filtered.Enhanced.Binarized.

GOLDsystemarchitecture

这是VisLab参加自动驾驶比赛VIAC的车辆,除了双目摄像头以外,车上还有激光雷达作为道路分类的辅助。

28a69957701da35eaa48ab7bbdc64f14.png

后处理中加了两个DSI空间的滤波器,见图5-274,一个是平滑处理,另一个是基于惯导的运动轨迹处理。

障碍物检测算法采用了JPL的方法,基于空间布置特性以及车辆的物理特性聚类得到障碍物。物理特性包括最大的高度,最小高度和最大道路可通过范围,这些约束定义了一个空间截断锥,如图所示,那么在聚类过程中凡是落在截断锥内的点划为障碍物。

1d8181ddd33f882faeab42b937ab26dc.png

为加速视差估计算法,采用了划分DSI的方法:

另外一种经典的方法是根据路面方程得到路面视差,基于此计算出路面的障碍物。

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值