《基于嵌入式Linux视频监控系统毕业论文.pdf》由会员分享,可在线阅读,更多相关《基于嵌入式Linux视频监控系统毕业论文.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、页脚下载后可删除,如有侵权请告知删除!基于嵌入式 Linux 的视频 监控系统的软件设计 基于嵌入式 Linux 的视频监控系统的软件设计 1、引言 随着计算机技术及网络技术的迅猛开展,公安、安防行业的开展趋势必然是全面数字化、网络化。传统的模拟闭路电视监控系统有很多局限性:传输距离有限、无法联网,而且模拟视频信号数据的存储会消耗大量的存储介质(如录像带),查询取证时十分烦琐。基于个人计算机的视频监控系统终端功能较强,但稳定性不好,视频前端(如电压耦合元件等视频信号的采集、压缩、通讯)较为复杂,可靠性不高。基于嵌入式 Linux 视频的网络监控系统不需要用于处理模拟视频信号的个人计算机,而是把
2、视频效劳器内置一个嵌入式 Web 效劳器,采用嵌入式实时多任务操作系统。由于把视频压缩和 Web 功能集中到一个体积很小的设备内,可以直接连入局域网,即插即看,省掉复杂的电缆,安装方便(仅需设置一个 IP 地址),用户也无需安装任何硬件设备,仅用浏览器即可观看。基于嵌入式 Linux 的视频网络监控系统将嵌入式 Linux 系统连接上 Web,即视频效劳器内置一个嵌入式 Web 效劳器,摄像机传送来的视频信号数字化后由高效压缩芯片压缩,通过内部总线传送到内置的 Web 效劳器上。页脚下载后可删除,如有侵权请告知删除!2、绪论 视频监控系统是平安防范系统的组成局部,它是一种防范能力较强的综合系统
3、。视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。近年来,随着计算机、网络以及图像处理、传输技术的飞速开展,涌现出大量的嵌入式视频监控系统。21 视频监控系统概述 视频监控是利用机器视觉和图像处理的方法对图像序列进展运动检测、运动目标分类、运动目标跟踪以及对监视场景中目标行为的理解与描述。其中,运动检测、目标分类、目标跟踪属于视觉中的低级和中级处理局部,而行为理解和描述那么属于高级处理。运动捡测、运动目标分类与跟踪是视频监控中研究较多的三个问题;而行为理解与描述那么是近年来被广泛关注的研究热点,它是指对目标的运动模式进展分析和识别,并用自然语言等加以描述。22 视频监控系统开展 视频
4、监控技术的开展大致可分为四个阶段:闭路电视系统构建的模拟系统、数字信号控制的模拟视频监控系统、数字硬盘录像设备为核心的视频监控系统和现在的数字网络视频监控系统。第一代视频监控系统是采用闭路电视系统构建的模拟系统,通过摄像机、监视器、磁带录像机等构成 I 甜。由于模拟矩阵很难做到数十路的切换,不能与报警系统联动,不能对前端进展控制且价格昂贵、操作管理复杂、很难实现较大系页脚下载后可删除,如有侵权请告知删除!统的要求,已经逐渐被淘汰。第二代视频监控系统是数字信号控制的模拟视频监控系统。数字信号控制的模拟视频监控系统又分为基于微处理器的视频切换控制加 PC机的多媒体管理和基于 PC 机实现对矩阵主机
5、的切换控制及对系统的多媒体管理两种类型。第三代视频监控系统是以数字硬盘录像设备为核心的视频监控系统。90 年代末,随着多媒体技术、视频压缩编码技术、网络通讯技术的开展,数字录像监控系统迅速崛起。数字监控录像系统通常分为两类:一类是基于 PC 机组合的计算机多媒体工作方式;另一类是嵌入式数字监控录像系统。1基于 PC 的视频监控录像系统的组成构造为:兼容工控 PC 机+视频采集卡+普通较可靠的操作系统平台+应用软件 从系统的组成构造来分析:a、PC 机 兼容 PC 机用于 24 小时不连续工作时,其性能通常是不可靠的,工控PC 机相对兼容 Pc 机的稳定性有一个档次上的提高,适用于较复杂的工作环
6、境;b、操作系统 以 Windows 98 为操作平台的系统:一般来说,Win98 的稳定性是有一定 问题的,如果同时应用软件又不是很标准,这样就容易在使用过程中出现工作稳定、死机等问题,而基于 PC 机的视频监控录像系统其软件的实现是在 Windows 9598NT 等通用操作系统上,同时系统文件、应用软件和图像文件都存储在硬盘上,视频处理必须高密度输入大量数据,同时硬盘要进展多工工作,普通的硬盘逻辑(如 Windows 的 FAT32)已无法适应,以致极易产生系统的不稳定性,造成死机现象;c、应用软件 采用简易应用软件的系统是不能够应用安防领域的,视频监控系统的应用软件能力上应支持多任务并
7、发处理,如监视、录像、回放、备份、报警、控制等的多工处理能力;d、视频采集卡 视频监控录像系统通常均为多路输入系统,视频采集卡可采用多卡方式,也页脚下载后可删除,如有侵权请告知删除!可采用单卡方式。一般说,单卡方式集成度高,稳定性会优于多卡方式,很多采用一路一卡的方式很容易形成硬件冲突,其稳定性会有较大的影响。目前市场上也有局部为追求高帧数而设计采用多卡进展迭加的多路单卡设备,但其仍在计算机的总线上进展传输、处理,PCI 总线将是系统的瓶颈,不可能会有质的飞跃。22 嵌入方式的数字监控录像系统 嵌入式系统的优缺点 a、系统为专用系统,所以系统小,指令精简,处理速度快 b、系统数据置于 ROMF
8、LASH MEMORY,调用速度快,不会被改变,稳定性好 C、系统处理实时性好,性能稳定 d、文件管理系统更适合于大量的视频数据 e、该类系统目前四路以上机型还较为少见 f、在网络功能、音视频同步等方面也难令人满意。第四代视频监控系统一数字网络视频监控系统 1数字网络视频监控系统的原理 数字网络视频监控系统 16J 的关键设备是网络视频信号采集终端(也被称为视频效劳器),网络视频信号采集终端采用嵌入式实时多任务操作系统。摄像机送来的视频信号在网络视频信号采集终端数字化后由高效压缩芯片压缩,通过内部总线送到网络接口发送到网络上 l 刀,网络上用户可以直接用在 PC 机上用浏览器观看网络视频信号采
9、集终端传送过来的摄像机所拍摄的图像,授权用户还可以通过计算机网络透过网络视频信号采集终端控制摄像机镜头和云台的动作或对系统进展配置操作。由于把视频压缩和网络功能集中到一个体积很小的设备内,可以直接连入局域网,到达即插即用,省掉多种复杂的电缆,安装方便(仅需设置一个坤地址),用户也无需安装任何硬件设备,仅通过 PC 机用浏览器即可观看。2数字网络视频监控系统与其它监控系统的比拟 a、布控区域广阔 数字网络视频监控系统的网络视频信号采集终端直接连入网络,没有线缆 长度和信号衰减的限制,同时网络是没有距离概念的,彻底抛弃了地域的概念,页脚下载后可删除,如有侵权请告知删除!扩展布控区域。b、系统具有几
10、乎无限的无缝扩展能力 所有设备都以 IP 地址进展标识,增加设备只是意味着口地址的扩大。c、可组成非常复杂的监控网络 采用基于网络视频信号采集终端为核心的监控系统,在组网方式上与传统的模拟监控和基于 PC 平台的监控方式有极大的不同,由于视频信号采集终端输出已完成模拟到数字的转换并压缩,采用统一的协议在网络上传输,支持跨网关、跨路由器的远程视频传输。d、性能稳定可靠,无需专人管理 视频信号采集终端实际上基于嵌入式电脑技术,采用嵌入式实时多任务操作系统,又由于视频压缩和网络功能集中到一个体积很小的设备内,直接连入局域网或广域网,即插即看,系统的实时性、稳定性、可靠性大大提高,也无需专人管理,非常
11、适合于无人值守的环境。e、当监控中心需要同时观看较多的摄像机图像时,对网络带宽就会有一定的要求。2 视频监控系统的应用概括来说,目前视频监控系统应用领域主要有以下一些方面:教育系统主要是校园平安监控、电子考场监控、网络教学、远程教育等;电力系统主要是机房无人值守、变电站无人值守、发电厂平安生产管理监控等;公检法系统主要是社区监控、城市平安监控、监狱平安监控、庭审直播等;部队系统主要是通信机房监控、作战指挥系统、仓储物资监控、基层连队的日常管理监控系统等;石化系统主要是油井监控、储油库监控、加油站监控、石化工厂平安生产监控等;银行系统主要是银行监控系统的联网、储蓄监控、金库监控等;铁路系统主要是
12、站内调度管理系统(视频局部)、站内平安管理、应急指挥系统等;税务系统主要是报税效劳大厅监控;页脚下载后可删除,如有侵权请告知删除!钢铁系统主要是平安生产管理监控系统;医疗系统主要是特护病房视频监控、手术直播及教学系统、日常平安管理监控等。本文主要研讨该系统的软件实现局部 3、总体设计 嵌入式 Linux 视频网络监控系统是电工电子装置、计算机软硬件以及网络、通信等多方面的有机组合体,它以智能化、网络化、交互性为特征,构造比拟复杂。如果利用 OSI 七层模型的内容和形式,把相应的数据采集控制模块硬件和应用软件以及应用环境等有机组合,可以形成一个统一的系统总体框架,其系统总体框架示意图如图 l 所
13、示。系统总体框架示意图 摄像机传送来的视频信号数字化后,经过压缩,通过 RS-232/RS485 将数据送到内置的 Web 效劳器,嵌入式 LJnux 系统的 10/100M 以太网口实现接入 Internet 网络,将现场信号送到客户端。整个系统的核心是嵌入式 Linux 系统。监控系统启动后,嵌入式 Linux 系统启动 Web Server 效劳程序,接收授权客户端浏览器的请求,Web Server 将根据通信协议完成相应的监测。页脚下载后可删除,如有侵权请告知删除!系统硬件构造如图 1 所示,该系统采用 Samsung 公司的 ARM9 内核芯片 S3C2440 作为硬件平台的中央处理
14、器,该处理器主频可达 400MHz,硬件接口和资源丰富,存储单元包括 Flash 和 SDRAM,Flash 具有掉电保持数据的特性,用于存储 Bootloader 启动程序、Linux 内核映像、文件系统以及用户应用程序等。SDRAM 数据存取速度大大高于 Flash 存储器,用于为操作系统和应用程序提供运行空间。平台利用 RS232 接口输出调试信息,通过以太网控制器芯片 DM9000 扩展了一个网口,用于与外部网络进展通信,通过 USB HOST 接口连接 USB 摄像头采集图像数据,经处理器压缩并打包成视频流后经以太网进展传输,终端用户接收到视频流,解码后即可把视频图像显示出来。图1
15、系统硬件构造图 软件平台采用的嵌入式操作系统为,Linux 具有内核小、效率高、源码开放、内核直接提供网络支持等优点,但嵌入式系统的硬件资源有限,因此需根据实际需求对内核进展裁剪,配置所需的功能模块,然后再移植到硬件平台上。嵌入式系统的软件开发采用穿插编译调试的方式,在宿主机上安装Linux 系统,建立穿插编译环境,在宿主机编写程序代码,再利用穿插编译工具生成目标机上可用的可执行文件,最后向目标机平台移植。3.2.1 视频采集模块 页脚下载后可删除,如有侵权请告知删除!视频采集模块通过嵌入式 Linux 操作系统调用 Video4Linux(V4L)5和底层设备驱动程序来完成视频捕获。V4L
16、是 Linux 中关于视频设备的内核驱动,它为 Linux 下的各种视频设备提供了统一的编程接口,应用程序通过这些接口函数就可以操纵各种不同的设备。视频采集流程如图 2 所示。图2 视频采集流程(1)翻开视频设备。Linux 下的视频设备文件一般为“/dev/video0,通过调用函数 v4l_open(),利用 vd-fd=open(“/dev/video0,O_RDWR)翻开设备并获得设备文件描述符 vd-fd。(2)获取设备和图像信息。通过 v4l_get_capability()函数获取设备信息,通过 v4l_get_picture()函数获取图像信息。(3)内存映射。获取图像的方式有
17、两种:read()直接读取和 mmap()内存映射。直接读取方式通过内核缓冲区来读取图像数据,而本文使用内存映射方式mmap(),内存映射方式可以直接把设备文件映射到内存中,进程可以像访问普通内存一样对文件进展访问,读取效率更高。初始化内存映射时,需在内存中开辟一块空间,利用 ioctl(vd-fd,VIDIOCGMBUF,&(vd-mbuf)操作取得需要映射的内存空间大小,利用 mmap()函数,即 vd-map=(unsigned char*)mmap(0,vd-mbuf.size,PROT_READ|PROT_WRITE,MAP_SHARED,vd-fd,0)操作,把设备文件的内容映射到
18、内存,vd-map 指针所指向的内存区即为采集的图像数据,且此内存区具有可读写和共享属性。(4)初始化采集参数。设置采集视频图像的宽度、高度、格式等信息。页脚下载后可删除,如有侵权请告知删除!(5)采 集 视 频 数 据。利 用ioctl(vd-fd,VIDIOCMCAPTURE,&(vd-mmap)操作采集一帧图像并存放到内存映射区,采集一帧图像后要进展同步操作,利用 ioctl(vd-fd,VIDIOCSYNC,&(vd-frame_current)操作判断该帧图像是否获取完毕。对于获取到的视频图像,通过视频压缩模块压缩成 MPEG-4 视频流,再通过视频传输模块把数据发送到以太网进展传输
19、。.2 视频压缩模块 从摄像头直接采集过来的图像由于数据量较大,不利于进展网络传输,因此需先对其进展压缩编码。MPEG-4 是目前网络多媒体传输的主要格式,具有高效的压缩率,它利用很窄的带宽,通过帧重建技术来压缩图像数据,以求利用最少的数据获得最正确的图像质量,可满足实时视频传输的要求。本文用软件方式进展视频编码,选择开源高效的 Xvid 视频编码器对采集的视频图像数据进展MPEG-4 压缩编码。Xvid 视频编码器选用 0.9.2 版本,因为该版本已经实现了 MPEG-4 的 Simple ProfileSP特性,而 1.0 以后的版本增加了很多Advanced SPASP特性及其他功能,A
20、SP 特性的参加会增加运算复杂度,降低编码速度,由于嵌入式系统的处理能力有限,一般只使用 Xvid 的 SP 特性,因此实验选用 Xvid0.9.2 编码器,穿插编译并移植到嵌入式系统内。在宿主机Linux 操作系统中对 Xvid0.9.2 进展穿插编译的步骤如下:(1)解压缩 Xvid 源码:(2)进入 build/generic 目录,创立编译配置文件。由于 Xvid 没有针对ARM 的汇编优化,因此编译时需将汇编关闭;还需指定程序所运行的平台为arm-linux。执行命令:./configure-disable-assembly-host=arm-linux(3)编译:make;make
21、 install。(4)穿 插 编 译 完 成 后 会 生 成 静 态 库libxvidcore.a 和 动 态 库libxvidcore.so.*,用户程序可利用库文件所提供的编程接口调用 Xvid 里面的函数。摄像头采集的视频帧为 YUV420 格式,通过 Xvid 编 码器 的encoder_encode 函 数 实 现 视 频 压 缩,该 函 数 定 义 如 下:int encoder_encode(Encoder*pEnc,XVID_ENC_FRAME*pFrame,XVID_ENC_STATS*pResult);其中,pEnc 为编码器实例的句柄;pFrame 是 XVID_ENC
22、_FRAME 类型的构造体变量,负责传递参数信息给编码器,这些页脚下载后可删除,如有侵权请告知删除!信息包含色彩空间、编码质量、输入输出数据缓冲区指针等;pResult 是XVID_ENC_STATS 类型的构造体变量,可以返回编码操作执行的状态信息。3.2.3 视频传输模块 视频传输模块负责把压缩后的视频流传输到以太网,对实时性要求较高,本文使用实时传输协议Real-time Transport Protocol,RTP,它可以在一对一或者一对多的网络环境中实现流媒体数据的实时传输。JRTPLIB7是一个利用 C+语言实现的开源 RTP 库,它完全遵循 RFC 1889 设计,使用SOCKE
23、T 机制实现网络通讯,可运行于包括 Linux 和 Windows 在内的多种不同操作系统上。本文使用 JRTPLIB 进展实时流媒体编程,发送端操作系统为Linux,接收端为 Windows。在 Linux 平台上用 JRTPLIB 进展实时多媒体编程前,需先对 JRTPLIB 进展穿插编译。(1)JRTPLIB 初 始 化 通 过 调 用RTPSessionParams 类 的SetOwnTimestampUnit()方 法 设 置 一 个 恰 当 的 时 间 戳,调 用 SetMaximumPacketSize()方法设置允许传输的最大 RTP 包字节数(默认为1400 字 节);通 过
24、 调 用RTPUDPv4TransmissionParams 类 的SetPortbase()方法设置发送端数据传输所用的端口号(需为偶数)。初始化完这两个变量后,通过RTPSession 类的 Create()方法创立一个 RTP 会话。(2)JRTPLIB 数据传输 RTP 会话创立完成后,还需指定数据发送的目标地址,RTP 协议允许一个会话包含多个目标地址,增加或删除目标地址可通过RTPSession 类 的AddDestination()、DeleteDestination()、ClearDestinations()方法来实现。目标地址指定之后,通过 RTPSession 类的 Sen
25、dPacket()方法即可向指定的目标地址发送流媒体数据。SendPacket()是一个重载函数,具有多种形式,本文使用的形式为:int SendPacket(const void*data,size_t len,uint8_t pt,bool mark,uint32_t timestampinc);当一帧数据所占字节数大于允许传输的最大 RTP 包字节数 MaxPacketSize 时,需对一帧数据进展分割传输,使每次发送的字节数不大于MaxPacketSize,可使用 SendPacket()的 mark 参数来标识传输的 RTP 包是否属于同一帧数据,假设一帧数据需分成 N 次发送,那么
26、前 N-1 次发送的 RTP 包的 mark 标志设为 0,第 N 次发送的 RTP 包的 mark 标志设为 1,即以 mark=1 来判断页脚下载后可删除,如有侵权请告知删除!分割传输的数据是否发送完成。实现过程如下:do if(lengthMaxPacketSize)mark=0;发送长度为 MaxPacketSize 的 RTP 包;length=length-MaxPacketSize;else mark=1;发送长度为 length 的 RTP 包;break;/一帧数据发送完成 while(1);(3)JRTPLIB 数据接收 接收数据时,以 BeginDataAccess()函
27、数开场,以 EndDataAccess()函数完毕。为了能正确接收同一数据源的数据报,必须先对数据源表 source table加锁,BeginDataAccess()函数可实现这一加锁操作,确保在使用数据源表的同时轮询(poll)线程不能访问它,此时可进展数据接收操作,当正确接收一个数据报后,调用 EndDataAccess()函数即可实现对数据源表的解锁。页脚下载后可删除,如有侵权请告知删除!图3 RTP 发送与接收流程图 RTP 发送与接收流程图如图 3 所示。对于分割传输的 RTP 包,根据 RTP 包的mark 标志来判断一帧数据是否接收完成,假设mark=0,那么表示此RTP 包为
28、分割传输的数据包,需循环接收直到 mark=1 为止,然后把这些 RTP 包重新组合成完整的一帧数据。3.2.4 视频解码与回放 接收到的视频流数据经过 Xvid 解码器的 decoder_decode 函数进展解码,该函数定义如下:int decoder_decode(DECODER*dec,XVID_DEC_FRAME*frame);其中,dec 为解码器实例的句柄,frame 为 XVID_DEC_FRAME 构造体变量,包含解码前后图像数据的缓冲区指针、码流长度等信息。解码后的图像可在客户端软件上显示出来。4、展望与小结 在今后的工作中,需要对视频采集模块继续优化,因为摄像头采集的图像
29、信页脚下载后可删除,如有侵权请告知删除!息还不是很流畅,希望通过移植 QT 界面,来优化图像的传输,其次,网络摄像机是当今比拟热门的产品,我们虽然实现了远程监控,但是相关技术还有待与优化,对效劳器、客户端之间的编程模式还不是很熟悉,需要进一步学习,另外,设计中采用的 ARMg 芯片功能比拟强大,接口比拟丰富,在以后的实际工作中可以根据自己的需要,可以进展更加有效的扩展。未来的视频监控系统应该具有智能化的特点,能够自行对异常情况进展判断,并发出报警,这就需要适宜的运动检测算法对监控图像进展分析判断。另外未来的视频监控系统还可具有安防互动功能,与各种传感器、控制器连接,实现自动目标跟踪等功能。在网络视频监控系统的未来开展空间中,这些功能的实现是有充分技术保障的。而且随着技术的开展和成熟,视频监控系统的本钱也应该进一步的降低,一世英更广泛领域的需要。由于我们都属于初学者,虽然最终实现了这些功能,但是对中间相关的一些模块开发,比方驱动等等还不太了解,只是做了局部修改,还有待于进一步学习掌握,论文的撰写可能有某些缺乏,望教师指正。【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】