当前位置:首页 >> 信息与通信 >>

基于OpenCV和无线通信的智能视频监控报警系统设计


武汉科技大学 硕士学位论文 基于OpenCV和无线通信的智能视频监控报警系统设计 姓名:张景元 申请学位级别:硕士 专业:模式识别与智能系统 指导教师:陈和平 20090422

武汉科技大学硕士学位论文
摘要

第1页

近年来,随着视频监控系统不断地向数字化和智能化方向发展,智能视频监控系统越 来越多地出

现在了多个应用领域中。智能视频监控不但提高了传统视频监控系统的自动化
程度,而且对社会的经济发展、国防建设和社会治安也做出了重要贡献。

本文以智能视频监控报警系统为研究对象,对运动目标检测与跟踪算法进行了分析研 究。针对检测过程中视频监控背景极易受到干扰的情况,采用RGB颜色、色度、亮度为
建模参数的混合高斯模型检测前景图像,有效地消除了视频背景中的抖动干扰以及光线变

化产生的影响;着重讨论了卡尔曼滤波器跟踪算法和Mean Shift算法两种运动目标跟踪算 法的理论和实现过程,并将Intel公司的OpenCV视觉库与MFC应用程序相结合,利用
OpenCV提供的二次开发功能,实现了对运动目标的检测与跟踪,通过其对视频数据处理

的高度封装,简化了研发过程,减小了系统开发的工作量。
本文所设计的系统在检测到运动目标侵入后,不仅实现了声光报警功能,还将无线通 信技术应用在智能视频监控系统中,以西门子短信猫模块为基础,实现了一种专门用于监

控报警系统的无线通信报警方式,为系统提供了多样化的报警手段。 关键字:智能视频监控报警系统;运动目标检测与跟踪;OpenCV;无线通信

第1I页

武汉科技大学硕士学位论文
Abstract

With

the video surveillance system developing to digital

and

intelligent direction gradually often appeared in


in recent years,intelligent video surveillance system more

and more

number

of applications.It not only enhanced the automation of traditional video,but also made important contributions to the economic development,the national defense and the social order. This paper researched
on a on

simple intelligent video surveillance

and

alarm system,mainly

analyzed and

researched

the moving

object

detecting

and

tracking algorithm.As the

background that video surveillance is vulnerable to interference,the paper proposed to establish


mixed-Gaussian model with parameters of

color,hue,value,to disturbance

detect the foreground of video

images.It effectively eliminated the vibration

in the video

and

light influence produced by optical change.The paper also

surveillance background, discussed the theory and

realization process of system

Kalman

filter track algorithm

and Mean

Shift emphatically algorithm.The

combined

Intel Corporation’S OpenCV Library to the MFC applications,and had realized detecting and tracking by using the re-development functions of OpenCV.

the moving

object

OpenCV had greatly simplified the research and development process,and reduced the system’S work,because of its high degree packaging in video data.

When

detected

applied wireless realize system.


object,the system retained the sound communication technology into the system,used


moving

and

light.Simultaneously,it

Siemens modem module to


kind of wireless

communication

warning way,provided

new alarm method to the

Key

Words:Intelligent

Video Surveillance

and Alarm System;

Moving Object Detection and Tracking;OpenCV;Wireless Communication;

武汉科技大学 研究生学位论文创新性声明

本人郑重声明:所呈交的学位论文是本人在导师指导下,独立进行研 究所取得的成果。除了文中已经注明引用的内容或属合作研究共同完成的 工作外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。 对本文的研究做出重要贡献的个人和集体,均己在文中以明确方式标明。 申请学位论文与资料若有不实之处,本人承担一切相关责任。

论文作者签名:驭舟、十U

日期:珥早

研究生学位论文版权使用授权声明

本论文的研究成果归武汉科技大学所有,其研究内容不得以其它单位 的名义发表。本人完全了解武汉科技大学有关保留、使用学位论文的规定。 同意学校保留并向有关部门(按照《武汉科技大学关于研究生学位论文收录 工作的规定》执行)送交论文的复印件和电子版本,允许论文被查阅和借阅。 同意学校将本论文的全部或部分内容编入学校认可的国家相关数据库进行 检索和对外服务。

论文作者签名:溺渭、礼

指导教师签名:j篁墨耸一


期:翌2:皇:』2

武汉科技大学硕士学位论文
第一章绪论
1.1引言

第1页

在当今纷繁复杂的信息社会里,视频图像以其对客观事物生动形象的描述和直观具体 的表达,成为最重要的信息载体,其直观、方便和内容丰富等优点日益受到人们的青睐,
视频监控系统就是在这样的背景下应运而生的。视频监控系统从最初的以模拟电子为基础

的传统系统,到以数字化、网络化为标志的数字系统,视频监控系统实现了在技术与结构 上的飞跃。特别是随着计算机网络技术、多媒体处理技术、通信技术的普及和快速发展以 及信息化建设的不断深入,视频监控系统的数字化、网络化程度得到进一步加强,人们进
而对监控系统的智能化提出了更高的要求。

本文简要回顾了视频监控系统的发展历史,并对智能视频监控报警系统进行重点阐述。 1.2视频监控系统发展历史
监控系统从发展至今主要经历了三个阶段【例。

1.2.1模拟视频监控系统 上个世纪九十年代中期前的监控系统主要是模拟监控系统,常称为第一代监控系统。
虽然随着微处理器功能和性能的增强和提高,以及多媒体技术的应用,模拟视频监控系统 在功能、性能、可靠性、结构方式等方面都发生了很大的变化。但由于模拟视频监控系统

中仍以模拟视频信号作为信息流的形态,传输介质单一,系统的网络结构主要是一种单功 能、单向、集总方式的信息采集网络,因此系统的发展受到极大限制,其局限性也逐步暴 露出来。模拟监控系统的主要缺点有: 第一,通常只适合于小范围的区域监控。模拟视频信号的传输工具主要是同轴电缆, 而同轴电缆传输模拟视频信号的距离不大于1Km,双绞线的距离更短,这就决定了模拟监
控只适合于单个大楼、小的居民区以及其它小范围的场所。‘

第二,系统的扩展能力差。对于已经建好的系统如要增加新的监控点,往往是牵一发 而动全身,新的设备也很难添加到原有的系统之中。 第三,无法形成有效的报警联动。在模拟监控系统中,由于各部分独立运作,相互之
间的控制协议很难互通,联动只能在有限的范围内进行。

1.2.2基于微机平台的数字视频监控(DVR) 上世纪九十年代中期到本世纪初的几年,随着计算机处理能力的提高和视频技术的发 展,人们开始利用计算机的高速数据处理能力来进行视频的采集和压缩处理,利用显示器 的高分辨率实现图像的多画面显示,从而使得图像质量有了很大的提高,监控技术得到快 速的发展。但由于传输依旧采用传统的模拟视频电缆,所以被称为第二代半模拟半数字视 频监控系统。这一阶段使用的监控软件基本上都为PC单机DVR(数字硬盘录像机,Di酉tal
Video

Recorder)软件。第二代监控系统采用微机和Windows平台,在计算机中安装视频

第2页

武汉科技大学硕士学位论文

压缩卡和相应的DVR软件,不同型号视频卡可连接1/2/4路视频,支持实时视频和音频,

是第一代模拟监控系统升级实现数字化的可选方案。第二代监控系统适用于传统监控系统
的改造,对那些新建的监控系统、或者要求实现远程视频传输(超过2公里)的系统在功

能上则略显不足。该类系统一般在远程端设有若干摄像机和各种检测、报警探头与数据设 备,获取的图像信息通过各自的传输线路汇总到多媒体监视终端上,然后再通过通信网络 将这些信息传送到一个或多个监控终端。DVR系统从监控点到监控中心为模拟方式传输, 与第一代系统一样存在较多缺陷,要实现远距离视频传输必须铺设或租用光缆,并要在光 缆两端安装视频光端机设备,增加了系统建设成本,且不易维护。
1.2.3基于图像技术的视频监控系统

从2004年开始,伴随着网络带宽的增加及其实现成本的降低、硬盘容量不断加大、中 心存储成本降低,以及各种实用视频处理技术的出现,视频监控步入了全数字化的网络时
代。传统的以文字和图片为主的内容服务已不能满足用户的需求,具有视频和音频的多媒 体内容服务成为主流,这是互联网技术发展的必然趋势。这一时期的视频监控系统以数字

视频的压缩、播放、存储和传输为基础,依靠强大的视频图像处理平台软件实施管理,将 摄像机或网络视频服务器产生的视频数据直接传送到网络之中。 视频图像处理平台软件是系统的核心部分,它不仅能够实现对监控环境的简单记录和 一般报警功能,而且借助计算机强大的计算能力,可以帮助监控人员实时鉴别场景中的异 常情况,实现自动报警。系统通过检测、识别和跟踪图像序列中的运动目标,监视场景中 目标的活动,理解和描述目标的各自行为和相互间行为,从而使视频监控系统具有像人一
样的智能。视频监控系统的一般处理流程如图1.1所示。

摄像机-卜I运动量标分H运动翕标检H运动昙槲艮H行麓喾与
摄像机n

H运动晶标分H运动舄标检H运动最标跟H行餐孑与
图1.1视频监控系统的处理流程

L一

多路数 据融合 及 警报信 息发布

智能视频监控技术能够对目标进行智能的检测与跟踪,与传统的视频监控技术相比具 有许多优点。

首先,传统的视频监控系统虽然已经可以满足人们“眼见为实"的要求,但这种监视
系统要求监控人员不停地监视屏幕以获得视频信息,通过人为的理解和判断得到结论,并 做出相应决策,监控人员长期盯着众多的电视监视器成了一项非常繁重的任务。智能视频

监控技术的应用则完全改变了这一模式。其通过前端功能强大的分析模块,自动对视频图
像进行分析,得到处理结果。

此外,运用智能视频监控技术还能大大提高系统响应速度,降低事件误报的概率。智 能视频监控具有强大的视频分析处理能力,能够有效地降低无用信息对监控人员的千扰, 精确地分析异常事件类型特征,在最短的时间内分析出结果。

武汉科技大学硕士学位论文

第3页

正是由于智能视频监控技术具有使用方便、监测面积广、设备简单、响应速度快等优
点,其取代传统监控技术的趋势越来越明显。

1.2.4智能视频监控系统研究现状 智能视频监控技术是计算机视觉领域一个新兴的研究课题。它是指对监控点某个范围
内场景的监控,是一种新的侵入探测技术。智能视频监控采用计算机对视频监控信号进行 分析,提取目标检测区域内运动物体的活动特征与活动信息,将这些内容与设定的报警规

则相比较。当满足报警条件时(即发现异常行为,如不允许侵入的区域出现了侵入行为等), 自动产生报警信号,并提醒监控人员查看,最后以一定传输形式将报警信息发送到警报接
收终端。视频智能监控系统是一个庞大、复杂的系统,其关键技术包括了多视频融合、运

动检测、运动目标分类、运动目标跟踪和对监控场景中目标的行为理解等方面,涉及计算 机视觉、图像处理、模式识别和人工智能等许多学科的内容。其中,运动检测、运动目标 分类和运动目标跟踪属于图像处理的范畴,是初级层次的处理,是视频监控系统中研究较 多的几个问题;图像分析和理解属于人工智能的范畴,是高层次的处理,是近年来被广泛
关注的研究热点I驯【51l【521。

自上个世纪末期开始,国外科研工作者在视频监控领域进行了大量的研究探索工作, 取得了很多成果,并多次召开与此相关的国际会议和研讨会。欧美等发达国家还在这一领
域内展开了一些大型项目的研究,如美国国防高级研究计划局资助研制的视频监视与监控 系统VSAM,该系统以卡内基梅隆大学为首,麻省理工学院等高校参与,目标是开发自动

视频理解技术,用于实现未来战争中那些人力监控费用昂贵、具有高度危险或者人力无法
到达的场所的监控;欧盟也资助研发了PRISMATICA系统,该系统融合了多种智能监控检 测设备,主要应用于地铁站的安全监控。

国内在这一方面起步较晚。目前国内使用的视频监控系统大部分均侧重于对视频数据 的压缩、存储和传输,视频终端接收到数据后需要由人来实时监测分析,耗费了大量的人 力物力,远远无法满足人们对监控系统日益增长的智能化要求。直到2004年,一种基于 视频运动分析检测技术的入侵探测器开始在我国出现,但核心技术仍然是从国外引进,国 内技术还不足以转化成产品。不过可喜的是国内有很多研究单位或机构都对此技术进行了 研究,并取得了很好的研究成果。中国南京新奕天科技有限公司(Topsky)与香港大学合 移动目标,还能满足禁区、入侵检测等特定的安全需求。
13本文所做工作及论文的内容安排

作开发出了一款高性能智能视频监控设备—ⅦinkSman,该设备不仅能精确检测出多个

13.1本文所做工作 本文以建立一个简单的智能视频监控报警系统为目标,实现对侵入监控区域物体的检
测与跟踪,并根据检测结果发布实时警报信息。笔者所做工作如下: (1)对视频监控系统的发展过程进行了调研,给出了视频监控报警系统的设计方案;

(2)在MFC应用程序中,运用V刚实现了硬件视频设备连接、获取视频数据,并将获

第4页 取的视频数据以图像文件格式存储;

武汉科技大学硕士学位论文

(3)对比了帧间差分法、光流法和背景差分法等运动目标检测方法的优劣,将RGB和 HSV色彩空间结合在一起,实现了一种基于混合高斯模型的目标检测方法; H)将Me卸Shia跟踪算法和卡尔曼滤波算法相结合,实现了运动目标跟踪,通过调节 模型的参数达到较好的跟踪效果。当检测到异常情况发生时,产生报警信息,并利用短信 猫模块将警报信息发送到预设的接收端,将无线通信技术应用到报警系统的设计中; (5)将IIltel公司的openCV视觉库运用在MFC应用程序中,简化了系统开发的工作量;
13.2论文的内容组织与安排

本文共分为七个章节,各个章节内容安排如下: 第一章,讨论了课题开展的背景和研究意义,对视频监控技术的发展现状以及智能监 控系统的研究现状做了简要的介绍,并对论文的主要工作和组织结构进行了安排。

?第二章,介绍了基于ⅦW方式的视频捕获过程,对视频捕获过程中的区域创建、参数
设置和状态回调函数的应用做了详细的描述。 第三章,分析了运动目标检测与跟踪技术的相关算法,给出了混合高斯模型、Me粕Shift 跟踪模型、卡尔曼滤波算法的实现过程。

