2009年,日本斯巴鲁第一次将双目相机用于汽车领域,但并未引起业内太大反响,直到2013年奔驰也开始将双目相机用于其顶级的S级轿车,之后又延伸到E级轿车,今年底C级轿车也开始使用双目相机。
2015年宝马积极向奔驰靠拢,在其顶级7系轿车中使用双目,2017年延伸到5系轿车。2018年丰田在其顶级LS系列轿车中也开始使用双目,捷豹路虎也在揽胜和最新的I-PACE纯电SUV上使用双目,现代在其氢燃料无人车NEXO上也使用了双目,现代在将来也会把双目应用在其Genesis系列轿车上,通用则在其无人车也使用了双目,下一代通用的卡迪拉克上也极有可能使用双目,通用已经申请了一系列有关双目的专利。
除了奥迪使用激光雷达外,双目是豪华车的标配。
早在1990年,Montani, C.和Scopigno, R在《Renderingvolumetric data using the sticks representation scheme》一文中就提出Stixels的概念,但是那时候双目相机远未成熟,直到2009年Hern´an Badino、Uwe Franke、和David Pfeiffer三人联合发表文章《The Stixel World - A Compact Medium Level Representation of the3D-World》将双目与Stixels结合,最终发挥出双目的最大潜能,2011年Rodrigo Benenson、Radu Timofte 和 Luc Van Gool联合发表《Stixels estimation without depth map computation》,大大提高计算效率,并在2013年将其商业化。UweFranke是奔驰图像理解小组(image understanding group)的负责人。
Stixels主要应用在两方面,一方面是行人检测,另一方面是生成可行驶区域(Free Space或Drivable Space),为无人驾驶提供支撑。行人检测方面,Stixels是目前效率最高的行人检测方法,实时性最好。在瑞萨R-CAR H3(大致相当于英特尔第一代笔记本电脑I7处理器)上每秒可达100帧,如果是深度学习算法估计每10秒才能一帧,SVM的话,估计每秒能有1帧。Drivable Space方面也拥有单目根本无法企及的效率和准确度。而单目能做到,双目也都能做到。此外还得指出,三目本质还是单目,跟双目还是差距明显。
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598416778144472.jpg)
Stixel可以翻译为柱状像素。在交通场景里,我们可以将所有交通元素简单分为两大类,一类即地面,另一类是垂直于地面的物体。地面可以看做是无限延伸的,垂直于地面的物体可以看做柱状物,Stixel是3D场景的一种降维表达方式,与其类似的还有particles、quadtrees(四分树)、octtrees(八叉树)、quadrics (二次型)、patchlets、surfels。八叉树在激光雷达领域广泛应用。如果设定Stixel的宽度为5像素,一幅VGA图像就只有128个Stixel,简化后可以大幅度提高效率。
构建一个Stixel场景,一般分四步走。第一步,使用SGM半全局配对法获得视差图;第二步用视差图输入获得自由空间;第三步,设定高度级化分割;第四步,抽出Stixel。
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598416880599578.jpg)
第一步,Stixel构建算法建立在对视差概念的理解上,先对双目图像进行立体匹配。首先根据图像空间(u,v)及视差d,构建完备的视差代价空间Cm (u,v,d)。并采取了半全局立体匹配算法SGM。这种方法基于局部最优的视差求取方法上,通过动态规划来提高计算结果平滑性,最终得到像素映射关系产生的视差图。
第二步,首先要估算出地面,左右图计算视差 d=xl -xr =fb/ z所得图像。其中,xl,xr分别表示对应点在左右两图在全局坐标系(X,Y,Z)中横坐标位置。 f为相机焦距,b 为双目相机基线距离,z 为点为点到相机成像平面距离。同时假定全局坐标系中地面 Z=pY + q。根据相机标定原理,代入坐标公式,可以得到视差 d=mV+n。其中 m,n 都可以通过已知参数进行计算,即全局坐标系中地面可以映射成视差空间中的直线。之后可以通过Hough变换检测直线确定地面。
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598416971589400.jpg)
检测到地面后,用栅格法确定自由空间。图a是亮度编码的网格图,b为减去背景的栅格图,c就是利用动态规划(DP)获得笛卡尔坐标系自由空间栅格图。
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598417108118080.jpg)
上图为高度分割级化流程图,为了满足stixel本身的定义,一根棒状像素,可以视作为同一个元素,也就是说这个棒状像素拥有一致的视差值。这就需要在之前已经得到的地面的基础上对地面之上的像素值进行重新定义与规划。核心步骤就是对像素隶属度(Membership)和代价函数的计算。
假定隶属函数Mu,v(d),当Mu,v(d)为正时表示物体,Mu,v(d)为负时表示背景,定义函数如下
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598417223171326.png)
式中,(u, du) 对应于三维空间内坐标(xu,zu)。再用代价函数运算求边缘值。
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598417395463098.png)
当为边缘点时,c (u, n) 取极值。最后再用动态规划对代价图像进行计算出最佳高度分割值。
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598417478874504.png)
式中,Cs 表示比例因子,mas()表示在深度不连续情况下的平滑度影响,|zu - zu+1| 表示在不同列中的深度差 NZ 则为设定的深度参数。
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598420145381415.jpg)
从图像中获得了每个Stixel 的上下边缘,同时也获得了整体视差。通过投票法将多个连续列整合成较宽Stixel,每个Stixel中都保存有其整体视差值。蓝色区域就是可行驶区域。检测行人方面,用Stixel做先验知识,选取高度在0.4到2.5米之间的棒状像素,刨除了大量背景的干扰,不仅大幅度提高效率也增加准确度。
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598420229555715.jpg)
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598420306953105.jpg)
2011年Rodrigo Benenson、Radu Timofte和 Luc Van Gool联合发表《Stixels estimation without depth map computation》的核心思想见上图,左图为用SAD计算全深度图,中间为用CSBP计算全深度图,最右边则是无需任何深度计算,直接用代价函数矩阵获得Stixel。
2017年奔驰研发中心环境感知部联合奔驰北美研发中心、德国达姆施塔特工业大学 (Technische Universität Darmstadt)、Microsoft HoloLens小组、瑞士苏黎世理工学院计算机视觉系发表《The Stixel World: A Medium-Level Representation of Traffic Scenes》
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598420404241800.jpg)
语义分割与Stixel结合
![](http://www.shujubang.com/UpLoads/Special/File/2018_04/636598420500055980.jpg)
Stixel用视差颜色编码,红色代表近距离,绿色代表远距离
目前奔驰还是用D-CNN来做语义分割,未来奔驰打算演化为非深度学习的SVM。届时就解决深度学习是个黑盒子无法用于汽车领域的困境,也大大降低了运算资源的消耗,大大降低整体成本。作为一家传统车企,以实用角度看,奔驰在计算机视觉领域内的成绩不次于包括谷歌在内的任何一家科技类企业。
奔驰一开始就是瞄准实用量产车辆应用的。实际奔驰在2013年的S级轿车上不增加任何传感器即可实现L3+级无人驾驶,但摄像头毕竟不是激光雷达,容易受环境影响。奔驰不像某些企业,明明是L2的水平,大肆吹嘘成L4。