当前位置:无忧公文网 >范文大全 > 征文 > 基于ARM9的多路视频采集系统设计

基于ARM9的多路视频采集系统设计

时间:2022-03-23 09:24:41 浏览次数:

文章编号:1006-6268(2009)05-0042-04

摘要:针对近景大视场图像采集,提出了一种基于ARM9芯片S3C2410的多路视频采集系统。使用四个CMOS摄像头(OV7660)进行图像的采集,摄像头输出8位RawRGB格式的图像数据流。系统利用一片FPGA接受摄像头的输出时序,并参考这个时序控制SRAM地址将4个CMOS摄像头的一帧图象数据缓存于4个8位的SRAM中,然后通知ARM读取。ARM以32位总线同时读取图象数据后,将RawRGB格式的图像数据转换成常用的RGB格式,然后显示在LCD 上。

关键词:精简指令计算机内核;图像采集;CMOS摄像头;现场可编程门阵列;LINUX;QT

中图分类号:TN911.73文献标识码:B

Design of a Multi-channel Video Acquisition System Based on ARM9

CAO Hong, LU Rong-sheng, MA Cheng

(Hefei University of Technology, Anhui 23001, China)

Abstract: To achieve the requirement of image acquisition of close and large range visual field, it designs a multi-channel video acquisition system based on ARM9 chip S3C2410. It adopts four CMOS cameras (OV7660) to capture image, and the camera exports image data stream which is 8-bit RawRGB format. The system uses a FPGA chip to design timing controller, which receives the export timing of cameras. It refers this timing to control SRAM addresses, which saves one frame image data from four cameras to four 8-bit SRAM chips. Then ARM reads the image data from four SRAM chips at the same time with 32-bit data bus, and the format of image data is changed from RawRGB to RGB. At last, ARM processes the image data and displays them on the LCD.

Keywords: ARM;image collection;CMOS Camera;FPGA;LINUX;QT

引 言

视频监控系统是安全防范系统的重要组成部分,也是一种防范能力较强的综合系统。视频监控系统以其直观、方便、信息内容丰富广泛应用于许多领域。而在近景大视场图像采集的应用中,采用多路视频同时进行采集,可以获得更多的近景图像信息。传统的多路图像采集的方法是多个通道输入,然后通过通道的切换来完成对多个静态场景图像信息的采集。这对于一般的应用已经足够,但是对于多路动态场景的实时监控,就有一些力不从心。举例来说,在车载环视显示系统的应用中就要求多路动态场景的实时同步采集,来最终完成一个大视场的拼接。并且对所采集到的图像,在时间上要求同步。使用视频通道切换的方法,在切换到一个通道时,会造成另外几个通道图像信息的丢失。这样,因为几路图像数据在时间上不同步,合成的时候很难获得很好的效果。所以本文在这里提出一种嵌入式的多路视频采集的方法,以成本较低CMOS摄像头为图像采集设备。以ARM9芯片S3C2410为主控制器,并配以LINUX系统。利用一片FPGA和4片8位的SRAM完成四路CMOS摄像头的同步采集和缓存。并以FPGA配合ARM外部总线时序,完成图像数据的读取。最后由ARM对所采集到的数据进行处理和显示。

1 系统组成与工作原理

整个系统可以分为三个模块:图像采集模块,图像存储模块,ARM。系统结构框图如图1 所示。图像采集模块主要由4片CMOS摄像头组成,摄像头的初始化由ARM通过SCCB总线完成[1]。图像存储模块由4片SRAM和1片FPGA组成。由FPGA控制SRMA的地址,将CMOS输出的图像数据流存储进SRAM中。ARM部分加载LINUX系统,读取到图像数据后,对图像进行转换后,最终显示在液晶屏上。

本系统的设计难点在于如何保证图像数据读取单元和CMOS 摄像头的严格同步以及高速数据流(24 MHz) 的实时处理。系统采用一片FPGA设计时序控制器, 协同CMOS 传感器、ARM以及帧存储器

(SRAM)之间的工作流程,很好地解决了系统同步和

高速数据流实时处理的问题。