第四章,介绍了OpenCV视觉库的基本内容,结合OpenCV视觉库函数实现了运动目
标检测与跟踪。

第五章,介绍了通用报警系统方案的设计方法,重点讨论了万象短信猫在系统无线报 警功能上的应用,以及基于多线程技术的短信息发送功能的实现。 第六章,给出了系统的设计过程,实现了一个简单的智能视频监控报警系统。
第七章,总结了本文所设计系统的优劣以及系统的展望。

武汉科技大学硕士学位论文
第二章视频捕获

第5页

视频捕获与实时处理是目前图像处理系统中的关键技术,能否准确捕获指定的视频图 像,进而实现精确地数据分析与处理,关系到整个系统的成败。视频捕获是指由专用的视 频采集卡捕获声频和视频信息,再将其进行数据化和压缩处理,然后就可对这些数据进行
保存、回放、传输等各种操作。 当前,在Windows平台下开发视频应用程序一般采用两种方式:一种是基于视频采集

卡所附带的二次软件开发包SDK(Software Development Kit)进行。这种方式的优点是应 用方便、容易上手;缺点是对硬件的依赖性较强、灵活性差,且功能参差不齐,不能充分
满足各种视频应用程序的开发需要。

另一种方式是基于Ⅶw(Video

for

Windows)进行的。ⅦW是Microsoft公司为开发

Windows平台下的视频应用程序提供的软件工具包,提供了一系列应用程序编程接口 (API),可以被大多数的视频采集卡支持,并有多种视频压缩驱动供选择(当然视频压
缩可以自己开发),采集卡支持摄像头、TV等多种输入。用户可以通过API函数很方便地

实现视频捕获、视频编辑及视频播放等通用功能,还可利用回调函数开发更复杂的视频应
用程序。

ⅦW的特点是播放视频时不需要专用的硬件设备,而且应用灵活,可以满足视频应用 程序开发的需要【引。Windows操作系统自身就携带了VFW,系统安装时会自动安装ⅥW的
相关组件【4】【5】。本文所选择的VC++开发工具,自4.0以来就支持VFW[1】【6】用,这在一定程度 上简化了视频应用程序的研发过程。
2.1

VFw体系结构

ⅦW以消息驱动方式存取视频设备数据,可以很方便地控制设备数据流的工作过程。
目前,大多数的视频采集卡驱动程序都支持VFw接口,VFw接口主要包括多个动态连接库

组件,通过这些组件间的协调合作完成视频捕获、视频压缩及播放功能【21。Ⅵ阿体系结构
如图2.1所示。
采集程序 编辑程序 回放程序

AVICAP.DLL AVICAP

MCIAVI.DVR ACM
AVICAP

MSVIDEO.DLL MCIWnd

MSVIEO.DLL

AVIFILE.DLL

AVICAP.DLL AVICAP

l视频输入通道

文件流句柄 图2.1 VFW各模块问联系图

(1)AVICAP.DLL:主要实现视频捕获功能,包含了用于视频捕获的函数,为音像交 错AVI(Audio
video

interleaved)格式文件和视频、音频设备程序提供一个高级接口;

(2)MSVIDEO.DLL:包含一套特殊的DrawDib函数,用来处理屏幕上的视频操作。能

第6页

武汉科技大学硕士学位论文

够将视频捕获窗口与驱动设备连接起来,支持ICM视频编码服务;
(3)MCIAVI.DRV:包含MCI(Media 回放功能:
Control

Interface)命令解释器的驱动程序,实现

(4)AVIFILE.DLL:包含由标准多媒体I/O函数提供的更高级的命令,提供对AVI文件的
读写操作等文件管理功能;

(5)ICM(Installable (6)ACM(Audio

Compression

Manager):即压缩管理器,提供对存储在AVI文件中

视频图像数据的压缩、解压缩服务:

Manager):即音频压缩管理器,提供实时音频压缩及解 压缩功能,与ICM服务相似,适用于波形音频。
Compression 2.2

VFw的基本功能 VFw从视频捕获的硬件中获取数据,并按照需要的格式进行存储、转换,它提供的主

要功能如下: (1)捕获视频流和音频流,并保存到一个AVI文件中; (2)动态地同视频和音频输入器连接或断开;

(3)设置视频采集的显示模式为叠加(OverLay)模式或者预览(PreView)模式; (4)在捕获时,可指定捕获数据的文件名,并能将捕获的内容拷贝到另一个文件中;
(5)设置视频捕获速率; (6)创建、保存或载入RGB格式下的调色板;

(7)将捕获的图像和相关的调色板拷贝到剪切板; (8)按用户要求捕获某一帧数字视频数据,并将单帧图像以DIB格式的文件保存; (9)实时获取每一帧数字视频数据。 2.3视频显示模式 vFw在显示视频时提供两种模式,预览模式(PreView)和叠加模式(OverLay)。在
预览模式中,视频帧先从视频捕获卡传到系统内存,接着采用GDI函数在捕获窗中显示, 该显示模式所支持的视频采集格式为RGB格式,且需要占用一定的CPU资源,其功能通过 capPreview宏实现。叠加模式中视频捕获是将VGA卡的输出信号和自身的输出信号叠加后

形成组合信号显示在计算机监视器上,该显示模式所支持的视频采集格式为YUV格式,不 需占用CPU资源,其功能通过capOverlay宏完成。叠加模式速度较预览模式快,但如果需 要在视频显示前对视频信号进行处理,则必须使用预览模式。Preview模式和Overlay模式
都只是用于显示,与采集的过程并无多大关系,它们主要应用于采集帧的本地回显。 2.4常用的数据结构

用v刚编写视频捕捉程序,往往要用到以下与视频捕捉相关的数据结构:
(1)CAPSTATUS:定义捕获窗口的当前状态,如图像的宽、高等; (2)CAPDRIVERCAPS:设置捕获设备所拥有的功能,如有无视频叠加能力、有无控制 视频源、视频格式的对话框等;

武汉科技大学硕士学位论文

第7页

(3)CAPTUREPARMS:包含控制视频流捕获过程的参数,如捕获帧频、指定键盘或鼠
标键以终止捕获,捕获的时间限制等;

H)VIDEOHDR-定义了视频数据块的头信息,在编写回调函数时常用到其数据成员 lpData(指向数据缓存的指针)和dwBuferLength(数据缓存的大小)。
其中,前三种结构都有相应的函数来设置和获取该结构包含的信息。 2.5回调机制

对采集的视频数据进行实时处理时需要用到回调函数,回调函数是至今为止最有用的 编程机制之一。在Windows系统中,回调函数更是窗口过程、钩子过程、异步过程调用所 必需的,在整个回调过程中自始至终地使用回调方法。回调函数是一类特殊的函数,其功 能类似于中断函数,其调用过程由系统完成,而回调函数的具体内容则由用户自己设定。
开发者可以注册回调方法以获得加载/卸载通知、未处理异常通知、数据库/窗口状态修改

通知、文件系统修改通知、菜单项选择、完成的异步操作通知、过滤一组条目等。在系统 中,当某一回调函数被设定后,并且满足某一特定条件时,系统将自动调用该回调函数。

ⅥW的回调函数主要包括状态回调、错误回调和视频回调,前两种回调函数比较简单,我
们将重点介绍视频回调的实现过程。 视频回调包括单帧回调和视频流回调两种,该类函数在使用之前先由用户设定函数的 内容,然后分别以capSetCallbackOnFrame和capSetCallbackOnVideoStream宏函数将其注册 到系统中,而判断调用条件是否满足以及对该函数的调用等工作则都由系统自动完成,不

需要显示地调用命令。两个宏函数简要介绍如下:
(1)capSetCallbackOnFrame(hWnd,fpFrameProc),注册帧回调函数。只要一启动视频捕 获,当一帧结束后它就立刻产生同步动作,而究竟是哪一个回调函数响应,则由登记在设 置宏函数中的fpFrameProc参数来决定。此响应是一帧一帧地在同一个缓冲区内进行刷新 的,即每帧数据的首址不变,所以开发者可借助这一特点来编写图像处理程序,但不能过 长,否则视频显示不流畅。另外,回调函数要提前定义,即在程序的头部进行定义。

(2)capSetCallbackonVideoStream(hwnd,fpVideoProc)。与capSetCallbackOnFr锄e不同
的是,它要和capCaptureSequenceNoFile(hWnd)或capCaptureSequence(hwnd)酥d合使用,只 有当其中的一个被执行后,回调动作才会产生。此响应同样是一帧结束便产生回调,但每 次数据都追加在上一帧数据的后面,直到所分配的数据缓冲区用完为止(即缓冲区无效)。 同样,开发者可按照这一特点来编程。
2.6视频捕获过程 视频数据的采集是整个应用的基础,根据不同的应用需求,可以将视频帧采集到的文

件或缓存直接加以处理。利用Ⅶw获取实时视频数据时,通常可以用视频处理的回调机制
来获得实时数据缓冲区的首址和长度,从而获得视频数据,实现视频数据的实时处理。视 频捕获过程主要由以下五个步骤完成,工作流程如图2.2所示。

第8页 2.6.1创建捕获窗口

武汉科技大学硕士学位论文

在进行视频捕获之前必需要先创建一个捕获窗口,在此基础上进行所有的捕获及设置 操作。捕获窗口可用capCreateCaptureWindow匿1数来创建,其窗lZl风格成设置为WS—CHILD
和WS VISIBLE参数。下面的例子用capCreateCaptureWindowfl§数创建了一个捕获窗口:

hWnd=capCreateCaptureWindow(””,WS—CHILD I WS_VISIBLE,x,Y,
width,height,hWnd,0);

创建视频捕获窗口① 注册系统划调函数⑤

获取视频采集设备的能 力及状态信息 设置窗口显示模式④

获取有关视频捕获窗口 缺省参数 设置捕获窗口参数③

捕获图像到缓存或文件 并进行相应处理 中止视频捕获并断开与

与视频捕获设备连接②H

I视频采集设备的连接

图2.2视频捕获软件实现的工作流程

2.6.2连接视频捕获设备驱动程序 单独定义的捕获窗口是不能工作的,它必须与一个设备相关联才能取得视频信号。可
以用WM_CAP DRIVER_CONNECT消息通知捕获窗口连接视频捕获设备驱动,用 capDfiverDiscormect宏断开视频捕获驱动。 foK=SendMessage(hWnd,WM_CAP_DRIVER_CONNECT,0,0); 其中,hWnd是接收消息的窗口句柄,也就是刚刚创建的视频捕获窗口句柄。 或者也可以用一个宏去连接视频捕获设备驱动: ?.foK=capDriverConnect(hWnd,0); 在捕捉完毕后再调用capDriverDisconnect宏断开视频捕获驱动:

capDriverDisconnect(hWnd);
2.6.3设置视频设备的属性
CAPlrI 7REPARMS数据结构包括了视频流的控制参数,通过设置captureParms结构变

量的各个成员变量,可以控制设备的采样频率、中断采样按键、状态行为等。它允许完成
以下任务:

(1)指定帧速度(Frame Rate);
(2)指定视频分配的缓存大小; (3)关闭或打开音频捕获; (4)设定捕获的时间间隔; (5)指定捕获设备(MCI设备、VCR或者影碟);

(6)指定结束捕获的键盘或鼠标操作;

武汉科技大学硕士学位论文
(7)指定适用的视频类型。 向视频捕获窗体发送wM—C~P-GET_SEOENCE_SETUP消息或者使用宏函数

第9页

capCaptureGetSetup,可以获得一个CAm yREn嘘MS数据结构的对象,当前连接的视频设
备信息就保存在这个结构体对象里面,此对象的成员变量可以根据系统需要进行修改。修 改完毕后,发送WM—CAP_SET
SEQUENCE

SETUP消息给捕获窗体,并把这个

CAmJREPARMS对象作为传送参数,或者使用宏capCapturesetSetup,就可使修改的设置
生效。之后还可以用capPreviewScale、capPreviewRate等函数设置预览的比例与速度,直接 使用设备的默认值也能满足大部分的系统需求。
2.6.4打开预览

利用函数capOverlay选择采用叠加模式预览,从而减小系统资源的占用率,加快视频显
示速度。然后用capPreview启动预览功能,这时就可以在屏幕上看到来自摄像机的图像了。 下面的例子是用capDdverGetCaps宏来检测一个视频捕捉驱动是否支持叠加模式,如果 是则用capOverlay宏允许叠加模式;
CAPDRIVERCAPS CapDrvCaps;

capDriverGetCaps(hWnd,&CapDrvCaps,sizeof(CAPDRIVERCAPS)); if(CapDrvCaps.fHasOverlay) capOverlay(hWnd,TRUE);
下面的例子是用capPreviewRate宏来设置帧输出率为66MS(66毫秒),然后用capPreview 宏来设置捕捉窗口的预览模式。 capPreviewRate(hWnd,66);

capPreview(hWnd,TRUE); capPreview(hWnd,FALSE); 通过以上四个步骤就可以建立一个基本的视频捕获程序,但系统中最重要的还是处理
从设备捕获到的视频数据,因此要使用捕获窗口的回调函数,获取每一帧的视频数据。

2.6.5注册回调函数
一个程序可以为捕获窗12登记多个回调函数,以便在以下几种情况发生时通知程序: (1)状态改变; (2)错误发生;

(3)视频框架和声频缓冲区变为可用;
(4)应用程序在捕获视频流的过程中接收到数据。 在成功创建视频捕获窗口以后,使用以下四个宏为系统注册回调函数,分别对应上述 四种状态的改变: (1)capSetCallbackOnStatus(hWnd,fpStatusCallback);

(2)capSetCallbackonError(hWnd,fpErrorCallback); (3)capSetCallbackOnFrame(hWnd,fpFrameCallback); (4)capSetCallbackOnVideoStream(hWnd,fpVideoCallback);

第10页

武汉科技大学硕士学位论文

其中,宏的第二个参数表示回调函数入口地址,也就是回调函数的函数名。本文重点
研究框架回调函数fpFrameCallback,此函数响应后存放了每一帧图像的实时数据。框架回 调函数原型及其实现代码如下:
LRESULT PASCAL

FrameCallbackProc(HWND hWnd,LPVIDEOHDR lpVHdr)

