单目视觉是Mobileye(我)的法宝。其实也考虑过双目视觉,最后选择了放弃。单用途测距和三维估计依赖于什么?它是用于检测目标的包围盒(BB)。
单目视觉是Mobileye(我)的法宝。其实也考虑过双目视觉,最后选择了放弃。单用途测距和三维估计依赖于什么?它是用于检测目标的包围盒(BB)。如果无法检测到障碍物,系统就无法估计其距离和三维姿态/方向。在没有深度学习的时候,ME主要是基于BB、摄像头标定的姿态和高度以及假设路面是直的来估计距离。通过深度学习,可以根据3D地面实况训练NN模型,并且可以获得3D尺寸和姿态估计。该距离是基于单视图度量获得的。不久前百度Apollo发布的单目L3解决方案就说的很清楚了。参考论文是《深度学习和几何的3D包围盒估计》。当然,双目可以计算视差和深度,即使没有探测到障碍物(因为探测器比单目多了额外的深度信息),也会发出警报。问题是双目视觉系统估计视差并不那么容易。立体匹配是计算机视觉中的一个典型问题。远目标的测距精度由宽基线获得,近目标的测距结果由短基线获得。这里有一个妥协。目前市面上ADAS的双目视觉系统是斯巴鲁EyeSight,据说性能不错。百度的阿波龙L4车轮渡量产了100台,安装了双目系统。此外,欧盟的自动泊车项目V-Charge也采用了前向双目视觉系统,自动驾驶研发系统贝瑞塔本茨也集成了雷达系统,其中双目匹配的障碍物检测算法Stixel非常有名。过去,博世、康迪等一级公司也开发过双目视觉解决方案,但没有对市场产生影响,据说被砍掉了。说到双目系统的难点,除了立体匹配,还有标定。校准后的系统会产生漂移,因此在线校准是必要的。单目也是一样,因为轮胎变形和车身颠簸都会影响摄像机外部参数的变化,有些参数,比如俯仰角和偏航角,必须在线标定。在线双目标定比较复杂,因为双目匹配尽量简化为一维搜索,所以需要通过立体校正使两个镜头的光轴平行并垂直于基线。因此,与收益相比,增加了复杂性和成本,如果不划算,商家就会放弃。最近双目视觉再次被提及,是因为硅谷芯片公司Ambarella在2014年收购了意大利帕尔马大学的Vis实验室,开发了双目ADAS和自动驾驶芯片。去年CES之后,开始进入车企和一级市场。此外,安巴目前正在继续研究和改进该系统的性能。下图是安装在屋顶的六对立体视觉系统的示意图,它们的基线宽度可以不同,相应的有效探测距离也不同。我坐过它的自动驾驶汽车,远处能看到200米,近处能看到20-30米。它可以进行在线标定,并随时调整一些双目视觉参数。
1.立体匹配先说立体匹配,也就是视差/深度估计。如图所示,假设左右摄像机的焦距f、基线(两个光学中心之间的连线)的宽度b、三维点X的深度z及其视差(投影到左右图像的二维点时的坐标差)为
可见视差可以用来计算深度值。但这里最难的是如何确定左右镜头看到的图像是同一个目标,也就是匹配问题。有两种匹配方法,全局方法和局部方法,以及双目匹配的四个步骤:
匹配成本计算;
成本汇总;
视差计算/优化;
视差纠正。
最著名的局部方法是SGM(半全局匹配)。很多产品都是基于这个改进,很多视觉芯片都采用了这个算法。SGM将全局优化近似为多个局部优化问题的组合。下面的公式是二维匹配的优化目标函数,SGM被实现为多个一维优化的和
Census Transform将8/24位像素转换为二进制序列,另一种二进制特征称为LBP(局部二进制模式),与之类似。立体匹配算法就是基于这种变换,将匹配转化为汉明距离的最小搜索。英特尔的RealSense收购了一家成立于1994年的基于这项技术的双目视觉初创公司,还收购了其他几家小公司,让它们一起。下图是CS改造示意图:
PatchMatch是一种加速图像模板匹配的算法,用于光流计算和视差估计。此前,微软研究院曾做过一个基于单目手机摄像头三维重建的项目,模仿之前成功的基于RGB-D算法的KinectFusion,名字类似于MonoFusion,其中深度图估计基于一种改进的PatchMatch方法。基本思想是随机初始化视差和平面参数,然后通过相邻像素间的信息传播来更新估计。PM算法分为五个步骤:
1)空间传播:每个像素检查左、上邻居的视差和平面参数,如果匹配代价变小,则替换当前估计;
2)视图传播:变换其他视角的像素,检查其对应图像的估计,如果变小则替换;
3)时间传播:在帧之前和之后考虑对应像素的估计;
4)平面细化:随机生成样本,如果估计降低了匹配代价,则更新样本。
5)后处理:左右一致性和加权中值滤波去除离群点。
下图是PM的示意图:
2.在线校准和在线校准。这是一种利用道路标线(斑马线)的标定方法:已知斑马线平行图案,检测斑马线并提取角点,计算斑马线图案与路面匹配的单应性参数,得到标定参数。
另一种方法是基于VO和SLAM,比较复杂,但是也可以做基于地图的定位。SLAM用于在线校准,不适合高频运行。下图是其算法流程图:1-4步,通过立体视觉SLAM获取全局连续地图;步骤5,给出双目摄像机变换的初始估计,步骤6,将所有立体摄像机的地图聚合成一张地图;第7-8步:获得多个相机之间的姿势。
与单目法类似,采用车道线平行于道路平面的假设,即消失点理论,可以快速完成在线标定:假设一个平坦的道路模型,纵向车道线清晰,没有其他目标的边缘与之平行;要求车辆行驶速度慢,车道线连续,左摄像机和右摄像机的双目配置在左摄像机相对于路面的横摆/横滚角度要小;这样,与初始消失点(与离线标定有关)相比,就可以计算出双目外部参数的漂移(图5-269),其算法是从消失点估计出摄像机的仰角/斜角。
3.典型的双目自动驾驶系统这里介绍几种典型的双目自动驾驶系统。贝瑞塔本茨采用的障碍物检测算法Stixel基于以下假设:场景中的目标被描述为柱状,重心的原因是目标站在地面上,每个目标上部的深度大于下部的深度。下图(a-d)介绍了SGM视差结果如何生成Stixel分割结果:
下图是Stixels计算示意图:(a)基于动态规划的自由驾驶空间计算(b)高度分割中的属性值(c)代价图像(依次为灰度值)(d)高度分割。
这是Stixel他们加入深度学习做视差融合后的框图和新结果:
介绍了一种在VisLab通用障碍物和车道检测系统(Gold)中的双目障碍物算法。基于IPM(逆透视映射),检测车道线,并根据左右图像的差异计算道路上的障碍物:
(一)左。(b)右(c)重映射左。(d)右重映射。(e)重新映射视图之间的阈值化和过滤的差异。(f)浅灰色,两个摄像头均可看到的道路区域。
(一)原创。(b)重新映射。(c)过滤。(d)增强。(e)二值化。
黄金系统架构这是VisLab参加VIAC (VISLAB洲际自主挑战赛)的车辆。除了双目摄像头之外,该车还有一个激光雷达作为道路分类的辅助设备。
这是双目障碍物检测的流程图:视差估计采用SGM算法和基于SAD的相关算法。
在后处理中增加了DSI(视差空间图像)空间的两个滤镜,如图5-274所示。一种是平滑处理,一种是基于惯性导航(IMU)的轨迹处理。
障碍物检测算法采用JPL方法,根据空间布局特征和车辆的物理特征对障碍物进行聚类。物理特性包括最大高度(车辆)、最小高度(障碍物)和最大道路可通行范围。这些约束在空间中定义了一个截锥,如图所示,因此在聚类过程中落在截锥内的所有点都被归类为障碍。
为了加快视差估计算法,采用了划分DSI的方法:
另一个经典的方法是根据道路方程(立体视觉)得到道路视差,并以此为基础计算出道路上的障碍物:
4.综上所述,双目障碍物检测的方法基本上都是基于视差图,基于道路视差的方法也有很多。或许随着深度学习的快速发展和计算平台的增强,双目自动驾驶系统也会普及。审核编辑:李倩
声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们