整个系统上电后,由ARM通过GPIO口模拟SCCB总线设置4个CMOS摄像头的工作状态,使其输出8位的RawRGB图象格式数据。初始化完成后,摄像头开始工作,由FPGA根据同步信号控制帧缓存(SRAM)地址,把4个摄像头的数据信号分别写入4个不同的SRAM中。到4个摄像头都写完一帧后,FPGA给中断通知ARM读取数据。ARM收到中断后,通过对两个DATABUF的控制,切换SRAM的数据总线到ARM这边。再通过地址同步信号和读开始完成信号,与FPGA配合,由FPGA控制SRAM地址,通过32位总线同时读取4片SRAM中的数据。数据读完后,ARM再将总线切换回来,FPGA继续根据同步信号将图像数据写入SRAM中。而ARM则完成采集到数据的处理和显示。

2 硬件电路设计

2.1 图像传感器

本系统选用OmniVision 公司的OV7660彩色CMOS 摄像头作为图像输入单元,该摄像头集光学镜头与CMOS 图像传感器于一体,简化了系统的设计,它能够通过SCCB 接口控制其工作状态、工作方式及图像输出格式等;芯片运用专有的传感器技术,能够消除普通的光电干扰,输出清晰、稳定的彩色图像[1]。

单个CMOS 摄像头同FPGA和ARM 的接口电路如图2 所示,摄像头输出场同步信号VSYNC、行同步信号HREF、像素时钟PCL K 及RawRGB图像数据,FPGA 由行、场同步信号生成系统的时序,实现系统与CMOS 摄像头的同步,并将图像数据写入帧存储器中。同时,在系统上电时,由ARM控制GPIO口模拟SCCB总线,根据需要设置CMOS摄像头的工作参数。

2.2 ARM控制器

ARM选用Samsung公司的S3C2410,它采用了ARM920T内核,0.8μm工艺的CMOS标准宏单元和存储器单元。S3C2410提供了丰富的内部设备:分开的16KB的指令Cache和16KB的数据Cache,MMU虚拟存储器管理,LCD控制器(支持STN&TFT),支持NAND FLASH系统引导,系统管理器(片选逻辑和SDRAM控制器)等等[2]。

本系统为S3C2410外加了64M的SDRAM,64M的NAND FLASH,网络接口等等,进一步为LINUX的系统移植创造条件。外接的帧存储器挂接在S3C2410的片选3上,通过对S3C2410相应存储控制器的正确配置,可以方便地读取帧存储器中的数据。

2.3 帧存储器模块

帧存储器模块的SRAM选用的是ISSI公司的CMOS静态随机存储器IS63LV1024,8位数据总线,大小为128K字节(大于RawRGB一帧数据的大小),一共4片。其外部电路主要分为两部分:一部分是写入的部分,数据端分别接4个CMOS摄像头。另一部分是读出的部分,4片8位的SRAM组成32位总线,外接到S3C2410的片选3上。读写的地址控制全部由FPGA负责。

IS63LV1024只有一个外部总线,为了防止读写两部分的总线冲突,在两部分的总线之间加上三态缓冲,由ARM控制总线的切换。

3 设计仿真

本系统中FPGA起到桥接的作用,主要的功能是完成读写帧存储器的地址控制。在写的过程中由FPGA根据CMOS摄像头提供的同步信号将4个摄像头所采集到的数据分别写入4片SRAM中。FPGA采用行、列两个计数器为帧存储器提供地址信号。OV7660的行同步信号HREF 和像素时钟PCL K分别作为行、列计数脉冲,场同步信号VSYNC和HREF 则作为行、列计数器的清零信号端。在VSYNC变为低电平时,行计数器开始计数,每一个HREF 脉冲行计数器加1 ;在HREF 变为高电平时,列计数器开始计数,每一个PCL K脉冲列计数器加1。行、列计数器的输出分别作为帧存储器的高位和低位地址信号,在三个同步信号的控制下,依次将像素数据存入帧存储器,这样就保证了帧存储器中每一个单元与图像的一一对应关系,也就保证了系统与CMOS 摄像头的严格同步[3]。