{ if(NULL==hWnd 0 0==lpVHdr->dwBytesUsed)
retum FALSE;

//视频数据处理
return TRUE;



其中,lpVHdr是一个VIDEOHDR结构体类型的指针变量,该结构体封装了图像的基本
信息,被定义为:
Typedef Street


LPBYTE lpData; dwBufferLength; dwBytesUsed; dwTimeCaptured; dwUser; dwFlags;

//指向缓冲区的指针 //缓冲区的长度 //缓冲区中使用的字节数 //捕捉时间,与数据流中第一桢的捕捉时间有关

DWORD

DWORD DWORD DWORD DWORD DWORD

//32位的特定客户区数据
//标志位 //保留字,常用做缓冲队列

dwReserved[4];

)VIDEOHDR; lpVHdr.>lpData指向了从摄像头获取的原始图像数据,此数据是DIB(与设备无关位图) 位图中去除BITMAPFIU!HEADER(位图文件头)、BITl山姐B盯OHEADER(位图信息头)
和RGBQUAD(位图颜色表)后,剩下的位图像素数据部分【471。 至此,数据采集功能已经设置完毕,本系统中以lpVHdr.>lpData指向的像素数据作为检 测跟踪的研究对象的。

武汉科技大学硕士学位论文
第三章运动目标检测与跟踪

第11页

运动目标检测与跟踪就是把运动的物体提取出来,对其进行编号并获取其运动轨迹的
过程。在智能视频监控系统中,运动物体检测和跟踪是提高系统智能性的关键技术。系统

在检测和跟踪到物体后可以对物体进行特征提取以及识别物体的种类、大小、运动方向和
其他所必要的信息。

3.1运动目标检测方法比较
运动目标检狈lJ(Moving--Objectives Detecting)作为智能视频监控系统重要的组成部分, 是指从视频流图像序列中实时提取目标运动变化的区域,检测出图像序列中目标的运动信 息,滤除与运动目标无关的背景的过程。运动目标检测的算法依照目标与摄像机之间的关 系可以分为静态背景下运动检测和动态背景下运动检测【29J。 静态背景下运动检测是摄像机在整个监视过程中不发生移动,只有被监视目标在摄像 机的视角范围内运动,这个过程只有目标相对于摄像机的运动。静态背景下运动目标检测 主要有三种常用方法:帧间差分法、背景消除法和光流法【18】f19l。它们各有其优缺点,具体 应用时需要将几个方法相结合方可得到较好的结果。 动态背景下运动检测是指摄像机在整个监视过程中发生了移动(如平动、旋转、或多

自由度运动),被监视目标在摄像机的视角范围内也发生了运动,该过程产生了目标与摄 像机之间复杂的相对运动。动态背景下运动检测由于存在着目标与摄像机之间复杂的相对 运动,所以算法也要比静态背景下运动目标检测算法复杂得多。常用的动态背景下运动检
测算法是匹配块法、光流估计法、图像匹配法以及全局运动估计法等方法【r71。 本文研究的是静态背景下的运动检测与跟踪。 3.1.1帧间差分法

帧间差分法是利用了时间序列上视频图像像素的统计特征,对相邻的两帧图像进行相
减,把视频帧分割为静止的背景区域和变化的运动区域或遮挡区域。

定义t时刻和t+1时刻两帧图像的偏差为胛(f,,,t),DF(i,j『,f)可用式3.1表示:
口旷(f,-『,f)=F(i,-『,f)一e(i,-j『,t一1)
(3.1)

其中,G,j『)表示像素位置坐标,t为时间,,(f,.『,f)表示当前帧图像。在静止背景、光
线基本保持不变的前提下,如果一幅图像某一位置的物体发生变化,那么该点对应位置的

灰度也将发生变化,DF(i,jf,f)不为零;而没有物体发生变化的部分灰度则不会变化或变化

不大,Dr(i,j『,f)一般为零。由于噪声的存在,胛G,j『,f)几乎不可能完全等于零。由此引
入了阈值刃l,用以区分噪声引起的和由背景运动的变化引起的偏差【删。用M(i,j『,f)表示检
测出的运动图像,则有:

.M(f,j『,f)。£ Iu

旷lF(f,j『,:)一Fo',,‘_1l>砌
else



(3.2)

第12页

武汉科技大学硕士学位论文

选择合适的阈值刀l可以有效地抑制噪声,获取运动信息及分割图像。阈值过低会减弱 对噪声的抑制效果,而过高的阈值则会抑制图像中的有用信息。

帧间差分运动检测方法算法简单、程序设计复杂度低,对于动态环境具有较强的自适 应性,但一般不能完全提取出所有相关的特征像素点,只能检测到目标的边缘,在运动实 体内部容易产生空洞现象。而且当运动目标停止运动时,帧间差分方法一般便会失去效果。 目前一种比较普遍的改进算法是采用连续的三帧图像计算出两个帧差图像,再令它们对应
的像素相与,则能较好地检测出中间帧图像中运动目标的形状轮廓。这种方法的优点是速

度快,能得到目标的精确轮廓,但是运动区域内部仍会出现的空洞现象,不利于后续处理。
3.1.2光流法

光流法是目前运动图像分析的重要方法,它的概念是由Gibson于1950年首先提出的。 当物体与背景发生相对运动时,运动物体在被观测图像上对应点的亮度模式也在运动,这
种像素点运动的瞬时速度场就是光流。光流表达了图像的变化,由于它包含了目标运动的 信息,因此可被观察者用来确定目标的运动情况。由光流的定义可以引申出光流场,它是 指图像中所有像素点构成的一种二维(2D)瞬时速度场,其中的二维速度矢量是景物中可 见点的三维速度矢量在成像表面的投影【11】。所以光流不仅包含了被观察物体的运动信息,

而且还包含有关景物三维结构的丰富信息。对光流的研究成为计算机视觉及其相关研究领
域中的一个重要部分。

光流法的基本原理可描述如下:赋予图像中的每个像素一个速度矢量,形成一个图像 运动场,根据各个像素的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动 目标,则光流矢量在整个图像区域是连续变化的,当物体和图像背景存在相对运动时,运
动物体所形成的速度矢量必然和区域背景速度矢量不同,从而检测出运动物体的位置I牾J。

由此可见,光流的计算是运用光流进行运动检测的关键。设G(f,j『,f)为t时刻图像点工(f,_|『)
(该点像素值也表示为x(f,_『),下同)的灰度;“,y分别为该点光流矢量沿i和_『方向的

两个分量,且有“=di/dt,y=dj/dt。根据图像灰度守恒假设,dG(i,jf,t)/dt=0,导出光
流失量的梯度约束方程146J:

警+aiy+竿。0U +——y+——一 警 at al
——

(3.3)
’ 。

Ij.j J

式中竺、竺、坐分别为参考像素点的灰度值沿f、,、f三个方向的偏导数。 af af


由于仅由一个基本约束是无法计算出两个光流矢量的,为了准确求出光流场的分布, 人们在光流约束方程的基础上提出了各种各样的约束条件和计算方法【2引,如:微分法、匹

配法、频域法和马尔可夫随机场方法等。在实际计算中,广泛采用Hom和Schunck提出
的光滑性假设算法,此算法假设光流场是一致平滑的,忽略了边缘信息,致使该算法有明

显的缺陷。但作为一个经典算法,Horn和Schunck的算法具有非常重要的意义,许多运动
图像分析的研究都会与这种经典方法做比较并进行改进。

光流法的优点在于光流不仅携带了运动目标的运动信息,而且还携带了有关景物三维

武汉科技大学硕士学位论文

第13页

结构的丰富信息,它能够在不知道场景任何信息的情况下检测出运动对象,并且可用于摄 像机运动的情况142】。但多数光流法计算复杂耗时,除非有特殊的硬件支持,并且很难实现
实时检测,光流分割的成功与否与被估算的光流场的正确性紧密相关。这种光流分割对噪

声较灵敏,且对运动性边缘估算不精确、计算较复杂,估算的运动数目需要预先确定,为
了得到最佳结果不得不同时处理运动估算和分割。 3.13背景差分法

背景差分法是目前运动检测中最常用的一种方法,它是利用当前图像与背景图像的差 分来检测运动目标的一种技术。背景差分法可以看作是帧间差分法的一种特殊情况,即将 相邻的前一帧图像用背景模型代替。一般背景差分法都包含以下三个步骤: 首先,为背景中每个像素点进行统计建模。最简单的背景模型是时间平均图像,即利
用同一场景在一个时段的平均图像作为该场景的背景模型。由于该模型是固定的,一旦建 立之后,对于该场景图像所发生的任何变化都比较敏感,比如阳光照射方向、影子、树叶

随风摇动等。大部分的研究人员目前都致力于开发更加实用的背景模型,以减少动态场景
变化对运动目标检测效果的影响。 其次,用当前图像与己知背景图像比较,找出在一定阈值限制下当前图像中的背景像

素点。定义当前图像为F(f,j『,f),背景图像为B(i,j『,t),则差分图像可以表示为:
d0,歹,tJ 1 l,婶,J,t)-B0,j『,tl (3.4)

最后,对图像进行二值化处理,从而得到前景图像(运动目标)的集合。设x(f,f)为差
分图像中任何一点,,砀为灰度阀值,二值化过程可描述为:

啪_砌讳

d(f,J『,f)>刀l
else

(3.5)

要保证一个视频监控系统长期稳定的运行,背景差分法就要具备很强的鲁棒性。背景
差分法的难点在于如何建立背景模型和保持背景模型更新,用以弥补由动态场景中的光线 变化等因素带来的不利影响。在理论研究中我们都假定背景在相当长的一段时间内是不发 生变化的,然后以此为基础求解运动区域。然而,现实世界场景中的背景是极其复杂的,

即便是室内环境也存在光线变化等各种干扰因素,固定背景的方法在此就有很大的局限 性。比较实用的方法应能够适应背景随时间的缓慢变化,检测出背景中物体的移入和移出, 检测出光照的突然变化,排除背景中如树叶晃动等干扰因素。此外,如果能尽量消除运动 目标的阴影影响,将会大大提高后续工作中运动目标跟踪的实现效果。为了满足这些要求,
目前常用的改进型背景差分法主要有以下几种:

(1)均值背景法:将训练阶段连续捕获的N帧图像序列像素点的平均值作为背景模型
参考图像,在运动检测时把当前帧中与背景模型参考图像差值小于某一阈值的像素点作为

背景。这种方法在监控场景不是很复杂、场景中运动物体所占比例较小的情况下效果较好。 与此方法类似的还有中值背景法、均值均方差模型法。 (2)线性预测法:根据先前的图像,采用l(almaIl滤波器或Wiener滤波器等预测像素

第14页 点在当前图像中的取值范围。.

武汉科技大学硕士学位论文

(3)基于分布模型的非参数估计法:这种方法依据数据本身的结构来得到概率密度函数

,(?),不需要先验概率密度函数,也不需要设置参数。常用的非参数估计法为核估算法。
(4)基于分布模型的参数估计法:此方法根据图像数据找到一个与之匹配的已知概率模

型,即由已知的一系列图像数据和参数为H的分布叩(“),找到参数的最优估计五,从而得 到估计概率密度函数尹(?)。此种方法依赖于模型形式,在确定数据符合某一模型的基础上,
可以只通过几个参数就能描述出整个概率分布,将大量数据压缩成几个简单的参数,用参 数代替概率密度函数。但是,如果概率模型假设不正确的话,此概率估计将产生偏差【lⅢ。 3.2基于混合高斯模型的目标检测方法 在自然现象和社会现象中,大量随机变量都服从或近似高斯分布(正态分布),如材料
性能、测量误差、人体高度等。视频监控场景图像中的像素点同样也满足高斯分布,因此

应用高斯模型可以很好地对场景进行建模。

设图像上某一点z(f,.『)随着时间的变化其像素取值为k,x:,…,t,…}(下标t表示时
间)。如果该点一直是背景点,那么石的取值应该在某个固定的值∥附近。如果该点位置有

运动物体,x的取值将与Jc‘有很大的差别。因此,可以设场景中任意一点工《f,f)服从均值为

Jcl、协方差为仃的高斯分布,t时刻该点的分布模型为,7(f,.『,t,U,盯),若

bG,_『,t,U,口)一工(f,j『】<Th(Th为阈值,一般可取2.5a),则该点与模型匹配,判定其为背
景点,否则为前景点1241。若对图像上的每一个像素点都使用高斯模型来描述,则实现了整 幅图像的背景建模。同时,由于随着时间的变化背景图像也会发生缓慢的变化,可对像素 点的参数模型进行不断更新,其更新模式为:

∥Q)一(1一a)lu(t一1J+似(f,.『,tJ

(3.6) (3.7)

D2G),(1一ab 20一1)+口(∥G)一工O,J『,f))2
背景变化的快慢。口越大,更新速率越快。

口是介于O和1之间的常数,表示背景的更新速率或学习速率,其大小影响了模型中

以上介绍的高斯模型通常被称作单高斯模型,可以实现背景固定情况下的前景检测。 但在很多时候背景中还包含一些复杂的运动,如随风飘动的树叶、水面波动等等,这些都 会引起目标检测与跟踪系统的误操作,任何一个高性能和高可靠性的目标跟踪系统都需要 处理此类误报问题。假设背景为蓝色的天空和绿色的树叶,树叶在微风下摇晃。当我们获
取一帧图像时,视频帧图像中某些点的像素值有可能在蓝色(天空)和绿色(树叶)间不

停变换。此时已经无法使用单高斯模型来描述该像素,因为如果均值为蓝色,那么当树叶 飘过该像素点时,树叶被当作前景;反之亦然。此时就需要两个高斯模型来描述该像素点,
一个高斯模型的均值是蓝色,一个高斯模型的均值是绿色,这就组成了一个混合高斯模型, 如图3.1所示。

武汉科技大学硕士学位论文

第15页

图3.1混合高斯模型示意图

3.2.1建立背景模型 本文采用混合高斯模型实现了前景目标的检测。混合高斯模型使用K个高斯模型来表 征图像中各个像素点的特征,对于单个高斯模型的选取,可以选择以红色、蓝色、绿色三 基色所组成的RGB色彩空间,也可以选择以色度(Hue)、饱和度(Saturation)、亮度(Value) 所组成的HSV色彩空间。在获得新一帧图像后更新混合高斯模型,用当前图像中的每个 像素点与混合高斯模型匹配,如果成功则判定该点为背景点,否则为前景点。对每一个像

素点随时间变化的序列k,x:,…,It,…},用混合高斯模型来为其建模,定义当前观测点的
像素值的概率为:


