未来十年,为了完成从感知+预警到决策+执行的进化之路,高级辅助驾驶系统(ADAS)将接入更多的传感器,实现更为复杂的计算,同时具备更高的安全性。
双目视觉简介
双目视觉简介
相比于单目视觉,双目视觉(Stereo Vision)的关键区别在于可以利用双摄像头从不同角度对同一目标成像,从而获取视差信息,推算目标距离。具体到视觉ADAS应用来说,如果采用单目摄 像头,为了识别行人和车辆等目标,通常需要大规模的数据采集和训练来完成机器学习算法,并且难以识别不规则物体;而利用毫米波雷达和激光雷达进行测距的精 度虽然较高,但是成本和难度亦较高。所以,双目视觉的最大优势在于维持开发成本较低的前提下,实现一定精度的目标识别和测距,完成FCW(前方碰撞预警) 等ADAS功能。
双目视觉测距的基本原理并不复杂,如下图所示,P为目标点,它在左右两个相机(镜头中心分别为A和B)上的成像点分别为E和F,则P点在两个相机中 的视差为d=EC+DF。根据三角形ACE与POA以及三角形BDF与POB的相似性,推导可得d=(fq)/z,其中f为相机焦距,q为两相机光轴的距 离,z为目标到相机平面的距离。则距离z=(fq)/d,而f和q可认为是固定参数,所以求出视差信号d即可求得距离z。
双目视觉测距原理
根据双目视觉的测距原理,通常将其实现过程分为五个步骤:相机标定,图像获取,图像预处理,特征提取与立体匹配,三维重构。其中,相机标定是为了得 到相机的内外参数和畸变系数等,可以离线进行;而左右相机图像获取的同步性,图像预处理的质量和一致性,以及立体匹配(获取视差信息)和三维重构(获取距离信息)算法的实时性要求带来的巨大运算量,对在嵌入式平台上实现双目视觉ADAS提出了挑战。
单目和双目详细对比
视觉方案要完成ADAS任务,一般要实现测距(本车与前方障碍物距离)和识别(障碍物是什么)两项工作。按照车载摄像头模组的不同,目前主流ADAS摄像头可以分为单目和双目两种技术路线。
单目摄像头的算法思路是先识别后测距:首先通过图像匹配进行识别,然后根据图像大小和高度进一步估算障碍与本车时间。在识别和估算阶段,都需要和建立的样本数据库进行比较。想要识别各种车,就要建立车型数据库,想要识别麋鹿,就要建立麋鹿数据库。
双目摄像头的算法思路是先测距后识别:首先利用视差直接测量物体与车的距离,原理和人眼类似。两只眼睛看同一个物体时,会存在视差,也就是分别闭上左右眼睛 看物体时,会发现感官上的位移。这种位移大小可以进一步测量出目标物体的远近。然后在识别阶段,双目仍然要利用单目一样的特征提取和深度学习等算法,进一 步识别障碍物到底是什么。
因为视差越远越小的缘故,业内有观点认为,双目在20米内有明显的测距优势,在20米距离外,视差减小测距存在难度,可以用高像素摄像头和更优秀的算法来提升测距性能,该处是难点也是核心竞争力。
双目镜头间距和测距是两个此消彼长的参数,镜头间距越小,检测距离越近,镜头间距越大,检测距离越远。考虑车内美观和ADAS需要,小尺寸远距离双目产品更受欢迎。
因为增加了一个镜头,带来更多运算量,整个摄像头模组的性能要求和成本都更高了。而且在两者都有的标定工作上,双目要比单目更加复杂。而且选择双目方案切入市场并不能完全绕开单目方案的难点,在第二个阶段,你依然要需要一个庞大的数据库,依然需要打磨算法。
单双目比较
除了单双目之外,还有多摄像头组成的平台。有的方案中选用长焦和广角摄像头于ADAS主摄像头配合,兼顾周围环境与远处物体探测。比如Mobileye方案,在下文会介绍。
也有在环视平台上叠加ADAS功能的情况。例如对于环视做车道偏离预警(LDW),与单目实现该功能比有一定优势。在大雨天气或者前方强光源的情况下,前视摄像头有可能看不清车道线,环视摄像头斜向下看车道线且可以提供多个角度,基本不会受到地面积水反光的影响,功能可以比前视做得更稳定。但同时也要考虑侧向无车灯照射时,摄像头的夜间表现。
这几种方案在技术路线上和单目没有本质差别,更多是基于不同平台,发挥不同类型摄像头模组的优势分配任务,或者提供更多视角来解决一些复杂环境中单目势单力薄的情况。
方案示例:基于S32V234的双目视觉ADAS解决方案
恩智浦视觉ADAS专用SoC: S32V234结构图
S32V234采用了4颗ARM Cortex A53作为核心CPU,以获得更高的性能功耗比。另外,S32V234包含了一颗ARM Cortex M4来作为片上MCU,主要用于关键IO(如CAN-FD)的实时控制,并支持AutoSAR操作系统。
芯片集成了两路MIPI-CSI2和两路16bit并行相机接口,以及Gbit以太网控制器,为图像传感器的输入提供了多种选择。同时芯片内部包含 了可编程的图像信号处理(ISP)硬件模块。利用嵌入式ISP,外部配搭的图像传感器可以输出raw data,从而降低物料成本,节省空间尺寸。另外,芯片还包含了两个名为APEX2CL的视觉加速引擎。每个APEX2CL拥有64个本地计算单元 (CU),并配有本地内存,通过SIMD/MIMD(单指令多数据/多指令多数据)的处理方式对图像识别过程进行加速。
另外值得指出的是,考虑到ADAS系统对安全性和可靠性的严苛需求,S32V234在设计时加入了诸如ECC(错误检查与纠正),FCCU(故障收 集与控制单元),M/L BIST(内存/逻辑内置自测)等多种安全机制,能够满足ISO26262 ASIL B~C的需求。
S32V234片上具有两路MIPI-CSI2相机接口,每一路最大可提供6Gbps的传输速率,可用于左右两路相机的视频输入。由于两路相机分别 输入两个MIPI通道,需要考虑二者之间的同步问题。在外部图像传感器的配合下,S23V324能够支持不同的同步方式。如图3所示,图像传感器通常具有 场同步信号(VSYNC)和行同步信号(HSYNC)来进行信号同步:当两路相机工作在主从模式时,由Master向Slave发送同步信号;当两路相机 都工作在从模式时,可以由S32V234内部定时器产生同步信号,同时发送给两路相机。
双目相机同步方案
在S32V234获取外部相机的图像信号后,可以由内部的ISP进行预处理。ISP模块包含多个针对ISP功能进行优化的处理单元,利用片上 SRAM对输入信号和中间处理结果进行缓存,并采用一个基于ARM Cortex M0+的专用协处理器来管理ISP处理单元的时序,从而实现图像信号的像素级处理。由于ISP位于芯片内部并且可以灵活编程,所以不仅能够节省双目相机外置ISP的成本,而且其运算资源和带宽能够支持对双路高达1080p@30fps图像信号的实时处理,保证了双路图像信号的质量和一致性。
在双目视觉ADAS应用中,最大的挑战来自于对两路图像进行立体匹配和三维重构所需要的巨大运算量。以FCW应用为例,既要求视差信号的提取具有足够的精度以保证测距精度,又要求处理帧频维持一定水平以保证预警的响应速度,因此要求嵌入式平台具有足够的处理能力。S32V234中集成的图像加速引擎 APEX2的结构如图4所示,其并行计算结构和专用DMA等设计保证了对图像信号具有极高的处理效率。具体来说,ISP对图像信号预处理完毕后送入DDR,APEX2引擎将图像分割后经由专用DMA将其送入每个CU对应的本地内存CMEM中,而立体匹配所需要的块匹配(Block Matching)等算法可以在不同的CU中并行处理,处理完毕后的数据经由DMA送回DDR,由CPU进行进一步处理(如生成预警信号),或送至专门的 DCU(Display Control Unit)模块输出显示。
APEX2架构及图像处理示意图
综上所述,基于S32V234的双目视觉应用数据流如图5所示。在该应用中,数据流按照ISP-APEX2-DCU的方向流动,A53作为主控CPU完成逻辑控制和必要的数据处理。通过这种流水线式的处理方式,可以使各部分计算资源充分利用,提高计算效率。
基于S32V234的双目视觉数据流
利用S32V234开发板搭建双目视觉平台,对双路720p@30fps视频信号进行处理,其输出结果如图6所示。其中从上至下的三幅图中目标与相机的距离分别为1m,2m,3m,显示结果以冷暖色调的变化表征目标距离。结果表明,S32V234能够对双目视觉信号进行实时处理,正确得到三维测距结果,同时辅以芯片的各项安全性设计,可以满足双目视觉ADAS系统的需求。