在读的部分,FPGA根据地址同步信号(ARM的片选信号)控制地址,配合好ARM读帧存储器的时序,帮助ARM顺利的读取4个摄像头所采集到的4帧的图像数据。整个过程的仿真图形如图3所示。

4系统软件设计

4.1嵌入式系统的搭建

为了加快开发速度,在S3C2410上移植了LINUX系统,版本为2.4.18。开发环境为Red Hat 9.0,bootloader使用的Uboot1.12,交叉编译工具为arm-linux-gcc2.95.3。整个系统的移植包括了bootloader的移植,LINUX内核的裁减,编译和移植,文件系统的制作等等[4]。在这里不一一详细介绍。

4.2 CMOS摄像头的初始化

现在的CMOS 图像传感器芯片大都采用SCCB 作为控制总线,通过它用户可以很方便地对芯片进行编程操作以控制采集图像的格式和质量。然而在构架系统时,大多的控制器并没有SCCB 接口,因此需要用普通的I/ O 接口来模拟SCCB[5]。配置时,主要是写OV7660的内部寄存器,使芯片输出格式正确的图像数据。

4.3 图像的采集

由于使用使用了LINUX系统,整个帧存储器部分可以作为一个模块使用专有驱动程序。整个驱动程序主要分为两个部分。首先是初始化部分,主要完成的是:帧存储器片选控制器的配置,外部帧存储器的挂接,模拟SCCB总线初始化CMOS摄像头。其次是中断部分,得到FPGA给中断后,切换总线,给FPGA开始读的信号,然后使阻塞的读过程恢复,从而正确的读去数据到内存中。具体过程如图4所示。

4.4 图像的处理及显示

本系统所设置CMOS摄像头所输出的图像是RawRGB格式的图像,这样采集的图像信息在每个像素的位置上只有一种颜色分量可以获得,要复原另外两种缺少的颜色分量,就必须通过相邻的像素进行估算,这个过程就叫CFA插值。它所输出的图像格式也叫Bayer格式,即奇数扫描行分别采集和输出R、G、R、G……,偶数行分别采集和输出G、B、G、B……,其一般格式如图5所示。

在本系统的设计中,是要将采集到的图像传输到显示器上进行显示,因此需要将采集到的图像信息转化为便于显示的RGB格式。在格式转化方式的选择上,使用双线性差值法将CMOS图像传感器输出的Bayer格式的图像信息转化为RGB格式。其基本原理是将每个像素位置上缺少的另外两种彩色分量通过以它本身为中心的邻域内具有相同分量的像素平均值获得[6]。

Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt,基于Framebuffer的Qt Embedded。在本系统中界面以及图像的显示部分选择的就是QTE。它有着很好的移植性,并且对于图像的显示和保存有着很好的接口,在这里不再详细的说明。

5 结束语

本系统使用一片FPGA将4个CMOS摄像头的数据缓存于4个片外的帧存储器中,再以中断驱动ARM同时读取,充分利用了ARM体系结构的32外围总线。同时通过使CMOS摄像头输出8位的RawRGB格式,减小了采集的图象大小,缓解了总线传输的压力。为近景大视场的图像采集提供了一种新的方法。

参考文献

[1] OV7660 Color CMOS VGA (VarioPixelTM) CAMERA-CHIPTM Datasheet[S]. [ EB/ OL ] . ,2004-05.

[2]S3C2410A Datasheet[S] [ EB/ OL ] .

[5]马超,刘政林,邹雪城.SCCB 在ARM9 嵌入式平台上的实现[J]. 计算机与数字工程,2006,34(7):134-137.

[6]Bahadir K. Gunturk,John Glotzbach,Yucel Altunbasak et. Demosaicking: color filter array interpolation[J]. Signal Processing Magazine, IEEE, 2005,22:44-54

作者简介:操虹(1985-),男,安徽黄山人,硕士,就读于合肥工业大学仪器科学与光电工程学院,E-mail:caohonog549@163.com。

推荐访问: 多路 采集系统 设计 视频 ARM9