P(x(i,j『,f))=罗∞。O)7。(f,j『,f,肛。O),仃。O)) 篇

(3.8)

其中,r/.O,,,,,/z。OX∥。O))是f时刻第露个高斯模型的分布函数,其均值为心O)、协方 差为吒O)。%O)是权重系数,反映了第n个分布最近时段内在模型里出现的频度。K为高
斯模型个数,取值范围一般为3~5,K值大小决定了系统所能表征背景的复杂程度,系统
的计算量与K值成iE LL[纠。本文中K值取为5,用色彩空间中的R、G、B、Huc、Value

五个参量作为参数建立混合高斯模型。混合高斯模型的创建可分为模型结构定义和参数初 始化两个部分,模型结构定义为:
typedef struct GaussBGModel


Void Void GaussBGPoint 木background; ?foreground; 宰g_point;

)GaussBGModel; 其中,foreground和background分别指向前景图像和背景图像,系统在获取第一帧视 频图像后将按照图像大小动态分配这两个指针指向的存储空间。g_point是一个结构体数组 指针,该结构体数组存放着每个像素点混合高斯模型的相关信息,其大小与图像大小一致, 也是动态分配的。GaussBGPoint结构体定义为:
typedef struct GaussBGPoint


GaussBGValues掌g.values;

)GaussBGPoint;

第16页

武汉科技大学硕士学位论文

由结构体GaussBGPoint的定义可见,每个像素点对应的g_point结构又都对应着一个
结构体指针,该结构体指针指向的数据就是K个单高斯模型的参数,定义描述如下:
typedef struct GaussBGValues


double double double weight; variance; mean;

}GaussBGValues;
其中,weight是模型权重,mean表示像素点均值,variance表示像素点方差。至此, 一个空的混合高斯模型建立完毕。 接下来我们需要对混合高斯模型中的方差、均值、权值等一些参数初始化,并通过这 些参数求出建模所需的数据。由于初始化的高斯模型是一个估算的模型,各参数都需要进 行不断的调整,因而各参数值的初始值没有十分明确的要求。但为了将尽可能多的像素包 含到一个模型里面,从而获得最准确的模型,一般都将方差设置得尽量大些(如15),而

权值则尽量小些(如0.001)【251。系统中所有模型的方差都被设置为12.5,第一个模型的 权值设为1,均值设为当前像素点的值,其他模型的权值设为0,均值设为0。 3.2.2背景模型更新 场景中的背景随时间的推移不是一成不变的,背景模型必须不断更新以反映这些变化, 并且模型对背景变化的响应速度要足够快。背景模型的更新流程采用以下方法: 如上节所述,先为各高斯模型的方差设置一个较大的值,而为其权值设置一个较小的 值。当系统在f时刻获取一帧新图像后,会将新图像像素点的观测值与存在的K个高斯分 布比较,计算是否与某一高斯分布模型相匹配,并根据计算结果更新背景图像。如果某一

点z《f’f)满足:

h。G,,,t,∥。O),口。O))一xG,.『】<2.5tr。O一1)

(3.9)

那么就认为,像素点x(/,.,)观测值与该高斯模型匹配,模型的参数也将随之改变。均值
与协方差的更新公式与式(3.6)、式(3.7)一致。此处引入新的更新参数P来描述均值与协方
差的变化,用口描述高斯模型权值系数的变化,完整的更新公式重写如下【删:

(DnG)=(1一口b。O一1)+口 肛。G)=(1一p址。O一1)+肛(f,J,t) 仃。2(f)一(1一pb。20一1)+p(∥。(f)一x(/,j『,f))2
这里口仍表示学习速率,且0s口s1,定义P—a/o)。为参数学习速率。

(3.10) (3.11) (3.12)

当像素点z(f,J『)观测值与K个高斯模型都不匹配时,可判断该点为一个新的前景点,则 使用一个新的高斯分布,7G,.『,t,∥,盯)来代替混合高斯模型中权重系数最小的那个分布。新 的高斯分布的均值为∥=工G,j『),协方差设为一个较大的值(系统中设为12.5),权重系数
取一个较小的值(系统中为0.001)。余下的高斯分布保持均值与协方差不变,但权重系数

武汉科技大学硕士学位论文
需要做一定修改:

第17页

%p)一(1--171知%p-1J

(3.13)

将K个单高斯模型按比重大小排序,在获得新一帧图像后更新模型,用当前图像中的
每个像素点与各单高斯模型匹配,如果匹配成功或K个高斯分布满足下式时,可确定该高

斯分布为背景模型,否则为前景模型。其中,r为背景模型判断阈值。
,羔
B=arg


minI y W。>T l
\篇 /

(3.14)

仔细研究公式(3.13)和(3.14)发现,如果获取的第一帧图像中某观测点为前景像素,由

于混合高斯模型初始化时只有一个权值COo(f)一1的高斯模型,按照公式(3.14),只有
gO(f)<时才认为该点前景像素。保持该点一直为前景像素点,根据公式(3.1)更新第一o


个高斯模型,能够确认该点为前景像素时:(1一口)“<r,更新所需帧数:刀z log矗一。)。若
取a-0.002,T一0.7,则刀-178。以视频图像每秒钟13帧计算,更新时间大约为14s。 由此可见,采用固定口的方法在一定情况下并不能满足系统的实时性需求。 为了加快模型初始阶段学习速度,KaewTrakulPong和Bowde引入L-Windows更新方 法【加】:在处理前L帧图像时使用统计信息更新模型,L帧图像后采用L-Windows迭代方程。

但是方程中均值更新公式∥。(f)一(1一pk.O一1)+肛O)却存在一定的问题。当匹配时 P一口/%,若口取值比%大很多,则肛。0)计算值可能会不断的发散,影响了检测结果。
针对上述问题,本文借鉴L-Windows迭代算法,并在此基础上做了一定的改进。定义
口为学习速率,描述高斯模型的权值系数变化,且0 s a‘1;P为参数学习速率,描述均

值与方差的变化。当处理的视频帧数小于L和大于等于L,且观测点与某一高斯模型匹配
时,分别采用公式(3.15)和公式(3.16)更新模型:

珊。0)一(1-口b。t一1)+am。
∥n

口。O)=(1一pp。2G一1)+p(/z。(f)一石O))2

2哆-(1_p妥一吨71)+肛(f),、,、、:

V…7 (3.15)

ms。(f);ms。(f一1)+加 f∞。0)-(1一口b。O一1)+am。

{∥。O)=(1一p址。O一1)+px(t) h 20);(1-pp。20一1)+p(∥。O)一石坩

(3.16)

式(3.15)与式(3.16)中的口和P的采用不同的定义方式。式(3.15)中一定义

口一∥∑:二。ms,+1,P一所t/嬲t,式(3.16)qp定SL a目1//:,P 5口×历t/q。当x(f,.『)与第七
个高斯模型匹配时所。-1,否则为0;聊。表示检测过程中像素与第七个高斯模型的匹配次
数。匹配次数越多,说明该点为背景像素的概率越大,其均值更新速度越慢。对比公式(3.15)
和公式(3.16)n--J见,其公式基本一致,只是在口、P取值以及ms。累加上略有不同。尤其是

在公式(3.16)qb,p的取值将对检测结果产生决定性影响。

笫18页

武汉科技大学硕士学位论文

若观测点与所有模型均不匹配,需引进一个新的高斯分巾代替混合高斯模型中权重系

数最小的分柿。新高斯分枷的均值p一#(‘』),协方筹口二0)=d:,匹配次数ms(t】=1,其
他高模型均值、方莘和匹配次数不变,而模型的收重系数采用bWindows更新方式。当处

理的视频帻数小于L时,‰0)=”^/∑:,卅‘;当处理的视频帧数大于等于L帧时,第t 个高斯模型权重更新为:q0)一1/∑:.埘,,用公式%0)-0一v工h 0—1)更新其他高斯模
,弘权亚。 基于混合高斯模型的运动目标检测方法的一般处理流程如图3.2所示。

fal实时幽像

武汉科技大学硕士学位泛文

第19页

㈣背景凹像

0)二值化运动目标

图33基于混合高斯模型的运动目标检测

3.3运动目标跟踪方法比较 运动目标跟踪属于自动目标识别领域,包括对目标的分割、特征提取和目标识别几方 面的内容,涉及到计算机视觉、模式识别、视频图像处理等方面的理论问题和实际应用问 题,在工业过程控制、医学研究、交通监视、自动导航等方面有着极高的使用价值。 运动目标跟踪的首要目的就是通过对图像序列的分析,计算出目标在每一帧图像上的 位置。给出目标的速度估计。实现目标跟踪的关键在于完整地分割目标、合理地提取特征 和准确地识别目标。可靠性和精度是跟踪过程中的两个重要参数,不同的应用领域对二者 的要求也不尽相同。由于运动目标的速度和方向都在随着时间的变化而改变,这给运动特 性带来了很强的非线性因素,用传统视频监控系统中人工操作的方法来实现控制显得十分 困难。在此情况下,往往要求运动跟踪具有鞍强的实时性,同时能够容忍~定的精度误差。 国内外学者对运动目标跟踪已经做了大量研究,提出了许多高效的跟踪算法,从目标 跟踪策略、跟踪与检测的时间关系、跟踪目标特征提取方式等方面提出了诸多有效的算法。 本文先介绍几个比较常用的运动目标跟踪方法,再给出本文作者所设计的多个高效算法实 现视频运动目标跟踪的解决方案。 3.3.1基于模型的运动目标跟踪方法 基于模型的跟踪方法依靠先验彤状模型在可靠性、结构解析和3D跟踪方面的优势,将 图像与预先定义的模型相匹配,通过特定匹配算法,在模型与实际运动目标图像之问建立 起对应关系,然后提取运动目标图像的特征,最终确定目标的结构参数。该方法的核心是 建立已知运动对象的精细三维模型,并确定与待检测图像之间的匹配操作【删。当实际图像 序列与模型间的匹配关系建立之后,特征对应也就相应地完成。 这种方法又可分为基于二维(2D)模型的跟踪方法和基于三维(3D)模型的跟踪方法。 其中二维跟踪模型适用于跟踪运动比较单一的场合,其视频数据主要来源于单台摄像机, 算法相对简单;三维跟踪模型则主要用于复杂运动环境下,或者物体被明显遮挡时的目标 跟踪。需用多台摄像机进行多视角跟踪,因而计算量大,实现困难,实时性差p”。但无论

第20页

武汉科技大学硕士学位论文

采用何种模型,建立了跟踪模型以后,必须借助于图像的特征和一定的匹配算法,如采用 目标轮廓特征、区域特征、点特征或综合多种特征来对模型和实际图像进行匹配【3酬,以建
立模型与实际图像之间的对应关系。

3.3.2基于特征的运动目标跟踪方法 无论是刚性的还是非刚性的运动目标,被跟踪的个体特征均是多种多样。在图像序列 中,相邻的两帧图像的采样时间间隔很短,目标运动状态变化较小,可以认为这些个体特
征在运动形式上具有平滑性,因此可以用个体特征来跟踪运动目标。基于特征的跟踪方法 放弃了对运动目标的整体跟踪,只通过对图像各帧之间在位置、速度、色彩、纹理及经过

各种变换后的局部特征上的参数预测和估计来建立帧之间的特征对应关系例。 基于特征的运动目标跟踪方法使用的是符号模型,其运动方式简单,运动具有平滑性, 因此算法比较容易实现。不过伴随着运动方式的复杂化,目标的特征提取会产生困难145J。
例如,对于伴有旋转运动的目标,就很难提取特征,且运动初始化比较困难,加上2D图

像特征的二义性,这类方法仍难以处理复杂的遮挡和3D跟踪问题。 除了上述两种方法以外,还有基于动态轮廓的目标跟踪方法等,在此不做一一介绍。
下面着重介绍在运动目标跟踪中常用的两种方法:基于Mean Shift算法的跟踪模型和卡尔 曼滤波(Kalman Filtering)算法。其中Mean Shift是基于样本估计的算法;卡尔曼滤波算法 是基于高斯分布的状态预测方法【删。
3-3.3

Mean Shift跟踪模型

Mean Shift概念最早由Fukunaga等人于1975年在一篇关于概率密度梯度函数的估计中

提出,1995年Yizong Cheng对基本的Mean Shift算法做了两个方面的推广:首先定义了一

族核函数【32】,使得随着与被偏移点的距离不同,样本点偏移量对均值偏移向量的贡献也不 同;其次设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了Mean
Shift

的适用范围。Comaniciu等人把Mean Shift成功运用于特征空间的分析【33J【川,把非刚体的 跟踪问题近似为一个Mean

Shift最优化问趔35J,使得Mean Shift算法在图像平滑、图像分

割和运动跟踪中得到广泛应用。

给定d维空间飒。中的以个样本点葺G一1,2,…行),在点x处的样本均值m。b)定义为:

m㈧.轼望竺
砉G(孚M
式中,G(工)为核函数;w(x)为样本的权值函数。
差F,Mean Shift算法循环地执行以下三步,直至结束条件满足:

∞乃

定义M。G)=m。b)一z为Mean Shift矢量,对于给定的初始点x、核函数GG)和容许误
(1)计算%仁);

(2)把_,,l。b)赋值给鼽

武汉科技大学硕士学位论文

第21页

(3)如果I切。b)一z0<£结束循环,否则继续执行步骤(1)。
由相关证明可知【121,用核函数GG)在x点计算得到的Mean Shift向量M。G)正比于用

核函数KG)估计的归一化概率密度函数五G)的梯度,归一化因子为用核函数估计Gb)在
X点的概率密度,M。G)总是指向概率密度增加最大的方向。通过M。G)的定义可以轻松 导出m。G)一M.b)+工,对%X)的求解表明样本点在不断地沿着概率密度的梯度方向移
动,移动的步长不仅与梯度大小有关,还与该点的概率密度有关:在密度大的地方更接近 要找的概率密度的峰值,Mean Shift算法相应地减小移动步长;相反在密度小的地方,增
大移动步长。
Mean

Shift算法是一种非参数概率密度估计算法,可以通过迭代快速地收敛于概率密度

函数的局部最大值,因此在目标实时跟踪领域有着很高的应用价值。我们用一个物体的灰
度或色彩分布来描述该物体,假设物体中心位于z。,则该物体可以表示为:

铲剐牮咿”圳
候选的位于y的物体可以描述为

(3.18)

