1、引言
汽车驾驶是涉及驾驶员、汽车、道路三方面因素的动作行为。驾驶员通过眼睛等一系列生理器官感受道路信息,通过对道路信息的理解和判断,及对汽车行驶状况的跟踪,做出一系列的驾驶决策。但是由于驾驶员长时间驾驶、粗心大意等一系列因素及驾驶员对道路信息的感知和车辆状况的了解存在一定的“盲区”,导致的交通事故越来越成为社会的一大主要安全隐患。本文从驾驶员、汽车、道路三方面入手,研究一套模拟人的驾驶行为来提高车辆行驶安全性的汽车主动安全系统,实现车道偏离预警等主动安全技术。
在基于机器视觉的系统中,实时性一直是一个主要的问题,尤其是像车道偏离预警这样的系统来说,要实现的算法更是覆盖了从图像预处理到高层视觉计算的整个视觉计算流程,既有底层的可高度并行实现的大数据量的卷积、灰度变换等规整算法,也包含有中层的特征提取等模式识别算法及高层的一些视觉处理方法,用以实现对道路的理解等。一直以来,嵌入式系统的通用性与效率一直是难以调和的一对矛盾[1],如何构造一套较通用的视觉处理系统,对于视觉各个层次的并行及串行算法,都具有较高的实现效率是本文要解决的一个问题,高速的DSP 处理芯片和大规模可重构芯片的出现为我们提供了一个很好的解决方案。
大规模的可重构芯片,诸如 FPGA 等,内部集成了大容量的基于查找表结构的门电路系统,非常适合构造细粒度的SIMD 处理阵列或者流水线结构,而这对于如图2 所示的典型的底层图像处理算法[1],具有着天然的适应性。TI 公司的C6000 系列的DSP 计算芯片,采用哈佛结构,内部具有8 个处理单元,还集成了专用的硬件乘法器,适合于完成一些串行的视觉处理算法,对于高层的数据量较少的但运算过程较复杂的道路理解等,具有较好的实现效果。
基于上面的分析,本文结合高速的 DSP 计算芯片和可重构的FPGA 芯片构造一套高速的嵌入式视觉处理系统,FPGA 作为辅助逻辑控制和前端处理模块,主要完成图像的前期采集和一些类似直方图统计、卷积等底层的高密度图像处理工作,可在硬件结构上灵活的配置,通过实现一系列的并行结构或流水线结构完成底层的算法,避免由DSP 完成这些细粒度的算法而造成资源的浪费和时间上的损耗;DSP 作为主要的计算中心,完成高层的串行为主的视觉处理任务,诸如道路理解和解释、车道跑偏决策等,DSP 的高速处理能力能较好的完成这些串行度高的算法。系统的基本框图如图2 所示。
2、系统设计与实现
实现图 2 的基于视觉的汽车主动安全系统,数据的存储和传输是一个主要的问题,尤其是对于汽车主动安全这样的实时性要求非常高的应用背景。如何在最短的时间内,由原始采集到的图像数据,经过一系列的存储器数据搬移及信号处理过程,获得最终的对道路的理解判断,并对车辆是否跑偏做出正确的决策,是本系统主要的实现目标。本文将依据数据在系统中的“流动”顺序对本系统进行详细的介绍。
2.1、数据采集模块
在本系统中,图像数据是主要的传感器信号,获得高质量的图像数据对后期的处理和功能的实现具有较大的意义。但是对于实际的应用环境,由于天气、光照等因素的影响,甚至是一系列特殊情况的出现,一般的图像传感器在各种条件下难以具有较好的鲁棒性。为了较好的适应各种道路和天气状况,保证驾驶的安全性,我们采用了适合道路使用的CMOS 数字摄像头芯片自主开发了视觉采集模块,该摄像头芯片通过159 位SPI 控制字可完全编程控制,较好的实现对曝光时间、增益和噪声等的调节。同时,该摄像头芯片采用了一种多斜率的曝光模式输出,在不同的曝光模式下,控制曝光的时间也是不一样的,保证在光照过强或者光照条件非常弱的情况下,都可获得较好的图像。
对于摄像头芯片的SPI 控制,本文为了自适应的调整在不同背景下的工作模式,由DSP根据最后对图像的理解和判断的结果,给予FPGA 一定的通信信号完成对摄像头芯片的顶层的系统级的控制,而底层的真正的SPI 控制字的修改和调整则由FPGA 来完成,这样可避免SPI 的工作频率和DSP 外部总线频率的不一致而导致的DSP 工作效率的浪费,而FPGA来完成这样的工作则比较容易。
2.2、数据传输、存储模块
在本系统中,从前端的图像采集模块,到最后的报警信号的输出,数据是不停的在FPGA、SDRAM 及DSP 之间进行传输和搬移,接下来主要讨论如何在这三者之间进行高速有效的搬移和处理,这也正是本文的主要模块。系统中的数据流程主要有以下几个方面:
Ⅰ、在 FPGA 中经过预处理的图像数据,首先必须存储到主存储芯片SDRAM 中,这是后端高层处理的基础。
Ⅱ、DSP从SDRAM中读取最新的图像数据进行处理,并将处理的中间结果存于SDRAM中,这样的读写过程很可能是循环进行的,SDRAM 的分块存储特性正适合这样的性能要求。
Ⅲ、为了系统调试的方便,很可能要求显示中间处理的结果,因此我们在 FPGA 上挂接了一块显示调试模块,调试时FPGA 可从SDRAM 中读取中间的处理结果进行显示。
Ⅳ、还有一种情况,某些情况下我们可能要求 DSP 和FPGA 之间直接进行图像数据的传输,这也是我们必须考虑的范畴。
综合上面的种种可能情况,考虑我们采用的 DSP 芯片同时支持FIFO 和SDRAM 芯片的无缝连接,我们设计了图3 的数据传输方案: |