基于FPGA+DSP的智能车全景视觉系统
基于单相机的全景视觉系统是利用凸面镜反射四周图像进行定位,在计算资源有限时是一种较好的选择,且视觉导航等方向的应用也成为一种最实用的方法[1-2],这种方案虽然视野开阔,但获取的信息有限,真实的系统中很难应用。随着芯片计算能力的不断提高,基于多通道的全景视觉系统已逐渐成为可能。本文介绍的智能车多通道全景视觉是指以观测点为中心,多个相机可同时观测车辆的前中、前左、前右、后左、后右和顶上6个方向的景物。该系统中的6台数字相机中5台分布在车辆的侧面,1台在顶部,可以得到车辆周围全景360°的图像。该系统每个相机的分辨率为百万像素,即1 280×1 024,帧率为30 f/s,即便图像为8 bit单色,系统的总数据率也高达200 MB/s以上。同时,6个相机图像需要预处理,投影到同一坐标系,或者拼接成单幅完整图像才能满足智能车导航系统的要求,这些涉及到大量复杂计算。针对这些要求,该系统的硬件处理部分利用了DSP和FPGA芯片各自的特长,选用高速DSP+FPGA[3-6]的方案,而DSP方案也是海量图像处理中普遍应用的[7]。高性能通用C6416 DSP芯片,配合FPGA进行高度并行数据处理,可实现高速实时的视觉图像处理。这种方案的优点在于,不仅可以利用DSP的高速处理能力,同时利用FPGA的控制能力和在高度并行化数据处理方面的优势,相比其他方案更容易满足全景视觉系统所需要的高度实时处理。
1 系统总体方案设计
为适合高速图像采集,本系统选用CMOS传感器,CMOS的一个优点是数据读取速度快。系统由高速CMOS相机、基于CamLink技术的图像读取、FPGA+DSP的图像处理三部分构成,如图1所示。从图1可以看出,该系统有两片FPGA,图像读取模块中的FPGA1负责从CMOS相机抓图和通讯控制,FPGA2则辅助两片DSP进行高速图像处理,实现同时对6个相机图像的实时处理。
逻辑控制芯片FPGA1选用XILINX公司的XC3S1000LFG456作为视频数据采集控制芯片,该芯片是Spartan3低功耗系列的一种,具有1 M个逻辑门,24个18×18乘法器及丰富的片上存储空间,足够进行视频采集的同步逻辑控制。并行计算FPGA选用XILINX公司Virtex-4系列中的XC4VFX60-FF1152,内部有4 Mbit RAM,56 880个逻辑门和128个XtremeDSP模块,足够进行大量高速数据处理,特别是片上18 KRAM模块工作在500 MHz,支持真正的双端口读写同步操作,为该芯片作为芯片间高速数据交互提供了资源。2个协处理DSP芯片为TI公司高性能C6416,拥有8个并行处理单元,工作频率为600 Hz,最高处理速度可达4 800 兆指令/秒(MFLOPS)。
系统设计采集图像大小为1 280×1 024像素,最高速度可达每相机60 f/s的实时采集。6路摄像头输出的数字视频信号经过FPGA1进行同步分离后,进入输入端高速数据缓冲区。系统采用两片ZBT SRAM进行乒乓数据采集,当一帧图像采集完,FPGA1通知FPGA2进行数据转移,FPGA2将数据预处理后由DSP经EDMA保存到SRAM后等待进一步处理。
2 多通道数字图像采集
由于智能车的目标是在公路上行驶,该系统需要处理场景中快速运动的物体,要求图像采集模块必须足够快地从相机转移出帧数据,以便对快速运动的物体轨迹进行记录,因此,相机模块的处理速度是决定该系统是否达到要求的重要一环。由于相机技术的快速发展,已经能从市面上买到足够快的传感器来捕获高速运动的物体,如车辆。
2.1 图像抓取模块
MT9M413是一种分辨率为130万像素1 280×1 024的CMOS传感器,最高可实现500 fps的采集速度。而MT9M413内部集成有10 bit A/D转换器,可直接输出3.3 V的数字信号,无需电平转换电路,简化了系统的设计。MT9M413可以工作在灰度或彩色模式下,但是却需要不同的偏置参考电压,两片数模转化芯片DAC6573用于生成该偏置电压。图2给出了相机模块的框图。
高速相机模块主要包括以下三部分:
(1)传感器部分:包括高速像素时钟下的光电信号转换传感器。
(2)信号分离:预先编写好在FPGA1内部的程序,用来产生传感器模块和数据接口所需要的控制信号。
(3)接口板:将数字信号转换成高速LVDS信号对,并从主处模块接收控制信号。
该模块的三个部分通过高速Samtec连接器(QTH-090-01-L-D-A)连在一起,以增加系统的灵活性。主处理板与高速相机模块间采用CamLink协议连接,以满足系统很高的带宽。根据采集图像的大小、帧率和数据位精度,CamLink电路可配置成基本、中等、全幅3种模式,由FPGA1中的程序控制。FPGA1的另一个任务是进行视频信号的同步、通知FPGA2设置参数,如视频开窗、帧率、曝光时间等。
2.2 FPGA控制模块
系统的逻辑控制芯片是FG456,其主要工作是控制输入/输出帧存,以便通知主处理芯片及时将存在ZBT SRAM中的图像数据读出,片上可编程时钟PLL用来产生驱动该FPGA所需的不同时钟,FPGA内部的计数器通过改变加法器不同的进位信号控制采集图像的大小。
FPGA1接收到来自CMOS传感器的视频同步信号后,开始将原始像素数据按照CamLink协议打包通过高速Semtec连接器送到下一个模块中的FPGA2。
2.3 ZBT-RAM中的数据乒乓
系统设计的视频信号采集能力是,从CMOS采集到1 024×1 024大小的数字图像,并通过两片Zero-bus turnaround(ZBT) SRAM作为数据乒乓的帧缓存,ZBT SRAM没有总线延迟,不需像DDR那样必须通过FIFO进行管理。ZBT SRAM为系统提供了最大的吞吐量,从而提供了最大的系统带宽[8-9]。为保证系统的高速性能,FPGA1的3个内部时钟管理模块DCMs用来产生ZBT-RAM需要的时钟,一个为控制时钟,另外两个为视频输入的banks的信号。系统中的两片1 M×36 bit ZBT SRAM,每片ZBT SRAM可同时接收两路视频的满帧数据采集。如果两路信号都为60 f/s,则每秒采集120 MB数据,而ZBT SRAM的工作频率为250 MHz,最大数据吞吐为4.5 GB/s,完全满足数据采集速度系统的要求。
全景视觉系统 FPGA+DSP 数字图像采集与处理系统 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)