舭c剐刮胆小“】
似性用Bhattacharrya系数p(y)来度量分布,即

(3.19)

因此,物体跟踪可以简化为寻找最优的y,使得口。与丸◇)最相似。或与A◇)的最相

p(y)一pb(y捌=妻厄硐万
将式(3.20)毛E点p。◇。)泰勒展开可得,

(3.20)

p枞q】畦薹历赢畦薹p。(y
把式(3.19)带入式(3-21),整理可得,

(3.21)

枞小丢薹瓢+譬酬n怿112)
其中M?薹6№)一“
进行最优化。图3.4显示了基于Mean Shift算法的运动目标跟踪效果。

B22,

,对式(3.22)右边的第二项,可以利用Mean Shift算法

第22页

武汉科技大学硕士学位论文

图3.4基于Mean Shift算法的运动目标跟踪

3.3.4卡尔曼滤波算法
1960年匈牙利数学家卡尔曼(全名RudolfEmilKalman)技表了论文《ANewApproach
toLinearFiltering and Prediction

Problems))(线性滤波与预测问题的新方法),其中详细阐述

了一种解决离敞数据的线性滤波器问题的递归算法,人们称这种递归算法为仁尔曼算法。 简单柬说,卡尔曼滤波器是一个“optimal
rccursive data processing

algorithm(最优化自叫

归数据处理算法)”。对于大部分问题,它是虽优、效率最高甚至是最有用的。它的广泛应 用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统 以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别、图像分割、图像
边缘检测等。

对于一个离散控市4过程的系统而言,我们可毗用n维动冬系统和P(P s")维观测系
统两个线性随机微分方程(1inear
Stochastic Difference

equation)柬描述。f维系统控制量

u(k)经过动态系统,与”维动态噪声叠加,产生^维系统状态向量z扯)‘圳,动态系统的线
件随机微分方程可描述为:

z№)=m忙一1】+Bu(k)+wk一1)

(3 23)

其中,t表示时问:H xn矩阵A表示系统状态从k—l时刻到女时刻的状卷转移矩阵;

一xf矩阵B是系统控制量“怔)到当前状态的转移矩阵,称为系统作用矩阵i w(k)是系统过
程噪声,被表述为个高斯白噪声,协方差矩阵为Q。

系统状态向量J忙)通过p维观测系统,与p维动态噪声叠加,得到观测向量z(k),观
测系统的线性随机微分方程可描述为:

:(t)=m(k)+p㈦0 24) 其中,H表示观测矩阵;v(^)表示观测值噪声,与w(k】一样被表述为一个具有协方差
矩阵为月的高斯白噪声。

设已知系统女时刻的状态,定义x(tlk一1】∈巩4为x(k)的先验状态估计,x恤t)∈”为 x(k)的后验状态估计;先验估|十误差定义为P(k Jk~1)=z扯)一x(々lk一1),后验估计误差定义

武汉科技大学硕士学位论文

第23页

为e(klk);z伍)一x(kk);先验估计协方差定义为PG陋一1)一E[e(klk一1brk陋一a)J,后验估计
协方差定义为P(七I七)?E[eCklk)er(七陋)J。利用系统的过程模型,可以根据系统七-1时刻的状态
而预测系统的k时刻先验状态估计,同时更新k时刻先验估计协方差:

z亿陋一1)一血任一1|七一1)+Bu(k)
P(kk一1J一彳P忙一1|七一1pr+Q
态的最优结果,Pk一啦一1)是x妊一批一1)对应的协方差,Ar是A的转置矩阵。

(3.25) (3.26)

其中,矩阵A、B、a以及£l@)与式(3—23)的表述相同,x铱一啦一1)是系统七一1时刻状
计算出先验状态估计后,通过先验状态估计z(七k一1)、实际观测值z仅)和观测预测值 的线性加权,我们可以得到后验状态估计工伍k),同时更新k时刻后验估计协方差:

z仅k)tz仅k一1)+始(z似)一礅仁陋一1)) Pk陋)一陋一%@归)P仁陋一1)
用来最小化后验估计误差的协方差:

(3.27) (3.28)

其中,E为单位矩阵,对于单模型单测量,E=1;磁为卡尔曼增益,(Kalman Gain),

五曹一P(klk一1)f7r/0zPk陋一1归f+R)

(3.29)

式(3.25)蛰J式(3.29)就是卡尔曼滤波器原理的5个基本公式,我们可以通过计算机编程
很方便的将其实现【27l。卡尔曼滤波的实质就是由测量值重构系统的状态向量,对于一个过 程和测量都是高斯白噪声的线性随机微分系统,卡尔曼滤波器是最优的信息处理器。它以

“预测——实测——修正"的顺序递推,根据系统的测量值来消除随机干扰,再现系统的
状态,或根据系统的测量值从受到干扰的系统中恢复系统的本来面引39J。卡尔曼滤波算法
可用图3.5描述。

图3.5卡尔曼滤波算法

第24页

武汉科技大学硕士学位论文

由以上讨论可知,卡尔曼滤波估计是一个线性随机系统的状态。然而实际中很多系统

是非线性的,处理这些系统时,需要用到扩展卡尔曼滤波(El回,它是将期望和方差线性
化的卡尔曼滤波器【431。在扩展卡尔曼滤波器模型里,状态转移方程和观测方程是非线性关

系的,用非线性矢量值函数厂(?)和JIl(?)可表示为:

工似)=I(x(k一1),“@)’w伍一1)) z@)=J}lG@),v@)) 如果忽略掉噪声w似)和v(七),扩展卡尔曼滤波算法可用图3.6描述:

0.30) (3.31)

图3.6扩展卡尔曼滤波算法

其中,A是厂(?)对x的偏导的雅可比矩阵,表示为A[i,j】=oIEq/axt,j;W是厂(?)对w的 偏导的雅可比矩阵,表示为%,『】=吮】/机【f】;H是^(?)对x的偏导的雅可比矩阵,表示为 HM一砌【f1/缸【f】;V是^(?)对V的偏导的雅可比矩阵,表示为%.力一砌【f1/却【f1。
基于卡尔曼滤波的运动目标跟踪算法通过目标检测、目标运动估计和目标匹配3个模

块实现运动目标的跟踪【41】。算法首先设置方差Q、R和协方差P妊k一1)的初始值,利用卡
尔曼滤波器建立运动模型;然后预测当前已被分割运动目标下一时刻状态,以缩小匹配算
法的搜索范围,提高匹配速度;接下来进行目标匹配,寻找运动目标在图像序列各帧中的

对应关系;最后更新运动模型,确定目标的运动轨迹。应用卡尔曼滤波器进行运动目标跟
踪的处理框图如图3.7所示。

滤波器初始化H运动状态预测H运动目标匹配
获取跟踪信息}.H生成运动轨迹|.H滤波器参数更新
图3.7运动目标跟踪的卡尔曼滤波算法处理流程

武汉科技大学硕士学位论文
第四章OpenCV视觉函数库
本文选择MicrosoftVisual
Studio

第25页

2005中的vC++(MFC8.0)作为系统开发工具。然而

Microsoft Visual Studio 2005中提供的用于图像处理的函数很少18J191,如果从底层开发一套

完整的图像处理函数库,工作量将十分庞大,而且不一定能达到预期效果。Intel公司的
OpenCV视觉库提供了以VC++环境为基础的数字图像处理和计算机视觉编程的方法。应

用此视觉库可以缩短相关程序的开发周期,具有很高的使用价值。本文正是在这一视觉库
库的基础上实现了对运动目标的检测与跟踪。
4.1

OpenCV简介 OpenCV的全称是Open
Source Computer Vision

Library,是一个跨平台的计算机视觉

库,最初由英特尔公司位于俄罗斯的研究实验室发起并参与开发,以BSD(Berkeley
Software

Distribution,伯克利软件套件)许可证授权发行,可以在商业和研究领域中免费

使用。大部分OpenCV的源代码都经过了汇编最优化,使之能够充分、高效地利用英特尔 系列处理芯片的设计体系。另外OpenCV也为Intel公司的Integrated
Performance

Primitives(IPP)提供了透明接121。这意味着如果有为特定因特尔处理器优化的IPP库,
OpenCV将在运行时自动加载这些库。

OpenCV由一系列C函数和少量C++类构成,不依赖于其它的外部库,但也可以使用 某些外部库。OpenCV实现了图像处理和计算机视觉方面的很多通用算法,主要用于对图

像进行一些高级处理,如特征检测与跟踪、运动分析、目标分割与识别以及3D重建掣16J。
OpenCV具有鲜明的特征:开源计算机视觉库采用C/C++编写;使用目的是为了开发 实时应用程序;独立于操作系统、硬件和图形管理器;具有通用的图像/视频载入。保存和 获取模块;具有底层和高层的应用开发包等。OpenCV能够实现下列功能: (1)对图像数据的操作,包括分配、释放、复制、设置和转换数据;

(2)对图像和视频的输入输出,具体指文件与摄像头的输入、图像和视频文件输出操作; (3)具有对矩阵和向量的操作以及线性代数的算法程序,包括矩阵积、解方程、特征值
以及奇异值等; (4)对各种动态数据结构,如列表、队列、集合、树、图等进行操作;

(5)具有基本的数字图像处理能力,可进行滤波、边缘检测、角点检测、采样与差值、
色彩转换、形态操作、直方图、图像金字塔等操作;

(6)可对各种结构进行分析,包括连接部件分析、轮廓处理、距离变换、各自距的计算、 模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delaunay三角划分等: (7)对摄像头的标定,包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、
立体对应; (8)对运动的分析,如对光流、运动分割、跟踪的分析:

(9)对目标的识别,可采用特征法、隐马尔可夫模型(HMM)法;
(10)具有基本的GUI功能,如图像与视频显示、键盘和鼠标事件处理、滚动条等

第26页

武汉科技大学硕士学位论文

(11)可对图像进行标注,如对线、二次曲线、多边形进行标注,还可书写文字。
4.2

OpenCV常用结构和主要模块 在运用OpenCV函数库进行编程以前,我们有必要了解OpenCV中的一些基础数据类

型和帮助数据类型【13】。OpenCV基础数据类型包括:图像类IplImage;矩阵类CvMat;可

