嵌入式无线视频监控系统设计
0 引言
高性能、低功耗嵌入式CPU和高可靠性网络操作系统的面世,使得可视电话、视频会议、远程视频监控等运算数据量大的应用在嵌入式设备中实现成为可能。传统的基于同轴电缆的视频监控系统结构复杂、稳定性差、可靠性低且价格昂贵,因而出现了嵌入式网络视频服务器等远程Web视频监控系统。在本嵌入式无线视频监控系统中,使用高性能ARM9芯片作微处理器,控制video4linux实现USB摄像头视频数据采集,采集的视频数据经JPEG压缩后,在 ARM9芯片的控制下通过2.4GHz无线发送/接收模块进行视频数据传输;视频传输模块再将视频数据通过串口或网络提交给视频应用服务端,最后由视频应用服务端将接收到的压缩数据帧重组、复合成视频图像,实现无线视频监控。
1 系统组成结构
整个系统由视频采集终端、2.4G无线发送模块、2.4G无线接收模块、视频传输和视频应用服务端等5个模块组成。 其组成结构如图1所示:
图1 嵌入式无线视频监控系统结构框图
视频采集终端包括以S3C2410X为核心的中央控制和数据处理中心,以及USB Camera数据采集单元。中央控制和数据处理中心主要完成视频采集终端控制和视频图像压缩,并将需要传输的数据经编码处理后,通过SIO发送到 nRF2401无线发射模块。
视频传输模块主要包括:以S3C2410X为核心的中央控制和数据处理中心以及将视频数据传输到视频应用服务端的MAC接口和UART接口。视频传输模块的中央控制和数据处理中心主要完成以下任务:nRF2401将接收到的视频数据提交给SIO模块,S3C2410X先解码SIO模块数据,再通过UART 接口或MAC接口将视频数据传输到视频应用服务端。
视频应用服务端从串口或网络接口接收视频数据,并将其重组、复合成视频图像。
1.1 视频采集终端硬件结构
在本设计中,充分利用了S3C2410X所继承的片上资源,只需要扩充SDRAM、Nand Flash、4X4 Array Keyboard、USB Host、Ethernet Interface、RS232 Interface、JTAG、Power等模块。视频采集终端是整个系统的核心模块之一,主要完成视频捕获和图像压缩,其硬件逻辑结构框图如图2所示:
图2 视频采集终端硬件逻辑框图
2 视频采集模块设计与实现
视频捕获模块是整个视频采集终端的核心。它通过嵌入式Linux操作系统调度V4L (video4linux)和影像设备驱动程序来完成视频捕获。V4L 是Linux影像系统与嵌入式影像的基础,是Linux kernel里支持影像设备的一组APIs,配合适当的视频采集卡与视频采集卡驱动程序,V4L可以实现影像采集、AM/FM无线广播、影像CODEC、频道切换等功能。目前,V4L 主要应用在影像串流系统与嵌入式影像系统里,其应用范围相当广泛,比如:远程教学、远程医疗、视频会议、视频监控、可视电话等。V4L为2层式架构,最上层为V4L驱动程序,最下层则是影像设备驱动程序。
在Linux操作系统中,外部设备都作为设备文件来管理,因此,对外部设备的操作就转变成对设备文件的操作。视频设备文件位于/dev/目录下,一般情况下为video0。当摄像头通过USB接口连接到视频采集终端后,在程序中调用V4L APIs对设备文件video0的读操作即可实现摄像头视频数据采集。其主要过程如下:
1)打开设备文件: int v4l_open(char *dev, v4l_device *vd){}打开影像源的设备文件;
2)初始化picture: int v4l_get_picture(v4l_device *vd){} 获取输入的影像信息;
3)初始化channel:int v4l_get_channels(v4l_device *vd){} 获取每个channel的信息;
4)对channel设置norm:int v4l_set_norm(v4l_device *vd, int norm){} 对所有的channel设置norm;
5)设备地址映射:v4l_mmap_init(v4l_device *vd){} 返回存放图像数据的地址;
6)初始化mmap缓冲区: int v4l_grab_init(v4l_device *vd, int width, int height){};
7)视频捕获同步: int v4l_grab_sync(v4l_device *vd){};
8)视频捕获: int device_grab_frame(){}。
通过以上操作,即可将摄像头视频数据采集到内存。采集到内存的视频数据既可采用文件的形式保存,也可将其压缩后封装进数据包,通过网络传输到数据处理中心。本设计采用后一种处理方法,即:先将采集的视频数据进行JPEG压缩,再将其封装进数据包传输到视频应用服务端处理。
3 视频压缩模块设计
由于视频采集模块采集的视频数据信息量较大,如果直接通过网络传输,则会增加数据传输系统的负担,大大降低数据传输效率。为此,本设计采用JPEG —Joint Photographic Experts Group压缩编码算法对视频数据进行压缩。JPEG是一个适用于彩色、单色多灰度、连续色调静止数字图像的压缩标准,是静态数字图像压
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)