摘要: 智能交通系统中需要的关键数据为道路的占有率、车流量、行车速度等。本文介绍了基于TMS320DM642的数字图像车流量检测系统,阐明了该嵌入式视觉系统的硬件组成原理及软件结构和车流量检测算法。系统与现有的信号机联调测试,证明其稳定可靠、识别率高、体积小、成本低、实时性好,能实时检测十字路口道路的车流量信息。
关键词:TMS320DM642;数字视频处理;车流量检测;智能交通系统;虚拟线圈
引言
随着人口数量的增长,给交通带来的压力越来越大,智能交通系统成为近些年研究的热点。车流量检测是智能交通的基础部分,在系统中占有重要地位。目前有多种方法检测车流量,例如:电磁感应装置法和车流信息的超声波检测法。而实际上,前进中的车辆速度、种类始终变化,所以普遍存在反射信号不稳定,测量误差大的问题。与以上方法相比,基于视频的车流量检测方法具有许多优点:从视频图像中提取可靠信息,完成道路交通的监视工作,可提高道路、车辆的自动化程度;交通监视控制系统中安装的视频摄像机比安装其它传感器更经济、且破坏性低;实际道路交通系统中已经安装了许多摄像机用于道路交通监视和控制,可一举两得。
现有的传统视频检测方法基于工控机,其算法成熟,且已形成相关产品。但其也有缺点:一是由于通用CPU没有专用的硬件乘法器,故很难实现图像的时实性处理。二是采用通用工控机,运行Windows系统,成本高,要时刻关心机器有没死机,系统有没感染病毒,操作系统的补丁升级等问题。基于以上两点,本文提出了基于TMS320DM642(下简称DM642 )的嵌入式图像识别方案,解决了存在的问题。
车流量检测系统的原理与组成
车流量检测系统的工作原理
车流量检测系统是由视频采集、车流量数字视频信号处理、不同环境下车流量检测算法、以及车流量检测结果输出等几部分组成。数字图像采集部分的核心芯片是TVP5150,它可将模拟视频信号转换为数字视频信号。DM642运行图像算法对采集进来的图像进行数字图像处理。车流量数字视频检测算法白天主要是使用改进后的帧差法进行运动检测,夜间使用车灯检测法。按照车道将采集到的公路图像化分为四部分,每部分对应一条车道。在每条车道中开设一个虚拟线圈(指图像中一个矩形检测区域,统称为虚拟线圈),当有车压过虚拟线圈时会引起虚拟线圈内像素值发生变化。根据此变化控制I/O口产生每条车道的相应脉冲,处理后发出脉冲给公路交通信号机,控制交通灯,从而达到实现智能交通的目的。同时,可以通过网络将车流量信息传到监控中心。
车流量检测系统硬件
DM642是德州仪器公司专门为多路视频输入输出设计的数字信号处理芯片。其运算功能强大,建立在第二代高性能超长指令字结构上,可以8条指令并行执行,使这款芯片非常适用于数字图像处理。考虑到实际工作的要求和系统的稳定性,将DM642的主频设置为600MHz。根据实际应用环境和嵌入式系统的需要,系统除了扩展了系统必须的存储器部分和视频采集回放部分外,主要扩展了多路数字I/O和异步串口以及网络接口功能,方便系统与外部通信。具体硬件实物如图1所示。说明如下:外扩SDRAM,容量为4M×64位;外扩Flash,容量为4M×8位;2路PAL/NTSC标准模拟视频输入(CVBS或S端子),1路PAL/NTSC标准模拟视频输出;通过CPLD扩展8路数字I/O口,用于输出车道上车流的信息;2路UART接口,接口标准RS232/RS422/RS485可配置;实时时钟RTC+看门狗电路;10M/100Mbase-TX标准以太网接口。
图1 硬件实物图
系统组成如图2所示,在图中TMS320DM642通过64位宽的EMIF(External Memory Interface)总线扩展外部存储器部分,包括32Mbytes的Synchronous DRAM,用于存放实际运行时用户代码和图像数据。4Mbytes的Flash用于存放bootloader,以及用户的应用程序,启动时将FLASH中的代码和数据加载到内存中(SDRAM中),用户对与虚拟线圈的配置参数也可以存放在FLASH中。SDRAM的数据宽度为64位,FLASH的数据宽度为8位,分别对应TMS320DM642的CE0和CE1空间。同样地,通用异步收发器UART(Universal Asynchronous Receiver)和CPLD(Complex Programmable Logic Device)也是通过EMIF总线与DM642相连。UART用来扩展串口,本系统中可用其扩展了RS232接口。CPLD用来实现FLASH和UART的粘合逻辑及扩展通用数字I/O。为了方便软件的实现,本系统中将这两部分也连接到了DM642的CE1空间,其内部寄存器作为CE1存储空间的一部分。
图2系统组成图
视频采集输出部分
为了统计十字路口车流量的信息,本系统设计了两路模拟视频输入。系统将摄像头采集的模拟视频信号由TVP5150按ITU-R BT.656转化为数字视频流,内嵌同步信号发送到DM642的VP1口和VP2口上。图像的行同步、场同步信号均内嵌在视频数据流中的EAV和SAV时基信号中,视频口只需要视频采样时钟和采样使能信号即可。DM642可通过FIFO实现数字视频图像三帧连续采集,当有一帧图像正在处理时,其它两个缓冲区还可以实现图像的循环采集,从而解决了恒速的视频采集与变速的图像处理之间的矛盾。本系统扩展了一路视频输出,用于本地回放,当系统调试完毕后此部分功能可以不使用。视频输出由Phillips公司(现更名为NXP)的SAA7121芯片实现。SAA7121将DM642的VP0口传出的数字视频信号转化为PAL(50Hz)制式或者NTSC(60Hz)制式模拟信号送外接视频口输出。
软件部分
车流量统计算法
由于白天和晚上路面光强变化非常大,这对算法的适应性提出了更高的要求,为了能全天得到车流量的信息,所以整个算法将白天和晚上分别开来处理。程序结合当时光线的不同情况,对两种算法进行自动的切换,从而保障整个算法的运行环境。
图3夜间算法流程图
·虚拟线圈的选取
虚拟线圈的选取关系到检测算法的精度和速度,并且受到摄像头安装的高度和倾角,以及摄像头景深的影响。一般情况下,虚拟线圈靠近图像底部的位置,车辆的间距较大,便于检测。虚拟线圈越大,相对检测精度就越高,相应的算法执行的时间也会越长。由于整个系统要适应各种路口、路面,所以虚拟线圈的选取交给了用户。我们用VC6.0开发了PC机软件,用户使用此软件,通过串口,对各个车道的虚拟线圈的大小和位置进行设置。
·相邻检测帧的时间间隔
由于整个系统要与信号机通信,所以要求我们处理每条道路上图像的总时间不能超过0.25秒。这里选取每帧相隔0.125秒。
·车流量检测算法
由于白天使用改进后的帧差法已经在PC上有很成熟的应用。如公式1所示:
i=1,2,3,......80, j=1,2,3,......10
在公式1中,E保存帧差后的检测窗平均值,R是当前帧检测窗灰度值,R'是前一帧检测窗灰度值,m,n为虚拟线圈的长宽,在此就不再赘述。
晚上的路面能见度比较低,算法主要是对车灯的识别。在晚上,车灯有很强的亮度,所以只要能正确的检测到车灯就可以进行车辆的测量。算法的干扰来自路面对车灯发出来的光线的反射。通过使用Matlab仿真试验后发现,二值化去噪以后,车灯的亮斑基本上是车灯的形状,而路面反光区向前发散,据此可以通过检测窗上亮斑的形状特征来识别车灯和路面反光区。夜间的算法如图2夜间算法流程图所示。对虚拟线圈二值化的阈值选取是通过大津法得到的,与经验法相比,大津法是通过计算方差得到阈值,环境适应能力比较强,但这也增加了算法的时间和空间复杂度。图像去噪是使用3×3的中值滤波器,我们对其进行了快速算法的改进,并且只对虚拟线圈进行。
采集到路面原始灰度图像如图4,图5为其二值化处理后的图像,图中矩形区域为虚拟线圈,线圈中有两个白色区域。以像素为单位,根据白色区域的最大长宽比确定是否为车灯。车灯对应的白色区域长一般长小于等于宽,如图6所示。路面反光对应的白色区域长大于宽如图9所示,虚拟线圈内的白色区域为路面反光。
图4夜间路面灰度图
图5路面二值化后图
图6虚拟线圈
图7夜间路面灰度图
图8路面二值化后图
图9虚拟线圈
系统基于DSP/BIOS的软件框架
系统软件开发环境为CCS,使用了TI提供的DSP/BIOS内核以及TI倡导的RF5软件参考框架。通过DSP/BIOS,配置了输入、处理、输出等线程,这些线程之间的同步通过旗语进行。使用DSP/BIOS内核,配置DSP/BIOS方便易行,便于更改,比传统方法有许多优势。使用DSP软件架构RF5(Reference Framework 5),大大缩短了开发时间,同时也最大限度的保证了代码的可移植性和健壮性。软件架构从下往上依次为CSL(芯片支持库)、DSP/BIOS以及Driver层,信号处理库层,算法标准层,这三层构成RF5,最上面一层是用户应用程序层。用户修改维护代码方便,只需要上层改动即可。
输入驱动采用TI公司提供的FVID类驱动,如图10所示,此驱动通过对结构体配置参数,实现DM642的IIC模块对视频采集口,以及对A/D转换芯片TVP5150的配置,使TVP5150输出PAL制式的数字视频流,并将采集到的图像通过视频口的FIFO写入到指定内存区。当图像采集完成后,通过旗语发送消息给处理模块,消息结构存储了图像数据所在内存的空间的首地址。随后输入模块等待输出模块的回复,以继续处理下一帧的图像。处理模块负责执行车流量统计算法。从输入模块发送的消息结构中提取图像数据地址,以进行图像算法处理,运算结果通过CPLD扩展的I/O口输出,将车流量的监测信息传给信号机。
代码优化
程序主要用C语言编写,一些核心的代码要满足实时性的要求进行了汇编优化。C语言程序优化的好坏直接影响程序的效率。程序中广泛运用以空间换时间的方法来提高代码的运行效率。代码优化的方法比较多,主要的方法有:编译器优化,在编译时选择不同的编译优化选项,如-pm-oe选项;优化C语言编写的代码,加入常用的指示性信息如#Pragma MUST_ITERATE等;编写线性汇编程序,提高程序运行速度;编写汇编程序,实现软件流水。排流水线可以使用多种技术手段,如依赖图和迭代间隔时序表。在TI提供的技术文档中有详细描述,这里不再重复。
图10 视频采集驱动程序结构
实验结果与分析
为验证车流量检测系统的可靠性,将算法移植入检测系统,在多处公路天桥上使用三角架安装摄像头进行了实际检测试验。由于天桥上有一定数量的行人,导致天桥轻微晃动,对摄像头的稳定性有一定影响。另外车辆骑线现象等造成检测结果有一定误差,但是检测效果依然良好。一组测试如表1车流量检测结果所示,在自然环境下,采集图像大小为720×576。其中白天的测量时间为下午3点27分,晚上的时间为下午6点50分,天气晴朗,测试地点为北京市海淀区学院路的两条车道。采用CCD大小为1/3英寸。镜头焦距为3.5~8mm, 最大孔径比为1:1.4。
表1车流量检测结果
从表1车流量检测结果中得知,白天视频检测的结果略好,夜间车灯的形状和亮度有较大差异,有一定误差,但系统识别准确率都在80%以上。试验证明了该方法检测精度高,实现成本低,系统运行可靠。
参考文献:
1. TI,TMS320DM642 Video/Imaging Fixed-point Digital Signal Processor (Literature Number: SPRS200F)[Z].Dallas: TI,2004.
2. Anon,TMS320DM642 Evaluation Module Technical Reference SPECTRUM DIGITAL[Z].
[S.L]:INC.2003.
3.李芳惠,TMS320C6000系列DSPs原理与应用(第二版)[M],北京:电子工业出版社,2003
4.TI.TMS320C6000 DSP External Memory Interface Reference Guide(Literature Number: SPRU266B)[Z].Dallas:TI,2004
5.TI.TMS320C64x Image/Video Processing Library Programmer’s Reference (Literature Number:SPRU023B)[Z].Dallas:TI,2003
6.陈兵旗,Visual C++实用图像处理,北京:清华大学出版社,2004
7.TI.TMS320C6000 DSP/BIOS Application Programming Interface (API)Reference Guide (Literature Number:SPRU403F)[Z].Dallas:TI,2004.