变集合类CvSeq、CvSet、CvGraph;以及用于多维柱状图的混合类CvHistogram。帮助数
据类型包括:用于表示二维点坐标的CvPoint;用于表示图像宽和高的CvSize;用于表示 迭代过程结束条件的CvTemCriteria;用于表示图像转换内核的IplConvKemel和用于表示 空间力矩的CvMoments[15l。

OpenCV的常用函数体系中每个函数命名都是以“CV”开始,然后是该函数的行为或 作用目标【37】,主要的函数类型有: (1)基本的图像处理与分析函数。这个类型的函数主要用于实现一些基本的图像处理与
分析功能。例如,图像平滑函数:cvSmooth,Sobel算子:cvSobel,Canny边缘分割函数: cvCanny等;

(2)结构分析函数。包括轮廓处理函数、几何学函数以及平面细分函数; (3)运动分析与目标跟踪函数。包括用于运动分析与目标跟踪的函数,例如,背景重建:
(4)函数cvAcc。用光流法或动态轮廓模型实现目标跟踪的函数cvCalcOpticalFlowBM

和cvSnakelmage以及卡尔曼滤波函数evKalman等; (5)摄像机标定和3D重建函数。包括用于摄像机标定、姿态估计以及两个摄像机进行
3D相似重构的函数;

(6)GUI与视频处理函数。包括高级图形用户结构HighGUI用以实现对图像的载入、显 示及保存等基本操作以及用以实现视频输入输出及处理的函数。 根据上述的函数体系,程序开发者可以根据自己所开发应用程序要实现的功能来方便 地选择所需的库函数,从而大大减少开发的时间和精力,缩短程序开发的周期。
OpenCV常用类体系可分为以下五个部分: (1)CV:主要的OpenCV函数。包括图像处理和计算机视觉的相关函数(图像处理、

数据结构、运动分析、物体跟踪、模式识别、摄像机标定);
(2)CvAux:辅助的OpenCV函数,如人脸检测、三维跟踪、HMM等。该部分提供的

函数一般没有经过严格的验证和代码优化; (3)CxCore:基本数据结构和基本运算。包括基本数据结构定义、数组操作函数、动态
存储数据结构定义、基本绘图函数、辅助操作函数等。该部分给用户提供了统一的数据结 构,是构成OpenCV的基础;

(4)HighGUh用户交互部分。包括DUI、图像视频FO、系统调用函数;
(5)CvCam-Linux版本中已经抛弃,Windows版本中将DirectX支持加入HighGUI后, CvCam将被彻底去掉。

OpenCV封装了很多针对视频流的处理函数,可通过两种方式实现对视频的捕获:一
种是使用cvCaptureFromFile函数读取AVI视频文件;另外一种是使用cvCaptureFromCAM

武汉科技大学硕士学位论文

第27页

函数从指定结构类型的摄像机捕获视频数据。cvGrabFrame函数将视频数据快速放入内存, cvRetrieveFrame函数用于获取由cvGrabFrame函数缓存的视频数据。
4.3

OpenCV实现运动物体跟踪 在OpenCV的CvAux模块中提供了运动物体跟踪的框架,用户只需要设置好各个参数,

然后一帧帧地传入图像,即可得到目标轨迹的输出(ID:标志符,pos:位置,size:大小)。 OpenCV将整个过程分成五个模块:前景检测模块、新团块检测模块、团块跟踪模块、轨 迹生成模块和轨迹后处理模块,这五个模块最后被跟踪流程模块CvBlobTrackerAuto连接 起来,如图4.1所示。

一………………旦挟丝焦至…………..

图4?1运动物体跟踪处理流程
.,

在介绍各个模块的工作流程之前,先简要了解一下需要用到的一些基本结构。团块是 一个运动物体的描述方式,在OpenCV中用CvBlob结构描述,该结构描述了团块的位置、 大小和标志符(10)。
struct CvBlob


float float int X,y; w;h; ID;

//blob position //blob sizes //blob ID

】. X和Y分别是团块位置的横坐标和纵坐标;W和h分别是团块的宽度和高度;1D是团 块的标志符,用于区分不同的团块。由团块概念引申出的另一结构为团块列表,它表示一 系列团块的集合。这些团块的集合可以是运动轨迹,或当前帧中的所有团块。列表是一个 具有索引的数组,数组中的每个元素可以通过关键值(Key)来访问。 模块中还用到了团块跟踪参数等结构,此处不做一一介绍。此处为了更清晰准确地显 示跟踪效果,系统将使用一段avi文件作为处理对象,同时详细描述各个模块的功能。 (1)前景检测模块:将当前帧上的像素分为前景图像和背景图像。前景检测模块输入的 数据为当前图像,输出的数据为当前帧的前景掩码,其结构如图4.2所示。

蚓前景篓测模l煎量煎马

图4.2前景检测模块结构

OpenCV实现了两种前景检测方法:混合高斯模型和Liyuan Li的ACM Multimedia

2003

会议论文中的算、法1381。本文使用基于混合高斯模型的前景检测方法,有效地控制了背景缓
慢变化对背景提取的影响。图4.3显示了基于混合高斯模型的前景检测效果。

第28页

武汉科技大学硕士学位论文

J÷墨≮一 k÷公一
拦撩m生
煎量登到模块r』斗
图4.4新团块检测模块结构 在图4 3a下方车道中,即将消逝在画面中的红色汽车(红色圆圈标记)是已经被跟踪

的物体,上方的白色汽车(绿色圆圈标记)刚刚进入视频监控区域,新团块跟踪模块此时 检测到新进入的物体的丈小和位置。 新团块检坝4模块的处理流程为:首先从前景图像中检测出所有团块,然后将较小的团 块(可能是由噪声引起的)和与已经被跟踪团块有重叠的团块丢弃.并对剩余的团块按照 大小顺序排列,只保留其中几个比较大的闭块。最后利用特定规则筛选,筛除不台标准的 『卅块,将真正的新团块保存到团块列表中。 (31团块跟踪模块:使用新团块榆测模块的结果初始化该模块,并*R踪新进入的团块。 团块跟踪模块的输入数据为当前帧、当6i帧的前景掩码和新团块,输出数据为当前帧的团 块信息(1D,pos,size),此模块的结构如图4 5所示。
新团块位置 ——

篓护棼峰 块广斗
煎量熊墨
图4s团块跟踪模块结构 团块跟踪模块的处珲流程为:首先从前擐图像提取所有团块,并计算团块的质心、宽

度和高度:然后对每一个已被跟踪的轨迹,利朋仁尔曼滤波器预测该轨迹在当前帧的团块 的位置和大小;最后对每个跟踪的轨迹进行处理,寻找离上一帧里的凹块擐近的当前帧的

武汉科技大学硕士学位论文
团块,将此团块添加到跟踪轨迹。

第29页

(4)轨迹生成模块:主要是保存操作。它收集多个团块的位置,并为每条轨迹结束时(例 如跟踪丢失时,或者物体离开场景时)将其保存到硬盘上。轨迹生成模块的输入数据为当 前帧的所有团块,输出数据为保存的轨迹列表。此模块的结构如图4.6所示。

图4.6轨迹生成模块结构

(5)轨迹后处理模块:运行轨迹的平滑操作。此模块是可选的,可以不包含在处理流程 中。轨迹后处理模块的输入数据为当前帧的所有团块,输出数据为当前帧的所有团块。此 模块的结构如图4.7所示。

叫轨磷理惮
!=:

图4.7轨迹后处理模块结构

(6)跟踪流程模块:本模块将前面提到的五个模块连接起来,形成一个处理流程。跟踪 流程模块首先对背景图像进行更新并检测前景,将获取的前景图像保存于成员变量pFG 中。获取前景图像后,便调用团块跟踪模块。此处的顺序与图4.1中所示的顺序有所不同,
在图4.1中,新团块检测在团块跟踪模块之前,而在此处的顺序则恰恰相反。这样做的主 要目的是先执行跟踪可将当前帧的跟踪结果传入新团块检测模块,以提供新团块检测的准

确度。如果团块跟踪在后,则新团块跟踪模块只能与上一帧的团块列表进行比较,新团块
检测的准确度将会有所降低。

第30页

武汉科技大学硕士学位论文
第五章报警功能设计与实现

本文在前面章节中给出了运动目标检测与跟踪的解决方案,使得监控设备能够很快地
跟踪到进入监控区域的运动目标。然而对运动目标的跟踪检测只能让监控人员通过屏幕判

断是否有异常侵入,在警报方式上缺乏主动性。因此监控系统中还应具备相应的报警功能,
这也是智能视频监控报警系统最直观的警报表现形式。

5.1通用声光报警功能设计 报警系统作为视频监控报警系统的一个重要组成部分,其性能的好坏直接关系到整个 系统的优劣。目前的报警系统多由一台报警主机和一些前端报警设备组成。前端报警器能 够快速、准确地检测到现场的异常状态,经分析后及时通报给系统控制主机。系统控制主
机可自动判别报警信号的来源,自动生成报警日志,如实记录报警发生的地点、时间、日

期,以备日后查询。系统还可通过视频、音频设备收到现场的视频图像和声音信号,与现
场人员进行交谈,全面了解现场情况。这些综合信息为操作人员判断报警信号的可靠性和

现场事态的严重性提供了必要的决策依据。报警系统结构可用图5.1表示。

图5.1报警系统构成

报警系统在设计过程中应考虑到以下功能需求: (1)系统具备自检能力,前端报警器或传输线路发生故障时应产生故障信号,并自动通
报给控制主机;

(2)系统可按设定的报警规则自动产生报警响应,如打开或关闭警报设备(包括警铃、 现场辅助光源等),自动拨打110或119报警,避免由于人为延误造成的损失: (3)系统应支持人工手动方式的报警响应,对那些需经多方核实后方可采取行动的警报 信号,操作人员可采取手动报警响应模式; (4)系统需要将前端报警设备的响应记录在案(包括响应的方法、日期时间)、生成日
志文件,以备日后查询。

本文研究的是一个简易的智能视频监控报警系统,因此在报警功能的设计上并没有那 么复杂,只是做了声光报警部分。当视频监控区域有侵入行为发生时,警铃、警灯等报警 设备被触发,产生声光警报信号,同时记录下被监视场所的视频图像。 本系统将无线通信技术应用在报警功能的设计上,下面将进行重点介绍。
5.2无线报警功能设计

随着电子信息技术和无线网络技术的发展,把无线网络技术应用到监控报警系统中,
通过无线的方式将警报信息传输给报警受理终端或警报信息接收终端,能够弥补有线设备 的缺陷,具有价廉、可靠性高等优点。无线网络不仅能提供传统的以文字和图片为主的信 息服务,还能够提供具有视频和音频效果的多媒体服务内容。笔者根据无线网络技术和智

武汉科技大学硕士学位论文

第31页

能视频监控系统在侵入侦测中的特点,设计了一个基于北京万象公司开发的GSM短信猫
模块的实用报警系统。
5.2.I

GSM MODEM短信猫

GSM

Modem短信猫(以下简称为短信猫)内含工业级短信发送模块,是专门针对短

信应用而设计的。短信猫提供了方便实用的通信接口,性能稳定可靠,用户可以在自己的 应用中快速部署功能进行短信息收发服务,符合各种商业和工业级短信应用要求。国内目 前应用较多的短信猫都是以SIEMENS或WAVECOM模块为核心组装而成的。
短信猫与计算机通过串口或PCI接口连接,可采取以下三种方式进行应用程序开发:

(1)直接使用AT指令:通过串口用AT指令驱动短信猫收发短信,这是最底层的开发
模式,开发人员需要对短信模块的AT指令相当熟悉;

(2)短信猫开发包:由短信猫厂商提供基于串口AT指令集成的应用开发包,开发人员
使用过程中直接调用短信开发包中的相关收发API函数; (3)短信猫通信中间件:短信猫厂商提供的基于数据库接口的短信收发后台服务软件。

万象短信猫开发包是针对目前常用短信模块开发的短信应用API集合114】,详细说明请
参见《万象短信猫介绍及接口开发指南》,其特点与优势有: (1)成熟稳定:万象短信猫开发包是经过多年短信开发经验积累的结晶,至少数百家软 件开发商的应用;

(2)支持全面:万象短信猫开发包以通用的WINDOWS动态链接库形式提供,从而支

持各种WINDOWS开发工具,包括VC厂vB/DEPHI/例ASP/.NET等;同时提供JA~A开
发包,支持J2EE开发环境; (3)丰富的演示程序:万象短信猫开发包提供各种开发工具的演示程序:,包括

VC厂、忸/DEPHI/C爿【/JA悄;
(4)高可靠性:万象短信猫开发包充分考虑到短信猫死机的各种可能性,提供了完善的
容错机制,保证在API内部不造成短信猫死机;

(5)优质服务:对软件开发商在短信猫开发上出现的任何问题,万象都将给予完善的服
务,终生免费BUG维护和升级,帮助软件开发商高效优质地完成短信应用开发。

5.2.2接口函数定义
本文在万象短信猫提供的短信开发包基础上,设计了一套符合系统应用的API函数, 下面将进行分别介绍各主要函数的定义和功能。

(1)SMS—GetDevicelnfo 功能:获取短信发送设备信息
参数:无 返回:返回短信发送设备信息 原型:LPCTSTR SMS GetDevicelnfo(void);

说明:该函数只是简单的返回一个短信设备描述字符串,如设备名称或型号等。

第32页 (2)SMS—GetVer

武汉科技大学硕士学位论文

功能:获取版本信息
参数:无

返回:返回版本描述字符串
原型:LPCTSTR SMS GetVer(void);

说明:该函数只是简单的返回一个字符串用以描述动态链接库中函数的版本号。
(3)SMS—GetLastError 功能:获取最近发生的错误信息 参数:无 返回:返回错误描述字符串 原型:LPCTSTR SMS GetLastError(void); (4)SMS—Init 功能:初始化短信发送功能 参数:无 返回:成功返回SMS OK,否则返回SMS 原型:int SMS Init(void);
FAILED

说明:这个函数用来初始化短信发送功能,具体来讲应完成以下功能:
?

加载短信发送设备厂商提供的驱动程序或编程接口函数(API);

●检测短信设备是否可用;

◆初始化运行所需的内存空间及其它资源; ?加载电话号码表(可以储存在操作系统注册表或INI文件中),电话号码表包 括两类号码:一类用来接收消息,如报警信息;另一类用来接收通信报文,以 备今后采用手机短信传送数据报文。 (5)SMS—Exit
功能:退出短信发送功能 参数:无 返回:无 原型:void SMS Exit(void);

说明:该函数为退出短信发送功能做必要的善后工作,如将缓冲区中未发出的短信发 出、释放内存及其它资源、释放短信发送设备驱动程序或动态链接库句柄等。 (6)SMS—Sendlnfo
功能:通过短信发送消息 参数:LPCTSTR
hlfo

返回:成功返回SMS—OK,否则:SMS—FAILED=函数执行失败;SMS一嗍I。ID=
设备不可用;SMS—FAULT=设备故障;SMS--UNINIT----未初始化;SMS_EXIT=已退出。 原型:int SMS—Sendlnfo(LPCTSTR Info); 说明:该函数按照消息接收列表将字符串发送给所有目标号码。

消息字符串

武汉科技大学硕士学位论文
(7)SMS—SendMsg 功能:通过短信发送报文 参数:LPCTSTR Msg 报文字符串

第33页

返回:成功返回SMS~OK,否则:SMS—FmLED=函数执行失败;SMS一玳Ⅵ虬ID= 设备不可用;SMS_FAULT--设备故障:SMS_UNINIT=未初始化;SMS—EXIT=已退出。
原型:int SMS_SendMsg(LPCTSTR Msg); 说明:该函数按照报文接收列表将字符串发送给所有目标号码。 系统中先用SMS—Init函数初始化短信息收发模块,然后扫描短信息发送缓存。当有待

发送的短信息时,提取该短信息并将其发送出去,否则继续等待。系统退出时使用SMS_Exit
函数关闭模块、回收系统资源。无线通信模块在系统中的处理流程如图5.2所示。

图5.2无线通信模块处理沉程

5.3多线程实现短信息发送 在上一节介绍的接口函数中,除短信息发送函数外,其他函数的实现相对都比较简单。
在编写短信息发送函数过程中(以SendMsg为例),笔者发现平台提供的函数在向串121发 送数据时采用的是阻塞式方式,即每发送一条短信息程序就要在发送处等待若干秒。如果 将短信息发送函数直接设计在系统主线程里,那么在发送短信息的过程中系统界面将有明

显的停顿感,在此期间界面的其他操作也不能进行。为了解决这个问题,本文在系统中引 入了多线程的处理方式。下面先介绍一下线程与进程的概念,以及运用多线程时需要注意 的问题,然后给出系统中如何利用多线程技术实现短信息发送。
5.3.1进程与多线程

线程与进程都是操作系统的概念。进程是应用程序的执行实例,线程是进程内部的一 个执行单元。每个进程都由私有的虚拟地址空间、代码、数据和其它各种系统资源组成。 系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形 式(如main或WinMain函数)将程序的启动点提供给Windows系统。主执行线程终止了, 进程也就随之终止,进程在运行过程中创建的资源也随着进程的终止而被销毁。 每一个进程至少有一个主执行线程,它无需由用户去主动创建,而是由系统自动创建。 用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进 程中的所有线程都在该进程中共同使用这些虚拟的地址空间、全局变量和系统资源12¨。

第34页

武汉科技大学硕士学位论文

多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。为了运行所有这些
线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间 片,这就给用户一种假象,好像每个线程都在同时运行。 5.3.2线程间通信

一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样主线程和 次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线 程间的通信是难以避免的,而且在多线程编程中也比较复杂和频繁,下面将对常用的线程
间通信方式如下:

(1)使用全局变量进行通信:由于属于同一个进程的各个线程共享操作系统分配给该进
程的资源,因此解决线程间通信一种最简单的方法是使用全局变量。对于标准类型的全局

变量,建议使用volatile修饰符,它告诉编译器无需对该变量作任何的优化,即无需将它
放到一个寄存器中,并且该值可被外部改变。如果线程间所需传递的信息较复杂,可以定 义一个结构,通过一个指向该结构的指针进行信息共享; (2)使用自定义消息:可以在一个线程的执行函数中向另一个线程发送自定义的消息来 达到通信的目的。一个线程向另外一个线程发送消息是通过操作系统实现的。利用

Windows操作系统的消息驱动机制,当一个线程发出一条消息时,操作系统首先接收到该
消息,然后把该消息转发给目标线程,此时要求接收消息的线程必须已经建立了消息循环。 5.3.3线程同步

虽然多线程有其优点,但是也有不少问题需要解决。编写多线程应用程序最重要的问 题就是线程之间的资源同步访问。因为多个线程在共享资源时如果发生访问冲突通常会产 生不正确的结果。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程 的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有
可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系

统的计算机来说,可能使用一个线程来更新用户数据库,而用另外一个线程读取数据库以
响应储户的需要,读取数据库的线程极有可能读到的是未完全更新的数据,造成了数据差 异。

对于这些情况,Windows采取了线程同步机制使隶属于同一进程的各线程工作保持一 致。MFC提供了多种同步对象,包括:临界区(CCriticalSection)、事件(CEvent)、互斥 量(CMutex)、信号量(CSemaphore)。通过这些类我们可以比较容易地实现线程同步。 (1)使用CCriticalSection类:当多个线程访问一个独占性共享资源时,可以使用“临
界区"对象。任一时刻只有一个线程可以拥有临界区对象,拥有临界区的线程可以访问被

保护起来的资源或代码段,其他希望进入临界区的线程将被挂起等待,直到拥有临界区的 线程放弃临界区为止,这样就保证了不会在同一时刻出现多个线程访问共享资源。
CCriticalSection类的用法非常简单,步骤如下:


定义CCriticalSection类的一个全局对象(以使各个线程均能访问);

武汉科技大学硕士学位论文

第35页

?在访问需要保护的资源或代码之前,调用CCriticalSection类的Lock成员函数获得 临界区对象。在线程中调用该函数来使线程获得它所请求的临界区。如果此时没
有其它线程占有临界区对象,则调用L0ck函数的线程获得临界区;否则,线程将

被挂起,并放入到一个系统队列中等待,直到当前拥有临界区的线程释放了临界
区为止; ?访问临界区完毕后,使用CCriticalSection的成员函数Unlock函数释放临界区。

(2)使用CEvent类:CEvent类提供了对事件的支持。事件是一个允许一个线程在某
种情况发生时,唤醒另外~个线程的同步对象。例如在某些网络应用程序中,一个线程(记

为A)负责监听通讯端口,另外一个线程(记为B)负责更新用户数据。通过使用CEvent 类,线程A可以通知线程B何时更新用户数据。每一个CEvent对象可以有两种状态:有 信号状态和无信号状态。线程监视位于本线程内部的CEvent类对象的状态,并在相应的
时候采取相应的操作。

在MFC中,CEvent类对象有两种类型:人工事件和自动事件。一个自动CEvent对
象在被至少一个线程释放后会自动返回到无信号状态;而人工事件对象虽然在获得信号后 立即释放可利用线程,但只有通过调用成员函数ReSetEvent才能将其设置为无信号状态。

在创建CEvent类的对象时,默认创建的是自动事件。
(3)CMutex类:互斥对象与临界区对象很像,与临界区对象的不同在于:互斥对象可 以在进程间使用,而临界区对象只能在同一进程的各线程间使用。互斥对象也可以用于同

一进程的各个线程间,但是在这种情况下,使用临界区会更节省系统资源,更有效率。
(4)使用CSemaphore类:当需要限制某项资源可以同时使用的线程数目时,可以使用 “信号量"对象。CSemaphore类的对象保存了对当前访问某一指定资源的线程盼计数值,

该计数值是当前还可以使用该资源的线程数目。如果这个计数达到了零,则所有对这个 CSemaphore类对象所控制资源的访问尝试都被放入到一个队列中等待,直到超时或计数 值不为零时为止。一个线程被释放已访问了被保护的资源时,计数值减1;一个线程完成 了对被控共享资源的访问时,计数值增1。这个被CSemaphore类对象所控制的资源可以 同时接受访问的最大线程数在该对象的构建函数中指定。
5.3.4功能实现

Win32 SDK函数支持多线程的程序设计,并提供了操作系统原理中的各种同步、互斥
和临界区操作。Visual C++中的MFC类库也提供了多线程编程支持,方便了程序编辑。非

常重要的一点就是,在多窗口线程情况下,MFC直接提供了用户接口线程的设计。
MFC提供了两种类型的线程:辅助线程和用户界面线程。辅助线程没有消息机制,通

常用来执行后台计算和维护任务。MFC为用户界面线程提供消息机制,用来处理用户的输
入、响应用户产生的事件和消息。但对于Win32的API来说,这两种线程并没有区别,它 只需要线程的启动地址以便启动线程执行任务。用户界面线程的一个典型应用就是类

CWinApp,它是CWinThread类的派生类,应用程序的主线程由它提供,并由它负责处理

第36页

武汉科技大学硕士学位论文

用户产生的事件和消息。类CwinThread是用户接口线程的基本类,CWinThread的对象用
以维护特定线程的局部数据。 系统中首先在短信猫模块初始化时创建辅助线程: hSendThread=CreateThread(NULL,0, (LPTHREAD_START ROUTINE)SendSMSThread,

PRIORlrLNORMAL 0); 其中,SendSMSThread是指向包含短信息发送执行函数的线程的指针,新创建线程的
NULL,THREAD

优先级与主线程相同。 接下来就要设计辅助线程,它是执行短信息发送功能的函数主体。遵循辅助线程设计 不过于复杂的基本原则,在辅助线程中以一个全局范围的标志量控制线程的结束已否,该 标志量在初始化过程中被置为false。函数的主要结构设计为:

while(!啦xit)


while(MsgList一>Count>0) .( > SuspendThread(hSendThread); ’ MsgList为待发送的短信息队列,在此设计为一个全局变量,是一个自定义列表类的对 象。在访问MsgList成员变量及对该列表进行任何操作时,为了防止访问错误,系统先将 该列表用临界区对象进行锁定,访问结束后解锁。该列表中设计了一些易于系统应用的函
数接El,例如统计元素个数、增加和删除列表中元素等。辅助线程执行过程中,首先判断

待发送短信息个数。若不为0,则取出其中一条短信息,调用万象短信猫开发包提供的函 数实现短信息发送。发送成功后从待发送短信息列表中删除该短信息,并继续查询待发送 短信息的个数,直至待发送信息个数为0。短信息发送完毕后辅助线程自己休眠线程本身,
以节省系统资源,若再需要进行短信息发送时,利用ResumeThread函数恢复线程。 当系统退出或结束短信猫模块调用时,系统需要结束辅助线程并回收资源。
g_Exit=true; if

fhSendThread!=NULL)

//线程非空

{ ResumeThread(hSendThread); WaitForSingleObject(hSendThread,1000); TerminateThread(hSendThread,O); CloseHandle(hSendThread); ) 执行线程结束操作时,先将全局标志量置为true,使得辅助线程具备退出条件,然后 恢复辅助线程继续执行。辅助线程判断出满足退出条件后跳出循环,辅助线程执行结束。 //等待1秒,以便短信发完
//终止线程

武汉科技大学硕士学位论文 第六章 智能视频监控报警系统设计及实现

第37页

本文的研究目标是建立一个小型的智能视频监控报警系统,在摄像机固定的情况下, 实现对指定场景的实时监控。
6.1系统总体结构

本文所设计的系统通过视频采集设备将视频图像输入到计算机中,使用视频处理算法
对分析图像。系统总体上可分为视频采集模块、图像处理模块、异常警报模块三个部分,

另外系统还预留了第三方接口,以备扩展之用。各模块之间的关系如图6.1所示。

l视撇据采集H锄释测与H异常警报i
L。。。。。。。。。。‘‘。。。。1。。‘‘。。。。。。‘。。。’。’。。。。’。。1‘’。’。。J

L1。‘’’。。。。‘。。。。。。。。。。。。。。。‘’。。。。。。。’‘。。。。。。。。。。_J

I。。。。。‘’。。。。。。。。。‘。。‘‘。。。’。。。。。。‘。。。。。。。。‘‘。。。。J

L………_…一;i;苫…一1
i......。......,.,......................................j

图6.1系统总体构成图

系统中各个模块的功能描述如下。
(1)视频采集模块:本模块主要负责视频图像采集的控制。包括视频采集设备参数初始

化、按照定义的视频格式采集图像、启动和终止采集视频数据流、提取视频数据流等工作。 (2)图像处理模块:本模块为系统的核心部分,负责运动目标检测跟踪及后期处理工作。 对于视频图像前景检测的设计,我们采用了3.2节所提到的基于颜色的混合高斯模型的检
测方法。系统设计过程中定义了混合高斯模型结构GaussBGModel,在系统中通过调用函 数CreatcGaussianBGModel0仓tJ建一个混合高斯模型的实例,并初始化参数;然后在获取到

新的一帧图像后通过调用更新函数UPdateGausianBGModel0,实现背景模型的更新;在模
型销毁时,调用ReleaseGaussianBGModeloi函数回收资源。运动目标跟踪部分采用了Mean Shift算法和卡尔曼滤波器预测跟踪功能完成目标跟踪操作。本文所选择的OpenCV视觉库 提供了很多图像处理的基础函数,使用这些函数节省了大量的开发时间,笔者能够将更多

的精力集中在系统集成和实现上。
(3)异常警报模块:本模块首先实现了对异常情况的声光报警,并借助视频监控这一先

天的便利平台,将异常情况发生时的图像或视频录像保存到磁盘中。作为本设计的拓展点, 系统中实现了通过无线方式对报警信息的发送,在短信猫模块功能支持的前提下,系统还 能实现彩信发送,将警报现场图像发送出去。 6.2系统设计实现 操作系统方面我们采用了WindowsXP做为系统的操作平台,WindowsXP以其友好的 用户界面和良好的安全性、稳定性已经成为PC机用户的首选。开发工具选择的是微软公
司的Visual
C++。Visual

C++是一款在Windows平台下的开发工具,由于它具有功能全面、

灵活性好、效率高和深入底层的优点,并且支持多线程,在工程上有较多应用。另外考虑 OpenCV函数库功能强大,可扩展性强,适合底层开发等优点,系统最终选择在Windows
XP

第38页

武汉科技大擘硕士学位论文

环境下,以Visual c++与OpenCV联合开发的方式进行系统研发。负责短信息发送的万象

短信猫开发包则以动态链接库的形式加载到系统中,并封装为系统的全局函数使用。本系 统设计的是一个简易的演示系统.因此界面设计比较简单。 利用MFC建立一个基于对话框的工程,工程建立过程中选择默认设露,并将客户区做 如图6.2所示的划分。
巴——■墨雹墨墨舀:互==一


原始视频图像

带跟踪效果的视频图像

背景图像

前景图像

图6.2系统窗口划分

编辑好系统代码并生成可执行文件,点击进入系统。系统初始化过程中,首先加载万
蒙短信猫J r发包动态链接库,将导出的接u函数作为系统开发的基础函数,如5 3节所述。

动态链接库加载完毕后系统打丌连接的视频设备,注册视频回调函数。在进行L迷两个步 骤操作的过程中,系统部做了同步的错误处理:
if(!SMS—lnit(L“”))

MessageBox(L”初始化短信猫模块失败”):
ifOOpenDevlccO) MessageBox(L”无法打开视频设备”), 即在相关操作执行失败时返叫提示信息,确保系统能够正常运行。

初始化工作成功执行完毕后,将进八系统的核心部分——数据分析与处理。包括运动 目标检测、运动目标跟踪、视频图像后期处理、报警功能实现等.这些操作都是在视频回 调函数巾进行的。 当系统获取到视频设备一帧图像后,框架回{』】8函数发m响应,程序进入框架回调函数 一p执彳丁相关代码。通过lpVHdr.>lpData和1pvHd^>dwB”esused确定的内存块,我们可以 轻易的得到每帧视频图像的原始数据,并枉此数据的基础上进行运动目标的分析和检测。
系统具体的处理流程rⅡ用图6.3表示。

武汉科技大学硕士学位论文

第39页

图6 3系统处理流程

系统运行一段时间后进入监控状态,若监控场景中无运动鞫标出现,前景显示区域界

而无像素输出(像素值为0,全部显示为黑色),原始图像、跟踪效果及背景图像三个窗口
显示效果致,如罔6.4所币。

圈6.4无运动目标

第40页

武汉科技大学硕上学位论文

当有人或其他物体闯入监控场景时.系统将迅速榆测到运动目标,并在跟踪效果窗口 中圈定运动目标。此时背景显示区域没有变化,而自i最显示区域则清晰地显示了二值化后 的运动n标,如图6 5所示。

图6.5发现运动目标

确定有运动H标闯入监控区域后,系统将发出声光报警信号,并通过短信猫将事件信 息发送到指定接收端。
同时,若监控区域背景发生变化,系统能够通过不断学习及时更新背景。图6.6盐示

了系统中有物体(水杯)离7F背景时的背景砸新效粜。

圈6.6背景更新

武汉科技大学硕士学位论文 第七章总结与展望

第41页

智能视频监控系统作为一种安防的有效手段,正越来越受到人们的重视。对于智能监 控视频来说,一个健壮的运动目标检测跟踪系统可以不依靠摄像机的放置,也不管其画面

内容和光照效果的变化,都能够处理运动混乱、目标重叠、阴影、光照变化、背景运动(摇
动的树叶)、慢速目标、目标引入背景或从背景消失等情况对真实运动目标检测的影响。 本文利用智能视频监控系统实现了入侵侦测报警,与传统的视频监控系统相比,本系统在 以下方面具有一定的新颖性。 首先,智能视频监控系统中运动分析检测技术的核心是对于监控视频的分析,这种分

析不但可以针对于划定的某一条线,以实现周界入侵侦测,还可以对某一区域分析以实现
区域入侵探测,其区别仅在于算法的改变,而对于物理设备来说没有任何不同。因此在不 改变系统成本的情况下,它既可以作为周界入侵探测技术,也可以作为区域入侵探测技术。 其次,视频运动分析检测技术分析的是视频信号中的目标区域范围,只要有入侵者出 现在视野范围之内,不论从哪个方向出现,只要入侵者在监控视野内露了面,都会触动报

警机制产生报警,这种报警方式杜绝了任何形式的“绕开探测器”的行为,可实现无遗漏
报警。 第三,无论是红外对射装置或激光对射装置,还是震动电缆、周界防护围栏之类,都

会有很明显的入侵探测设备设立在监测地点,而视频运动分析检测技术仅需要对监控视频 进行分析,摄像头又可以安装在十分隐秘的地方。因此可以实现隐蔽探测、远程探测,隐
蔽性极强,自然也就减少了设备被破坏的危险。

第四,在视频运动分析检测技术中,需要分析的目标区域只要在视野范围之内,在视 频中能够看到即可,没有什么别的要求。因此不论这个目标区域是大是小,是方是圆,是
矩形周界还是多边形周界,都没有任何区别,这一点与前面提到的红外对射探测器大不相 同。举例来说,同样使用周界入侵检测,如果一个区域的围墙原来是四边形,因为某一原 因改成了不规则的七边形,则对于红外对射探测器来说,不但这些探测器需要重新安装, 而且还须重新增加三对探测器,以实现每一直线边有一对探测器完成探测。但对于视频运 动分析检测技术来说,无论围墙怎么改变,只需在视频上重新画一下目标监测区域的周界 即可,无须增加任何成本,而且修改也非常容易。 虽然将智能视频运动检测跟踪技术应用于侵入侦测中具有很多的优点,但作为一种新

技术,仍然有许多不尽如人意之处,其中最为突出的是对于环境光照的适应性。随着图像 处理技术、视频处理技术、模式识别技术等核心算法技术的研究发展,以及计算机处理能 力的不断提高,智能视频监控技术也在慢慢走向成熟。目前市场上出现的视频运动分析检
测产品在环境光照适应性上虽已达到较好的性能,能在很多应用场合表面出较强的鲁棒

性,已可以作为一种入侵探测产品走进市场,但仍需要进一步的研究和发展。运动目标跟 踪技术未来的研究重点和研究路线仍有以下几个方面: 第一,研究较好的视频预处理和后期处理算法,以提高目标检测效果。比如在预处理

第42页

武汉科技大学硕士学位论文

中,通过新颖的空时平滑滤波算法来消除雨雪天气的影响;
第二,由于目标检测是很多计算机视觉系统的基础,因此开发既符合具体应用需求而

又占用较少内存、实时性强的算法仍将受到重视。算法应考虑像素的其他特征或者某种时
空关系特征,而不是目前主流的像素亮度或颜色特征,以及要考虑针对特征建立分布模型,

而不是简单的统计处理,这应是目标检测技术发展的方向。近两年就有很多文献继续就高 斯混合模型、码本方法、均值替换等方法提出了改进算法; 第三,研究利用目标跟踪结果来指导背景建模的策略或者同时对背景和前景进行建模
的策略;

第四,研究健壮的阴影检测和消除算法。由于克服阴影和遮挡问题是目前目标检测的 弱项,因此未来的技术方法应多考虑相邻像素的相对值以及相邻像素分布的相互关系,以 便对阴影边界和相互遮挡像素的变化进行建模; 第五,室内静止背景相对好处理,而室外大而混乱场景的背景建模则较难,而且非静 止摄像机(摄像机抖动、摇动或变焦等)、多摄像机融合以及全景摄像机的背景建模方法
在很多应用中也有需要,但目前这些方面的文献还比较少,值得研究。


另外,在通知用户的方法上还要深入开发短消息功能,不仅仅局限于把报警信息通过

文字描述的形式发送给受理终端,还可把图像经过处理后通过“彩信"的方式发送给手持 终端。甚至还能根据我国目前3G业务发展的趋势,实现视频电话功能,做到真正的实时、 现场图像传送。

武汉科技大学硕士学位论文
参考文献
【1】周长发.vc++多媒体编程技术与实例【M】.北京:电子工业出版社.1999.
【2】张星明.视频图像捕获及运动检测技术的实现fJ】.计算机工程.2002.

第43页

【3】肖永隆,王理.利用ⅦW库函数快速分解AVI数据流【J】.信息工程大学学报.2001.
【4】喻其炳.多媒体信息处理在Windows中的应用【J1.重庆工商大学学报.2003. 【5】5
【7】7
Microsoft Inc.Video For Windows Developed Toolkit Programming

Guide[M].2001.

【6】Kruglinski DJ著,王国印译.Visual C++技术内幕【M】.北京:清华大学出版社.1994.
Norton

P著,孙风英译.MFC开发Windows95/NT4应用程序【M】.北京:清华大学出版

社.1998. 【8】张基温,贾中宁,李伟.Visual C++程序开发基础【M】.北京:高等教育出版社.2002. 【9】王超龙,陈志华.Visual C++6.0入门与提高【M】.北京:人民邮电出版社.2002. 【10】吴喜之.非参数统计【M】.北京:中国统计出版社.2006.8.

【11】艾海舟等译.图像处理、分析与机器视觉(第二版)【M】.北京:人民邮电出版社.2003.9.
【121 http://download.csdn.net/source/578987 【13】陈胜勇,刘盛.基于OpenCV的计算机视觉技术实现【M】.北京:科学出版社.2008.5. 【14】万象短信猫应用开发指南. 【15】OpenCV-doc.Oil.0.9.7,OpenCV说明文档.

【16】刘瑞祯,于仕琪.OpenCV教程.基础篇【M】_匕京:北京航空航天大学出版社.2007.6. 【17】尹晓华.智能视频监控中多目标检测跟踪技术研究101。西安电子科技大学. 【18】唐宜清.运动目标检测算法研究及其在智能监控系统中的应用【0】.湖南师范大学.
【19】赵俊.智能视频监控系统关键技术研究【O】.西安电子科技大学. 【20】冈萨雷斯.数字图像处理【M】.北京:电子工业出版社.2005. 【21】Jeffery Richter.Windows核心编程fMl.2000.

【22】张伯伦.基于异常行为识别的智能监控系统的研究与设计【O】.西安电子科技大学.
2007.

【23】赵晓雄,张学东.基于自适应学习速率混合高斯模型的背景消除【J】.鞍山科技大学学 报.第28卷第3.4期. 【24】王亮生,程荫杭.一种改进的基于混合高斯分布模型的自适应背景消除算法【J】.北方 交通大学学报.第27卷第6期. 【25】王典.基于混合高斯模型的运动阴影抑制算法【J】.计算机应用.第26卷第5期. 【26】黄建新.Kalman滤波的人体运动位置跟踪算法fJ】.华侨大学学报.第24卷第3期. 【27】赵莉,陈泉林.基于Kalman滤波器的车辆检测与跟踪系统【J】.电子测量技术.第30
卷第2期.

【28】常发亮,马丽,乔谊正.遮挡情况下基于特征相关匹配的目标跟踪算法【J】.中国图象
图形学报.第11卷第6期.

第44页

武汉科技大学硕士学位论文

【29】邵文坤,黄爱民,韦庆.动态场景下的运动目标跟踪方法研究【J】.计算机仿真.第23
卷第5期.

【30】刘亚,艾海舟,徐光佑.一种基于背景模型的运动目标检测与跟踪算法【J】.清华大学 计算机科学与技术系. 【31】张根耀,李竹林,赵宗涛.遮挡情况下运动目标的跟踪【J】.安徽大学学报.第27卷第
3期.

【32】Mean 【33】Mean

shift,mode seeking,and clustering.1995. Shift:a robust approach toward feature space analysis.2002.

【34】Real-time tracking of non-rigid objects using mean shift.2000. 【35】Mean-shift Blob Tracking through Scale Space.2003. 【36】Q.Cai and J.K.Aggarwal.Tracking Human Motion Using Multiple
【37】OpenCV China.http://www.opencv.org.cII.

Cameras.

【38】Liyuan 【39】Huwer
Visual

Li.Foreground

Object

Detection From Videos Containing Complex Background.

Proceeding ACM Multimedia

Conference.Berkeley,California,USA,2003.
Surveillance Workshop
on

S,Niemann H.Adaotive Change Detection for Real?time

Application.. July 2000.8.

Surveillance 2000.Proceedings Third
C,Grimson

IEEE International

【40】Stauffer

w.Adaptive background mixture

models for Real—time

tracking[A].In
of the

Int.Conf.Computer Vision of Pattern Recognition,1999.06

【41】C.Wren,八Azarbayejani,T.Darrell,and A.Pentland,“Pfinder:Real.time Tracking
Human Body”,IEEE Trans.PAMI,v01.19,no.7,PP.780-785,Jul.1997. 【42】T.Olson,E Brill,“Moving Object Detection and Event Recognition Algorithms for

Workshop,May 1997. and L S.Davis,“W4:Rea-Time Surveillance of People and 【43】I.Haritaoglu,D.Harwood
Their Activities,”IEEE

SmartCameras”,Proc.DARPA Image Understanding

Trans.PAMI,v01.22,no.8,PP.809-830,Aug.2000.
for Video Surveillance and

【44】R.T.Collins,A.J.Lipton and T.Kanade,“A System
Monitoring”,Proc.Am.Nuclear
Remote Systems,Apr.1999.

Soc.(ANS)Eighth

IIIt’l Topical Meeting Robotic

and

【45】C.Stauffer,W.E.L

Grimson,“Learning Patterns of Activity Using Real-Time Tracking,”

IEEE Trans.PAMI,v01.22,no.8,PP.747-757,Aug.2000.

【46】J.Barton,D.Fleet,and S.Beauchemin,“Performance 【47】K
R.Castleman,Digital

of Optical Flow Techniques”,

International Journal of Computer Vision,v01.12,no.1,PP.42.77,1994.

Image

Processing,Prentice Hall&清华大学出版社,1998.

【48】Zhao Jian—wei,Wang Peng,Liu Cong-qing.An object tracking algorithm based on occlusion mesh model[A].In:International Conference on Machine Learning and Cybernetics[C].
Beijing,China.2002. 【49】http://www.c-ps.net/trade/content/2008/6/7840.html 【50】张振昭,许锦标,万频.楼宇智能化技术.机械工业出版社.1999. 【51】陈龙.智能小区及智能大楼的系统设计.中国建筑工业出版社.2001.


【52】文冲,蒋群.现代时尚楼群智能化建筑ABC.北京希望电子出版社.2001.

武汉科技大学硕士学位论文
攻读硕士学位期间成果
一、论文

第45页

1、张景元,陈和平.基于嵌入式系统和Web的煤矿监控系统设计.2006年全国第六届
嵌入式系统学术年会论文集. 2、刘楠兰,陈和平,张景元.内存数据库索引技术在消防监控系统中的应用研究.贵州 工业大学学报.2008年第6期.

二、科研项目

1、参与完成太钢新炼钢全厂消防监控上位机系统设计与实现,负责编写通信部分代码
及调试,包括串口通信和网络通信。 2、参与完成了三峡梯级调度中心和三峡通航总局间数据的传输,主要工作是系统的整 体设计和数据传输部分代码的编写和调试。 3、参与完成三峡专用公路隧道消防监控上位机系统的设计与实现。主要工作是系统代 码的编写和调试,并与其他厂家(交通信号灯、图像监控系统)共同实现系统联调。

4、参与完成马鞍山新厂全厂消防监控上位机系统的设计与实现。负责消防监控中心和 各分厂消防系统的总体设计、系统实现和调试,并将监控中心数据通过Modem方式发送
至远程服务中心。 5、根据GBl6806研发消防监控室图形显示装置。 6、参与完成武钢“天网"工程消防监控系统安装与现场调试。

第46页

武汉科技大学硕士学位论文
致谢

时光如梭,转眼我的硕士学习生活已接近尾声,过去的这段时光成了我此生难忘的记

忆。在导师陈和平教授的关怀和悉心指导下,我顺利地完成了毕业课题及论文的撰写,陈 老师渊博的学识和丰富的实践经验、严谨的治学作风、勤奋的工作态度和谦逊的为人给我 留下了深刻的印象,将永远是我学习的榜样。近三年来,陈老师给我创造了很多的锻炼机 会,并精心指导,倾注了大量的心血,在此,谨对陈老师致以最诚挚的谢意。 感谢实验室的所有同学,他们在我的论文写作过程中提出了许多宝贵的意见和建议。
感谢三年来在学习和生活上给过我热情帮助的同学们。真诚地感谢你们!

非常感谢我的家人,谢谢你们多年来对我的鼓励和默默支持,是你们教会了我做人和 做事的道理,使我能够在人生的道路上不断进取,勇往直前。 最后,感谢各位专家教授在百忙之中对本文的审阅和赐教!


相关文章:
基于OpenCV视频监控任务书
[8]陈胜勇,刘盛.基于 OpenCV 的计算机视觉技术实现[M].北京:科学出版社,2008. [9] 张景元 . 基于 OpenCV 和无线通信的智能视频监控报警系统设计 . 武汉科技...
基于OpenCV的校园智能视频监控设计与实现
基于OpenCV和无线通信的... 897人阅读 50页 1下载...的校园智能视频监控设计与 实现 作者:于媛 苑春苗 ...智能视频监控系统能够有效的减少人为干预,提高监控效率...
视频监控系统的设计与实现
关键词:视频监控,OpenCV,图像采集,存储 I 洛阳理工学院毕业设计(论文) Design ...智能网络视频监控系统安防系统中的各个 子系统间实现无缝连接如:防盗报警系统...
某部队营区视频监控报警系统设计简介
视频监控重点区域智能分析... 5页 2财富值 视频监控报警系统设计方案 16页 5...基于OpenCV和无线通信的智... 50页 2财富值 火车站视频监控与防盗报警... 4...
基于3G4G无线视频监控系统应用方案
基于3G4G无线视频监控系统应用方案_解决方案_计划/解决...通信科技有限公司自主研 发的一款一体化智能无线视频...报警、GPS 定位、抓拍、云台控 制、硬盘存储、SD ...
基于ARM智能报警系统设计
基于ARM智能报警系统设计_信息与通信_工程科技_专业资料...关键词 :智能家居,智能家居报警系统,视频监视,OpenCV...家电智能控制,GSM通信,视频监控,传感器 监测,无线...
基于OpenCV的视频监控系统
此外,运用智能视频监控技术还能大大提高系统响应速度,...的活动特征与活动信息, 将这些内容与设定的报警规则...基于OpenCV和无线通信的... 50页 5下载券 图像处理...
基于单片机的无线报警系统设计与实现开题报告
基于单片机的无线报警系统设计与实现开题报告_信息与通信_工程科技_专业资料。河南...Computer Networks, 2004, 5 [10]黄小池.智能家居系统的现状和发展趋势[M]....
智能化视频监控综合管理平台的设计及应用
智能视频监控综合管理平台的设计及应用_信息与通信_工程科技_专业资料。智能化...智能分析模块图 其它子系统集成接口:负责管理平台其他系统(如:电子围栏报警系统...
更多相关标签:
智能监控报警系统 | opencv区域入侵报警 | opencv 报警 | opencv 智能指针 | opencv 监控 | opencv 人工智能 | opencv视频监控 | opencv车辆监控的速度 |