微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于ARM平台的远程视频监控系统的研究

基于ARM平台的远程视频监控系统的研究

时间:04-22 来源:无忧电子开发网 点击:

部分,它存储了系统配置文件、系统程序和系统外设驱动程序。嵌入式Linux内核移植[2]好后,主要工作就变成在操作系统下编写驱动程序。在这里我们着重介绍OV9640的驱动程序的开发及MPEG-4编码的实现。

\

图三:以太网模块接口

2.1 OV9640驱动的开发[6]

在Linux下编写OV9640 CMOS图像传感器驱动,首先要初使化OV9640。通过SCCB总线设置OV9640的工作模式,各种参数,分配连续内存空间,容量与采集图像的点阵数相匹配。然后用request_irq()函数为OV9640登记中断,其中断号为06。当S3C2440捕捉到VSYNC信号时触发中断,把一帧图像数据拷贝到用户空间。如此反复,视频数据源源不断的被采集到SDRAM。软件流程如图四所示。

\

图四 读取OV9640数据流程

我们知道,用户进程是通过设备文件同硬件打交道,对设备文件的操作就是一些系统调用。要想把系统调用和设备驱动程序关联起来,必须用到一个非常关键的数据结构:struct file_operations{ }。因此编写设备驱动的主要工作就是编写数据结构中定义的子函数,并填充file_operations的各个域。

摄像头file_operations的数据结构如下

static struct file_operations cam_fops =

{ owner : THIS_MODULE,

open : cam_open,

read : cam_read,

ioctl : cam_ioctl,

release : cam_release,

};

编写好成员函数后,接下来编写module_init()和module_exit()。module_init()是驱动程序的入口,当用insmod命令加载模块时自动运行。此函数中包括①初使化CMOS图像传感器②分配连续内存地址空间③注册设备文件④登记中断。module_exit()函数在rmmod卸载模块时调用。函数功能包括①释放内存空间②释放中断③注销设备文件。

至此,驱动模块编写好了,编译加载后,我们就可以像操作普通文件一样对摄像头进行读取数据了

2.2基于MPEG4的数据压缩算法的实现

2.2.1 MPEG-4[7]压缩标准

数字视频流的数据量是巨大的,以QVGA图像,每秒20帧为例,每秒钟的数据量为2.92M,假设系统有十路传感器,如果不经过压缩,实现数据在网上的多路复用传输是相当困难的,为了系统可靠的运行,本设计采用高压缩率的MPEG-4视频压缩编码。MPEG-4最显著的特点是基于内容的编码方法,即把一段视频序列看成有不同的视频对象VO组成,编码器根据实际情况对各个视频对象面VOP进行编码,其最大压缩率可达到100:1。

2.2.2 MPEG-4的实现与优化

XVID是一种开源的MPEG-4视频编码软件,是目前所有开源视频编码软件中比较优秀的一个,它严格按照GPL发布,图像质量可以达到DVD的效果,而数据量只有DVD的1/8。XVID最新的版本为xvidcore1.1.0,这里我们选择xvidcore1.1.0作为进一步优化的基础。从 www.xvidcore.org 下载xvidcore1.1.0源码,修改MAKEFILE文件,把XVID移植到ARM平台。具体的实现方法可参照example下的例子,结合项目的实际,写出自己的应用程序。然后进入xvidcore-1.1.0/build/generic目录,执行./configure –disable –assembly命令,手工配置platform.inc文件,修改CC=/opt/host/armv41/bin/arm4l-unknown-linux-gcc,再执行make clean,make。最后把生成的库拷贝到example目录下,修改example下的Makefile文件,编译下载到目标板上运行即可。

经过测试,XVID的压缩比是很高的,可达到20:1,最重要的是编码速度快,压缩解压后的图像质量稍有降低,完全可以达到实用的要求。

3.结束语

利用嵌入式系统实现远程视频监控符合数字化、网络化的发展趋势,具有布线集中,设备简单,体积小,成本低等特点,与传统的视频监控方案比较有不可比拟的优越性。前端采集部分采用S3C2440微处理器,利用其自身提供的视频接口,图像采集的速度完全可以达到动态显示的要求(在400M的时钟频率下,QVGA图像可以达到20帧/秒的显示速率)。本文作者的创新点:采用图像压缩编码和网络技术,可实现视频数据的多路复用传输。监控端采用基于MPEG-4的视频对象分割方法,利用相邻帧视频对象的差异,实现智能报警的功能。该系统性价比较高,使用方便,值得推广使用。

4.参考文献

[1]S3C2440X RISC MICROPROCESSOR date sheet.samsung electronics.2003

[2]张积红,吴强.嵌入式linux研究及其在ARM上的移植.电脑知识与技术,2005,(8)

[3]OV9640 version1.0.Omnivision Technologies.2003

[4]王晓明,一种MPEG-4视频采集与传输系统的研究与实现,计算机测量与控制,2005,(8)

[5]陈福,马莉等.基于嵌入式系统的视频图像捕获研究与实现.微计算机信息,2005,(12)

[6]李驹光

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top