利用多核Blackfin处理器实现基于摄像头的交通标志识别
引言
汽车行业对于基于摄像头的驾驶员辅助系统的需求在不断增长。交通标志识别是一个正在受到人们高度重视的应用领域,因为它可望改善驾驶员和乘客在公路行驶过程中的安全性。交通标志识别目前仍是一种高端选项,需要政府和领先的汽车厂商们联手进行推广,才能开辟大规模的市场。它是图像识别技术的一个实例,可以应用到车辆和工业设计的多个方面。交通标志识别建立在模式识别算法基础上,这些算法目前已经很好地为机器视觉方面的专家们所掌握。
毫无疑问,即使对于先进的通用处理器而言,经典的模式识别算法就已经足以让其应接不暇。对于这种类型的信号处理应用来说,选择一种可以有效应对特定计算和I/O操作挑战的处理器架构是非常有利的,这些挑战是在寻找交通信号图像的过程中所涉及的连续视频流处理所固有的。关键的一点在于,算法的代码实现必须能够保证尽可能高的速度和效率。
本文详细介绍了一种基于摄像头的交通标志识别系统,该系统以ADI公司低功耗、低成本的嵌入式DSP—Blackfin处理器为核心。我们将展示一种高效率的软件架构设计,并运用滤波器模块算法来实现交通标志识别的应用。文中对各种结果进行了比较,并给出为了能更好地利用现有计算性能而可以采取的步骤。
基于摄像头的驾驶员辅助系统
基于摄像头的典型模式识别系统由视频摄像头和显示器组成,它们都连接到处理器的I/O接口上,处理器则控制着系统的运行,并执行所需的信号处理功能。系统往往需要外接SDRAM,为从输入视频流中提取道路标志信息的视频处理功能提供所需的存储器空间。图1示出了该典型系统的方框图。虽然在最终应用中不一定会部署显示器,但它有助于进行应用开发和演示。
领先的汽车厂商将高品质的CMOS图像传感器用作驾驶员辅助系统的视频信号源。目前,大多数摄像头都可以捕捉VGA尺寸(640×480像素)的灰度图像,并具有10比特的灰阶深度。帧速率一般达到了30帧/s,CMOS传感器的灵敏度使其既适用于低光照环境和夜间,也适用于艳阳高照和有光线直射的情况。未来的应用将需要具有更大的帧尺寸和色彩分辨能力的传感器。在本文的示例中,摄像头提供彩色图像,该图像以亮度/色度 YUV差分图像格式传送。大多数传感器是由一个外部时钟发生器驱动的,通过一条宽度达10比特的同步并行数据总线提供图像数据。两路附加的信号用于实现行宽度和场高度的同步。
TFT显示
LCD TFT显示器在汽车仪表板上已经十分常见,它需要系统提供RGB图像数据。每个显示器的像素都需要3基色(红、绿和蓝)的输入数值。捕捉和显示之间图像格式的不匹配在视频系统中是很常见的现象,在RGB和YUV格式之间实现转换的色彩空间变换算法也已经广为人知。图2示出TFT显示器与处理器之间的连接。
多核嵌入式处理器加速信号处理
本文中的驾驶员辅助系统所采用的中央处理器是Blackfin BF561。Blackfin架构是针对信号和图像处理应用而开发的,可以提供算术和逻辑单元(ALU),它允许指令流在不同数据上并行执行。正如在引言部分所提到的那样,由于具有高效率的信号处理指令集和硬件功能特色,专为信号处理应用设计的处理器可以确保滤波和模式匹配算法能够高效率和灵活地运行。BF561 Blackfin是一款双核处理器,具有两个对称的处理器内核,因此可为应用提供约两倍的计算能力。
我们已经提到了用作捕捉和显示视频接口的并行I/O 端口。此外,Blackfin处理器提供了大量的其他接口,如用作普通系统级接口的I2C和NAND FLASH接口,以及用于在特定应用环境中运行的接口,比如汽车系统中经常用到的CAN总线和MOST总线。
软件架构
我们用软件架构一词来概括对系统进行控制的软件。它是指包括了系统状态机的控制代码。该控制代码配置系统的所有接口,按预定的顺序调用所需要的滤波器模块,启动DMA数据传送,并同步那些暂停或反复处理的事件。
处理器内核
处理器内核运行控制软件并执行数学计算。每个Blackfin处理器内核都拥有两个算术和逻辑单元(ALU),最多允许同时执行4项计算。读、写操作用于从存储器中检索出计算所需的数据,并将结果保存下来。下面示出了一条宽度最大的指令。该指令可以同时在每个内核上都执行两次独立的乘法,以及随后进行的加法和两次载入操作。
R4.l=(A0+=R0.l*R1.l), R4.h=(A1+=R0.h*R1.h) || R0=[I0++] || R1=[I1++];
如果由于地址冲突,该最大宽度指令无法被调用,则可以执行该并行化指令的一部分。下面是几个例子:
R4.l=(A0+=R0.l*R1.l), R4.h=(A1+=R0.h*R1.h) || R0=[I0++] || NOP
MNOP || R0=[I0++] || R1=[I1++];
A0+=R0.l*R1.l || R0.l=w[I0++] || R1.l=w[I1++];
可以并行执行的操作种类举不胜举,但需要考虑硬件实现方面的相互制约。
评论