来源:网络 作者:中国一卡通网 收编 发布时间:2010-12-28 11:18:48 字体:[大 中 小]
摘 要:具有图像采集、传输和处理等功能的嵌入式视频监控设备可以在Internet上传输图像数据,基本上不受距离限制,无须重新布线;性能稳定,且便于安装,维护。文中讨论了以CMOS图像采集芯片,ARM微处理器和嵌入式操作系统为核心的监控设备的软硬件设计。重点介绍了ARM单片机子系统、图像采集模块、图像存储控制模块等硬件部分的设计原理与实现。介绍了在uClinux下驱动程序、图像采集、图像压缩算法、网络通讯程序的实现原理与过程,以及图像合成、处理的方法。
1 引言
随着计算机技术及网络技术的迅猛发展,视频监控系统的发展趋势必然是全面数字化、网络化,即采用嵌入式网络摄像机,利用网络进行传输,并充分利用大规模集成电路和网络的科技成果,及体积小巧、性能稳定、通讯便利等特点,将使监控无处不在成为现实。而目前,我国基于嵌入式技术的网络视频监控系统刚刚起步,所以研究并开发一种基于嵌入式系统的网络视频监控系统具有很大的工程实际意义。
本文针对网络视频监控设备的实际应用需求,有机的结合图像采集和嵌入式系统两方面的新技术,设计了基于ARM 32位单片机系统和图像采集存储系统的嵌入式网络视频监控设备,并实现了视频数据的采集、压缩与网络传输。
2 ARM与嵌入式网络视频监控设备
32位嵌入式处理器中有MIPS、ARM、M-CORE等等。ARM(Advanced RISC Machines)处理器本身是32位系统,其内核具有性能高、成本低和能耗省的特点。
支持ARM的嵌入式操作系统主要有:Windows CE、Vxworks、uClinux等[1]。uClinux是“Micro-Control-Linux”缩写,意即“针对微控制领域而设计的Linux系统”[2]主要是面对没有MMU并且资源很少的嵌入式系统。高性能、高集成度将是嵌入式系统的发展方向[4]。“嵌入式网络视频监控设备”是第三代数字监控设备。
嵌入式网络视频监控设备体积小巧,具有图像采集、图像处理功能,带有以太网接口,TCP/IP协议栈,性能比较稳定,可直接与Internet互连,系统的扩展性很好,监控区域几乎无限,并且由于设备传输到网络上是数字化视频信号,可直接利用软硬件进行处理。同时因为设备本身带有操作系统,因此可以方便的进行后续开发,增加用户所需功能,提高设备的智能程度。
3 嵌入式监控系统硬件模块的设计
3.1系统总体设计
硬件系统可以分为三个模块:ARM集成开发模块、图像采集模块、图像存储控制模块。其中ARM集成开发模块模块的CPU采用三星的S3C4510B;图像采集模块中的CMOS图像采集芯片采用Ommvision公司的OV7620,镜头采用桑来斯公司生产的DSL103镜头;图像存储模块主要包括74LS244(八进制3状态线缓冲器),4040(12位二进制串行计数器),512K 的SRAM CY7C1049。
系统工作过程可分为主要两个步骤:图像数据存储和图像数据读出过程。系统上电之后,单片机将通过I2C总线对CMOS图像传感器的工作寄存器进行初始化设置,以便使图像传感器进入正常的工作状态,如开窗口位置、逐行扫描方式、自动曝光、自动平衡等。如果上位机需要调整CMOS图像传感器的工作参数,则可以通过地址端口写入;随后,CMOS图像传感器输出的8位图像数据在逻辑控制电路的协调控制下,顺序存入静态RAM构成的图像数据缓冲器。如果上位机没有发出读数据的命令,则此过程一直进行下去,新的图像数据不断地覆盖原有的数据;如果上位机发出读取图像数据的命令,则等待一帧完整的图像写入后,单片机将CMOS图像传感器的图像输出通道关闭,然后将SRAM中的数据顺序从IO读入。读完一帧图像后,再将CMOS图像传感器的图像输出通道打开重新开始新的一帧图像的采集。
3.2 ARM集成开发模块模块的设计
本系统CPU S3C4510B是基于以太网应用系统的高性价比16/32位RISC微控制器,内含一个由ARM公司设计的16/32位ARM7TDMI RISC处理器,ARM7TDMI为低功耗高性能的16/32位核。该CPU最适合用于对价格及功耗敏感的应用场合。
系统中采用的Flash存储器MBM29F016在本系统中用来存放uClinux操作系统程序代码。SDRAM是高速的动态随机存取存储器,在系统中主要用作程序的运行空间、数据及堆栈区。RTL8201是一种全双工以太网控制器,当系统中主处理器要向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL8201中的发送缓存区,然后发出传送数据命令。RTL8201在完成了上一帧的发送后,再完成此帧的发送。RTL8201接收到的数据通过MAC比较,CRC校验后,由FIFO存到接收缓冲区,收满一帧后,以中断的方式通知主处理器。
3.3 OV7620摄像头模块电路设计
由于OV7620集成度高,外围电路设计非常简单,仅由石英晶体和一些电阻、电容等元件组成。
3.4图像存储模块的硬件设计
图像存储模块采用两个计数器4040作为RAM的地址信号,分别采集和读取利用PCLK或ARM的IO脉冲信号作为计数器的时钟信号。本模块利用MAX+plusⅡ 软件仿真了硬件时序,分析组合逻辑电路及时序逻辑电路,验证了数字系统设计的准确性。
4 嵌入式系统控制软件的设计与实现
4.1系统控制流程
系统软件模块主要在嵌入式操作系统uClinux下用C语言实现。其主要作用在于控制硬件设备,完成预定的图像采集、压缩、传输功能。按控制时序方向依次为I2C驱动程序、图像数据采集程序、图像压缩程序、网络传输程序四部分组成。
当将要采集图像数据时,嵌入式系统通过I2C驱动程序设置OV7620内部寄存器的值,配置合适的图像格式。当一帧图像完全存储到SRAM后,启动图像采集程序,将SRAM中的数据读取到嵌入式系统内存中,并进行压缩,最后打包发送到网络上。
4.2 I2C驱动程序的原理与实现
系统上电之后,单片机将通过I2C总线对CMOS图像传感器的工作寄存器进行初始化设置,以便使图像传感器进入正常的工作状态,如开窗口位置、逐行扫描方式、自动曝光、自动白平衡等。如果上位机需要调整CMOS图像传感器的工作参数,则可以通过地址端口写入,虽然S3C4510B提供了I2C BUS。但是目前市面上的uClinux则没有针对S3C4510B的I2C BUS的驱动。
uClinux下I2C驱动程序主要数据结构及函数描述如下:
#define DEVICE_NAME "i2c" /* 定义设备的名称 */
#define I2C_MAJOR 89 /* 定义主设备号 */
static volatile U8 priv_buf[128];
static struct semaphore i2c_samsung_sem;
static struct file_operations i2c_ops ;
/* IIC 参数设置 */
typedef struct
{ int i2c_speed;
U8 i2c_slave;
U8 i2c_addrlen;
U8 i2c_operate;
int i2c_pagesize;
spinlock_t lock;
U8 *buf;
} I2C_PRIVATE_T;
int __init i2c_samsung_init( void );/* 初始化函数 */
static ssize_t i2c_read (struct file * file ,char * buf, size_t count, loff_t * f_ops); /* 读数据函数 */
static ssize_t i2c_write (struct file * file ,const char * buf, size_t count, loff_t * f_ops);
/* 写数据函数 */
static ssize_t i2c_ioctl (struct inode * inode ,struct file * file,
unsigned int cmd, U32 data); /* 控制函数 */
static ssize_t i2c_open (struct inode * inode ,struct file * file);
/* 打开设备函数 */
static ssize_t i2c_release(struct inode * inode ,struct file * file);
/* 释放设备函数 */
static void s3c4510_i2c(int irq, void *dev_id, struct pt_regs *regs);
/* i2C 中断句柄函数 */
int init_module(void) /* 安装驱动程序模块函数 */
void cleanup_module( void ) /*卸载驱动程序模块函数 */
同时通过在uClinux操作系统下编制调试IO数据读取控制程序、图像压缩程序、网络通信程序后,I2C驱动可以方便的修改OV7620寄存器数据,CPU可以通过IO高速的把数据读到内存,图像压缩后体积明显减小,通过网络可以流畅的把图像数据发送到客户端。其中也有一些不足之处比如I2C驱动有时会由于干扰不能成功的修改OV7620的寄存器,还有待深入分析修改。
4.4 图像的合成与处理
图像的合成主要根据位图文件的的数据结构、颜色空间模型概念,并结合彩色图像合成原理对图像进行合成。
由于采集图像时,不仅要受镜头的光学系统、照明的光强分布等因素影响,还要考虑CMOS图像传感器的分辨率等。因而采集的图像经常具有噪声和不明因素的干扰,为了能更好地进行图像处理分析,可利用图像的预处理,根据得到的实际图像的信息进行修复。
消除图像噪声的方法在图像处理中称为图像平滑处理。图像平滑处理主要有移动平均法和中值滤波法两种。在移动平均法中,把噪声成分也放到了平均计算之中,因此其输出也受到噪声的影响。而在中值滤波中,噪声成分很难被选到,对输出图像不会有什么影响。因此,对同一块图像进行比较,中值滤波法在去除噪声的能力上略胜一筹。本设备中利用中值滤波的程序实现了算法,测试结果表明图像上的斑点基本被消除,处理后的图像很清晰。
5 结束语
基于嵌入式系统的网络视频监控设备通过构筑一个基于S3C4510B和uClinux的嵌入式平台,可便利的通过Internet与外界通信,较好的实现了视频数据的采集、压缩与网络传输,达到实时监控的目的。经过压缩编码后图像数据体积有了明显的减小,图像数据可以存储到数据库中,为数据的分析带来很大的便利。我们深信,这样一种基于嵌入式系统的网络视频监控系统具有很大的工程实际意义。
推荐文章
论坛热帖