基于动态图像序列的运动目标检测与跟踪

更新时间:2024-02-02 20:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

[1]许洲.基于动态图像序列的运动目标检测与跟踪[D].广东,华南农业大学,2005, 1前言

1.1本课题的研究背景和意义

计算机视觉的研究目的是使用计算机代替人对景物环境进行感知、解释和理解。随着科学技术的发展,计算机视觉的应用范围日益扩大,对人类生产生活的影响日益深刻(Cipollaet al .,1998)。近年来,计算机视觉的研究重点逐渐从对静态图像的研究过渡到对动态图像序列的研究上来。动态图像序列由一系列图像组成,它们具有给定或假定的相对次序,并给出相邻两帧图像获取的时间间隔关系。与静态图像相比,动态图像的基本特征就是灰度的变化。对于某一场景下拍摄到的图像序列,相邻两帧图像至少有一部分的像素的灰度值发生了变化,造成像素灰度值变化的原因有(李智勇等,1999): (1)景物本身发生了变化,目标发生了变形或运动:(2)摄像机与景物发生了相对位移;(3)在自然环境中,物体光亮受外界光照变化而变化。因而图像序列各帧之间有着一定的时域和空域上的相关关系,这就使得我们可以利用图像序列检测出单帧图像中很难检测出的目标,更好的认识和分析目标的运动过程口。 在过去的十多年中,基于动态图像序列的目标检测和跟踪是计算机视觉领域的一个重要研究方向,同时也是行为识别和分析的前提,吸引了越来越多研究者的兴趣。运动目标检测就是对包含运动信息的图像序列运用数字信号处理技术进行适当的处理,从而去除静止的背景,检测出运动的目标及其携带的运动信息,并对这些运动信息进行整合,得到关键参数。视觉跟踪等价于在连续的图像帧间建立基于位置、速度、形状、纹理、色彩等有关特征的对应匹配问题(马颂德等,1998)。如果把所有的图像帧重叠起来,即在图像坐标系下把第一幅的特征和后续图像中图像特征对应起来,就可以得到物体运动的轨迹。从信息理论的角度,视觉跟踪又可以理解为在给定序列图像中目标的初始状态和各时刻的测量值的条件下,估计每一帧图像中运动目标的状态向量。运动目标的检测和跟踪在科学和工程中有重要的研究价值,在智能监控、智能机器人、人机交互、虚拟现实、人体运动分析、医学诊断、视频压缩等许多领域有广泛的应用前景。 1)智能监控

智能监控系统的需求主要来自那些对安全要求敏感的场合,如银行、商店、停车场、交通路面等。我们期望监控系统能够每天连续24小时的实时监视,并自动分析摄像机捕捉的图像数据,当盗窃发生或发现到具有异常行为的可疑的人时,系统能向保卫人员准确及时地发出警报,从而避免犯罪的发生,而目前监控系统没有达到这个效果。在智能交通监控系统中,期望系统能够在不需要人的干预、或者很少干预的情况下,通过对摄像机拍录的视频序列进行分析来实现车辆的定位、识别和跟踪,并在此基础上分析和判断车辆的行为,从而对交通进行智能的管理(Kastrinakiet al .,2003)。另外,视觉跟踪在自动售货机、ATM、交通管理、公共场所行人的拥挤状态分析及商店中消费者流量统计等监控方面也有着相应的应用(Collinset al .,2000)0 2)智能机器人

视觉 传 感 器是智能机器人的一种十分重要的信息源。为了实现自主运动,智能机器人需要能够跟踪和识别环境中的物体。其中一个广泛研究的课题是自动驾驶的车辆,它能够识别和跟踪道路的特征和其他路面情况。在机器手的应用中,安装在机器手上的运动的摄像机从不同视角拍摄目标图像,利用跟踪技术可以计算运动轨迹,选择最佳的抓取方式(Davsionet al .,2001)0基于视觉跟踪的机器人能够进行农作物的自动收获和自动灌溉。 3)人机交互

人机交互意味着机器具有行为理解的功能,实现这一目标的可能的方式之一是机器具有识别与理解人的姿势、动作、手势的能力,其技术关键是可靠准确的跟踪技术。在人机交互领

域内最为成功的发明是西门子公司开发的虚拟触摸屏(Siemens VirtualTo uchscreen,SI VIT)。该系统包括投影仪、红外发射器、摄像机和手部跟踪识别模块。SNIT将监视器的内容投影到演讲白板或桌面上,其操作通过将索引手指置于光束中并指向目标来实现。SNIT在摄像机记录的序列图像中连续地跟踪手的轮廓,将索引手指的运动理解为鼠标的移动,手指短暂停顿理解为按动鼠标(Maggioniet at .,199 9)。利用计算机视觉实现手势跟踪和手势识别有利于在高噪声环境下(如机场、工厂)的信息传递和工作,如剑桥大学工程系信息工程实验室开发的基于指向手势的人机接口(Cupolaet al .,1996)。摄像机在约1.6米远的距离上拍摄机械手、工作空间及操作者的指向手势。系统在立体摄像机拍摄的两个序列图像中分别实时地跟踪指向手势,通过摄影变换来确定它指向的目标,然后指示机械手抓取该物体。另外,利用视觉的唇语跟踪对于提高语音识别的鲁棒性起着重要的作用。 4)虚拟现实

虚拟现实是跟踪的又一重要应用领域,和互联网紧密相连。基于互联网网络的交互式空间的开发刚刚起步,如虚拟聊天室,它在通过文本交流的同时可以通过二维图标来导航用户,如果增加手势、头的姿势、面部表情等线索,将会给参与者们提供更加丰富的交互形式。可靠的跟踪人脸特征变化可

以提供有关表情和头部运动变化的相关信息,将计算机画出来的小动物的脸部表情与之进行,可以使小动物也具有人的表情,为网上交流和演员练习提供了有价值的视觉反馈。另外,视觉跟踪在视频会议、虚拟工作室等其他虚拟现实场合也有着相当广泛的应用(Psarroue tal .,2002)e

5)人体运动分析

分割图像中的人体部分并在图像序列中跟踪分析感兴趣的关节运动,对于建立人体的几何模型、解释人体的运动行为机制从而提高它的运动性能有着积极的推动作用。这可以应用于康复、医疗领域,人体运动参数为评价残疾、诊断疾病,确定康复和治疗方案提供了重要的依据;体育科研领域,准确、及时、多方面地获取运动员的运动参数是提高成绩的重要手段;以及在人机功效学领域,通过检测和分析人体运动信息,对于设计和改进符合人体运动习惯、舒适、安全的工具和装置有着重要的作用(Masoud det a1 .,2003). 1.2运动目标检测和跟踪所面临的问题

在运动目标检测和跟踪方面存在的困难很大程度上是由于实际环境中目标运动的复杂性以及视频数据所具有的特殊性、复杂性造成的。目标所占整幅图像的大小、运动速度、运动轨迹、目标颜色与背景颜色的相似程度、背景的稳定程度,都会使运动目标在视频图像中进行目标跟踪带来难度。总体来说,运用视频图像处理的方法进行目标跟踪的困难主要在于: 1)影响运动目标检测和跟踪性能的因素非常复杂

运动目标检测和跟踪由于所处的实际处理环境不同,将会受到来自不同因素的影响,它们会不同程度地影响到运动目标检测和跟踪的准确性和稳定性,系统对不同环境的适应性也存在很大的挑战。这些影响系统性能的因素包括:光线亮度的变化;背景景物的变动;阴影和物体间的重叠遮挡;前景目标与背景中物体相近;非静态背景以及运动目标的高速运动等。 2)用于检测和跟踪的运动目标特征难以选取

运动图像序列是一类特殊的视频,在运动图像序列中包含了大量的运动信息,时空图像中的前景目标的梯度信息、深度信息和光流场以及彩色图像中的彩色纹理特征、直方图信息,运动图像中的边缘信息等,这些信息都可以用来进行运动目标检测和跟踪,但是采用哪一种或哪几种特征能够取得较好的跟踪效果,这不仅与方法本身有关,还和运动图像序列自身的特点有关,因此很难确定某个通用的具有明显优势的特征来进行目标检测和跟踪。

3)运动目标跟踪的实时性要求和准确性之间的平衡难以掌握视频 数 据 是一类与字符数值类数据完全不同的特殊数据,它有巨大的数据量。一般来说,视频数据的数据量大约比结构

记录数据大七八个数量级。一幅中等分辨率的图像(640x480),彩色为24bit/像素,数字视频图像的数据量大约为1MB,如果每秒播放30帧,则一秒钟的数据量大约为30MB。由于运动目标跟踪处理的对象是这样的大数据量的视频图像,所以其运算量相当大,既使在CPU处理速度不断升级的今天,如果不能选择合适的算法,也很难达到实时处理的要求。另外运动目标跟踪的另一个重要性能指标是准确性,包括目标检测的准确性和目标跟踪的准确性,而准确性的保证往往是在大量复杂运算和处理的基础上的,所以这就造成了目标跟踪同时所要求的实时性和准确性的冲突,一个好的运动目标跟踪系统必然要兼顾两者,这样就必须对两个性能指标加以平衡。总而 言 之 ,动态图像序列是一类特殊的视频。它容易受到现实场景中诸多因素的影响,光线强度的变化、背景中景物的变化、运动前景目标投射阴影和前景目标之间的相互遮挡、前景目标的颜色形状、运动速度改变都会导致运动图像呈现出一定的特殊性,从而给运动目标检测增加难度。因此,如何进行有效地运动目标检测是一项比较艰巨的任务,但这也是基于图像分析的运动目标跟踪面临的一个首要问题;如何选取合适的特征从动态图像序列中分割前景目标并有效地实现对前景目标的跟踪是另一个难题。 1.3运动目标检测和跟踪的综述

视觉研究发展至今,人们己经设计出很多检测跟踪系统和算法,根据不同的标准有不同的划分。下面将按照对图像所含信息的利用程度对运动目标的检测、识别和跟踪现有方法进行综述。根据这个分类标准,可以将现有的运动分析方法大体分为基于频域的方法、基于特征的方法和基于像素的方法等三类(潘征,2003)。按照这种分类方法,基于频域的分析方法对图像所含信息的利用程度最低;基于像素的分析方法对图像所含信息的利用程度最高,它对图像中每个像素点上的信息都分别加以利用;基于特征的分析方法对图像所含信息的利用程度则居中。由于运动检测与跟踪问题的复杂性,无论哪一类方法都无法适应所有的应用场合,一般都是针对运动目标检测与跟踪领域内某个或某些特定问题提出的。 1)基于频域的方法

基于频域的方法最开始是对采集到的图像序列进行傅立叶变换,通过目标运动在频域中幅值不变而相位变化的特性计算相邻帧间的相位角差来估计空间域中目标的位移。它要求背景均匀且只有一个运动目标,因而其应用显然受到限制。此后,人们在这方面进行了进一步的研究。S.A .M a hmoud是一位近年来对运动目标的频域方法进行了广泛研究的学者。除了FFT方法,他还提出用快速Hartley变换(FHT)进行多目标跟踪(Mahmoudet al .,1993)。其主要思路是对图像序列进行频域处理,再进行峰值检测。Fourier谱或Hartley谱的峰值位置被证明对应于运动目标的速度。他的文章中最有特色的地方在于对多运动目标的n阶遮挡分别用冲击函数的对应次乘积求和表示,从而在一定程度上反映和解决了多目标遮挡的问题。有些学者对用Fourier变换和Hartley变换进行序列图像多目标运动估计的算法进行了比较,认为FFT可以精确求得目标速度,但对计算的要求较高;FHT则具有快速和占用内存小的特点,但它只能给出目标运动的大小而无方向。结合这两种方法的优势,Aggarwal(1998)提出了新方法:首先用FHT求得谱变换峰值即速度值,再在峰值处计算FFT频谱以精确求出速度。在实现过程中,它利用二维图像在X, Y方向上一维投影的Fourier或Hartley变换进行快速处理,从而达到不需分割、匹配等预处理的简化效果,且对遮挡不太敏感,它的缺点是要求有较长帧的数据。另外,Porat(1997)等提出了一个完整的运动目标三维频域检测方法,他们用方向滤波器在频域发现目标,然后在时空域定位,还设计了一种并行结构来实现这一算法。它存在的问题是方向滤波未考虑背景的影响。Francos(1997)等人将匹配滤波器理论推广到三维图像序列上以增强被检目标的信噪比,把运动目标检测问题转化为三维变换域中匹配滤波器的寻找。Heeger(1998)提出了一个计算理想图像速度的模型,用三维Gabor滤波器对功率谱进行采样,并用若干个滤波器的输出相结合来估计图像中目标的运动。Roach(2000)等人研究了运动目标检测与分析的运动轨迹约束法,在三维时空空间根据运动轨迹切线与法

线的正交性导出了目标的运动约束方程,这几种方法都是针对单目标检测的情况。 2)基于特征的方法

基于 特 征 的方法是根据图像特征或由特征组成的模型来检测运动或识别运动目标。由序列图像进行基于特征的运动检测方法分为以下三个步骤: (1)对变化图像的逐帧分割和目标特征的提取; (2)所选目标特征的帧间对应关系确立; (3)用特征相关计算运动参数。

当把 图 像 的分割看作图像预处理的内容后,基于特征的运动检测方法的关键步骤是目标特征的抽取和特征的相关计算。在一般情况下,主要被利用的目标特征有:角点、直边缘、曲边缘等局部特征和形心、表面积、惯量矩的长短轴等全局特征。在具体问题中,采用什么特征主要取决于目标具有哪些特性以及算法实现的具体要求。

在运 动 目 标的检测、识别与跟踪的研究中所面临的一个严重问题是:在真实场景中,运动目标所处的环境往往十分复杂,其中经常有各种各样的干扰,如:目标的遮挡、景物的阴影、背景的变化等,这样就使得目标的检测、识别与跟踪这一任务变得十分困难。但是,如果事先对要处理的目标的某些信息(如几何结构信息)有所了解的话,就能使在实际条件下的运动目标检测、识别与跟踪这一难题变得比较简单而可靠。这便是人们提出用特征进行目标检测、识别与跟踪的原因。

Gen ne ry( 1992)提出了一个对结构信息己知的三维物体进行跟踪的算法。他将物体的运动描述成具有6个自由度的空间匀速运动,并采用一种类似于卡尔曼滤波的方法来估测物体的运动轨迹,并将物体的边缘作为特征用于问题的分析与求解之中。十几年来,人们对Gennery的这个方法作了各种各样的改进,提出了适用于不同环境的各种新方法。

Tho m pso n(1992)重点讨论了基于模型的目标跟踪中的识别问题。他采用一种位置点聚类技术来实现物体模型与图像中物体特征点(即角点)间的匹配,用假设检验方法对物体的运动轨迹做出预测,以此实现对运动物体的跟踪。Verghese(1993)等人提出了基于直线段的光流计算己知三维运动物体的实时跟踪方法。Lowe(199叼提出了基于物体三维模型与图像特征非线性最小二乘法拟合的运动跟踪算法。Koller(1996)等人在处理对交通路口处的特定型号车辆识别与跟踪时,提出了一种与Lowe方法类似的方法。他们把需要检测与跟踪的车辆的用12个线段长度参数来表示,将从图像中抽取的物体的一簇直线边缘特征与该模型在二维图像平面上的投影作比较,以实现物体图像与模型间的匹配,通过匹配寻找到需要跟踪的车辆在图像中的位置,然后根据车辆在图像中的位移得到它在真实环境中运动时在不同时刻的位置。

Ric hard so n和Blostein(1998)提出一种运动目标特征点跟踪算法,他们的方法是建立在决策学方法的多阶段假设检验基础上,以物体上的特征点为研究对象,以长序列图像中的运动跟踪为目的。Roach和Aggarwal(2001)提出了由透视投影序列图像获取物体的结构和运动参数的方法。他们仅用一个方程来描述一个空间点与其在图像平面上的投影之间的关系,用5个空间点在两个不同位置上拍摄到的图像计算出这五个空间点的相对三维坐标和摄像 机的运动参数。Nagel(2003)提出一种比Roach和Aggarwal方法更简易的方法。他先将平移分量取消,并将旋转运动表示成仅含有三个未知参数,即旋转轴方向角和围绕该轴的旋转角度的矩阵。然后,在设定五个空间点所构成的结构到摄像机的距离为任意值的前提下解算出位移分量矩阵。Nagel方法的优越性在于采用了平移和旋转运动的分离及未知量的消除等措施,减小了算法搜索空间,从而简化了问题的求解过程。 总结 上 述 基于特征的序列分析方法,可以得到如下结论:

(1)使用特征(点、线或点线混合)计算物体运动和结构信息一般要解非线性方程; (2)基于最少特征量的算法通常对噪声干扰更为敏感;

(3)一般来说,模型的不同算法要求有最小数目不同的特征来求得问题的解答。 3)基于像素的方法

基 于 像 素 的方法根据图像中像素灰度模式的变化来检测运动、识别目标的。下面介绍有代表性的各种现有算法。Kab uk a(1 995)等人则提出一种用最优控制理论方法实现运动目标跟踪的系统。他们在由摄像机获取的图像中加入扰动信息来模拟由于摄像机运动而造成的图像灰度数据的抖动,并用一种性能指数来衡量这种振动的效果。他们用区域匹配、中心点匹配以及模板的方法来完成对运动目标的平移运动和尺度变化的计算。Lee (19 95 )等人在处理用红外图像序列解决对海上船只的控制与跟踪的同时,提出用灰度分割方法首先完成对可能的运动目标的检测及标记,然后将这些待确定的目标放到后续的图像中进行检验,对目标的跟踪是以计算不同帧中目标的对比度差值来完成的。

Che n( 199 7)等人提出一种基于哈达玛(Hadamard)变换和数学形态学滤波方法的运动目标跟踪系统。他们用数学形态学方法消除图像中的噪声,用Hadamard变换来提高运动目标中心点坐标的计算速度,用迭代的最小二乘自适应预测器来实现对运动目标未来位置的预侧。

在低 信 噪 比运动目标的检测与跟踪方面,Mohanty(1998)对图像序列中物体出现或不出现的情况作出假设,并由此假设定义一种最大似然法则。然后用决策理论确定出满足最大似然法则的物体的运动轨迹,以此来实现对物体的跟踪。这里背景噪声假定为准平稳的高斯白噪声,其统计量用自适应方式估测,对图像序列以数帧图像为一组的方式加以处理。Maybeck(1999)用卡尔曼滤波方法对前红外图像中由多个热点所组成的目标进行自适应跟踪。他们提出了这样的算法:先用数学(或光学)的FFT信号处理方法对由多个热点构成的目标的形状进行实时的自适应识别在该算法中,目标形状则被用作一种强化的相关匹配的模板,而该相关匹配器则用于对图像数据进行处理,以便为线性卡尔曼滤波器提供所需的目标位移的测量值。

Chu (1 996 )提出一种将二维图像序列按时间轴方向投影以降低数据量的目标检测与跟踪方法。Porat和Friedlander(1998)用一个并行三维方向滤波器组在频率域对三维数据进行FFT滤波。滤波器的输出就是一组被增强了的二维图像。在这些图像中,可以检测出来与目标运动轨迹相对应的光条。他们的方法是对Chu的时间投影算法的一般化。然而,时间投影变换方法是以牺牲算法的可靠性来换取速度的。

Blo ste in(2 002)用多步的假设检验(MultistageH ypothesisTe sting)方法来处理有噪声存在的弱目标的运动检测及跟踪问题。他们假设背景像素点是不相关的高斯白噪声随机变量,图像序列中存在一个(或数个)由数目庞大的候选轨迹所组成的树形结构。这个树形结构中的继承关系是针对前后两帧图像而言的。每一帧图像对应着树形结构中的一个表示层,每一个像素是这一层上的一个结点。所谓多步假设检验算法,就是在图像序列中这个树形结构的每一层上用假设检验的方法对结构做出删节修正。具体地说,就是在每一层的每一个结点处将像素点的灰度值与两个闽值相比较,直到“包含运动物体”这一假设为某一候选轨迹所接受或拒绝为止。如果检验统计值介于这两个闽值之间,则暂缓做出判定并将当前轨迹的状态存于结构的列表之中。这里的检验统计值以及两个阐值均是根据高斯白噪声模型推导出来的。由于前面帧上被删除(拒绝)的轨迹不会在后续帧上出现,所以这种算法的效率与直接轨迹匹配的算法相比,有数量级的显著提高。 1.4研究内容

本文利用视觉信息在时间和空间上的相关性,主要研究运动目标检测与跟踪的相关模型及算法。

1)对 三 种 常用的运动目标检测算法进行研究,讨论各方法的原理并通过实验分析和比较各自的优缺点。在此基础之上拟提出一种基于自适应背景模型的运动目标检测方法。将检测

算法应用于多组自然环境条件下拍摄得到的图像序列进行运动检测,通过实验验证检测算法的有效性、准确性。

2) 建 立 目标跟踪的卡尔曼滤波器模型,对根据运动检测算法从序列图像中检测出的运动目标进行轨迹跟踪。并将算法中检测结果和跟踪结果进行相互校正提高系统的稳定性。通过实验检验目标跟踪的卡尔曼滤波模型符合实际的情况,跟踪算法能否可靠地预测与跟踪出目标的运动轨迹。

3) 讨 论 在贝叶斯框架下一般的目标跟踪问题,给出蒙特卡罗粒子滤波 的通用算法,对基于顺序重要性采样的粒子滤波算法进行详细推导和总结, 将粒子滤波与主动轮廓模型相结合应用于复杂背景下人体头部运动的跟踪。 通过实验检验基于粒子滤波的跟踪算法能在复杂背景下实现对目标的跟踪。 这一假设为某一候选轨迹所接受或拒绝为止。如果检验统计值介于这两个闽 值之间,则暂缓做出判定并将当前轨迹的状态存于结构的列表之中。这里的 检验统计值以及两个阐值均是根据高斯白噪声模型推导出来的。由于前面帧 上被删除(拒绝)的轨迹不会在后续帧上出现,所以这种算法的效率与直接轨 迹匹配的算法相比,有数量级的显著提高。 3基于卡尔曼滤波的目标跟踪 3.1引言

通过 上 一 章的运动目标检测可以从图像中得到运动目标的位置、形状等 信息,但这些数据是孤立的,并没有提供图像序列之间的联系,本章将对检 测出的目标进行运动跟踪,对这些数据进一步处理,获得跟踪目标的运动轨 迹。对于视频序列来说,运动目标的跟踪可以通过提取要被跟踪目标的图像, 建立一个模板,然后在下一幅图像中全图匹配搜索目标图像,找到最佳匹配 的位置,从而估计出目标的个数以及相应于每一条运动轨迹的目标运动参数 如位置、速度、加速度等。这种全图匹配搜索方法有时可以得到较为满意的 跟踪结果,但在实际使用中这种方法主要存在着下面两方面的问题。 (1) 由 于 目 标 在下一幅图像中可能由于旋转、光线及运动等原因,目 标的图像会有所形变,所以直接利用目标图像像素数据作为匹配模板,对视 频序列的每一帧图像应用匹配算法时得到的结果往往是不够准确。同时,由 于运动目标的行为分析是建立在跟踪得到的运动轨迹的基础之上,这些误差 将对后续的高层处理带来困难。

(2 )除 非 有 专 门的硬件支持,否则这种全图匹配搜索的定位方法是比 较费时的,难于满足实时性要求高的场合,如视觉监控系统。

目前 己 经 有许多目标跟踪方法被提出,用于解决上述问题,如:建立各 种各样目标的匹配模板以及匹配距离计算的方法,以此来提高模板匹配速度 和精确度,其中一项重要的技术就是在跟踪过程中加入滤波器。这是因为在 跟踪过程中使用滤波器不仅可以平滑匹配时造成的误差,而且还可以起到预 测的作用。它可以根据目标以前的运动信息对目标在当前帧中的位置进行预 测,这个预测值将被作为姿态的初始值。因此加入滤波器不但可以提高匹配 的速度,而且可以提高跟踪的稳定性。 3基于卡尔曼滤波的目标跟踪 3.1引言

通过 上 一 章的运动目标检测可以从图像中得到运动目标的位置、形状等 信息,但这些数据是孤立的,并没有提供图像序列之间的联系,本章将对检 测出的目标进行运动跟踪,对这些数据进一步处理,获得跟踪目标的运动轨

迹。对于视频序列来说,运动目标的跟踪可以通过提取要被跟踪目标的图像, 建立一个模板,然后在下一幅图像中全图匹配搜索目标图像,找到最佳匹配 的位置,从而估计出目标的个数以及相应于每一条运动轨迹的目标运动参数 如位置、速度、加速度等。这种全图匹配搜索方法有时可以得到较为满意的 跟踪结果,但在实际使用中这种方法主要存在着下面两方面的问题。 (1) 由 于 目 标 在下一幅图像中可能由于旋转、光线及运动等原因,目 标的图像会有所形变,所以直接利用目标图像像素数据作为匹配模板,对视 频序列的每一帧图像应用匹配算法时得到的结果往往是不够准确。同时,由 于运动目标的行为分析是建立在跟踪得到的运动轨迹的基础之上,这些误差 将对后续的高层处理带来困难。

(2 )除 非 有 专 门的硬件支持,否则这种全图匹配搜索的定位方法是比 较费时的,难于满足实时性要求高的场合,如视觉监控系统。

目前 己 经 有许多目标跟踪方法被提出,用于解决上述问题,如:建立各 种各样目标的匹配模板以及匹配距离计算的方法,以此来提高模板匹配速度 和精确度,其中一项重要的技术就是在跟踪过程中加入滤波器。这是因为在 跟踪过程中使用滤波器不仅可以平滑匹配时造成的误差,而且还可以起到预 测的作用。它可以根据目标以前的运动信息对目标在当前帧中的位置进行预 测,这个预测值将被作为姿态的初始值。因此加入滤波器不但可以提高匹配 的速度,而且可以提高跟踪的稳定性。

卡尔 曼 滤 波(Kalmanfi lter,KF)是著名的滤波器之一,有一套基本的公式 用于预测修正的评估,在最小化协方差估计误差方面表现出众,己被广泛应 用于自动和辅助导航系统,以及运动目标的跟踪系统。本章将建立目标跟踪 的卡尔曼滤波器模型,预测和估计运动目标的位置和速度。在对预测后的运 动目标和当前前景目标进行匹配时,利用图像质心、区域面积进行目标位置 的定位。通过卡尔曼滤波器进行运动估计,可以对目标位置有一个准确的估 计,减少了噪声干扰和特征提取的搜索范围,从而减小了计算量,同时以滤 波值作为输出,相当于对检测算法进行了一定的修正,使得结果更接近于真 实的情况。

本章 的 结 构如下:3.2节介绍卡尔曼滤波的基本理论;然后在3.3节建立 目标跟踪的卡尔曼滤波器模型;3.4节构造了一个利用图像质心、区域面积 进行目标匹配的算法;3.5节给出了基于卡尔曼滤波的目标跟踪算法;3.6节 是实验结果与分析:最后在3.7节对本章进行小结。 3.2卡尔曼滤波原理

滤波 问 题 就是尽可能地恢复一个被噪声干扰了的时间序列的问题,也可 以视为一个预测问题。从数学上讲,预测就是从一个时间序列的过去的数据 来估算整个序列的统计参数。这种估算得出的是统计参数的平均值,它与客 观实际是有一定的差距的,最佳预测应使这种误差为某种准则下的最小。 196 0年 和 1961年卡尔曼和布西提出了递推滤波算法,成功地将状态变 量法引入到滤波理论中来,用消息与干扰的状态空间模型代替了通常用来描 述它们的协方差函数,将状态空间描述和离散时间更新联系起来,适用于计 算机直接进行运算,而不是去寻求滤波器冲击响应的明确公式。这种算法得 出的是表征状态估计值及其均方误差的微分方程,给出的是递推算法。这就 是著名的卡尔曼滤波理论,或称为卡尔曼一布西滤波(张有为,1980; Welch G eta1 .,2003).

卡尔 曼 滤 波(Kalmanfi lter,KF)是著名的滤波器之一,有一套基本的公式 用于预测修正的评估,在最小化协方差估计误差方面表现出众,己被广泛应 用于自动和辅助导航系统,以及运动目标的跟踪系统。本章将建立目标跟踪 的卡尔曼滤波器模型,预测和估计运动目标的位置和速度。在对预测后的运 动目标和当前前景目标进行匹配时,利用图像质心、区域面积进行目标位置 的定位。通过卡尔曼滤波器进行运动估计,可以对目标位置有一个准确的估 计,减少了噪声干扰和特征提取的搜索范围,从而减小了计算量,同时以滤 波值作为输出,相当于对检测算法进行了一定的修正,使得结果更接近于真 实的情况。

本章 的 结 构如下:3.2节介绍卡尔曼滤波的基本理论;然后在3.3节建立 目标跟踪的卡尔曼滤波器模型;3.4节构造了一个利用图像质心、区域面积 进行目标匹配的算法;3.5节给出了基于卡尔曼滤波的目标跟踪算法;3.6节 是实验结果与分析:最后在3.7节对本章进行小结。 3.2卡尔曼滤波原理

滤波 问 题 就是尽可能地恢复一个被噪声干扰了的时间序列的问题,也可 以视为一个预测问题。从数学上讲,预测就是从一个时间序列的过去的数据 来估算整个序列的统计参数。这种估算得出的是统计参数的平均值,它与客 观实际是有一定的差距的,最佳预测应使这种误差为某种准则下的最小。 196 0年 和 1961年卡尔曼和布西提出了递推滤波算法,成功地将状态变 量法引入到滤波理论中来,用消息与干扰的状态空间模型代替了通常用来描 述它们的协方差函数,将状态空间描述和离散时间更新联系起来,适用于计 算机直接进行运算,而不是去寻求滤波器冲击响应的明确公式。这种算法得 出的是表征状态估计值及其均方误差的微分方程,给出的是递推算法。这就 是著名的卡尔曼滤波理论,或称为卡尔曼一布西滤波(张有为,1980; Welch G eta1 .,2003).

一般 地 , 对于一个可分解为N维动态系统和M维(M

其中,x,E R “是k时刻的系统状态,ZkE=- 91M是k时刻的观测,矩阵人表示 状态从k一1时刻到k时刻的状态转移矩阵,从为观测矩阵,系统方程中省 略了输入控制。wk和Vk分别为具有协方差矩阵Qk和凡,且互不相关的零均 值白噪声序列,即满足

Wk 一N (O ,Q k), v k一 N (0, Rk )

COV [Wk ,wj ]一 Qka kj , COV[VkV)]二Rkbki,COV[WkVi]二0 通常将Qk称为状态噪声协方差,称Rk为观测噪声协方差·

假定 知 道 k时刻之前过程和给定观测值Zk的情况下,设xkE巩 N}

.X,E 91\分别为k时刻先验状态估计和后验状态估计。因此可以定义先验估 计误差和后验估计误差分别为 了4 5 q︺ 3 、3

.x ,一xk e.冠 x, 一xk 从而先验误差协方差为 e. e.

后验估计协方差为 只=

为了推导出卡尔曼滤波的公式 E [ekek

,首先来计算后验状态估计xk它是先验 3基于卡尔曼滤波的目标跟踪

卡尔 曼 滤 波(Kalmanfi lter,KF)是著名的滤波器之一,有一套基本的公式 用于预测修正的评估,在最小化协方差估计误差方面表现出众,己被广泛应 用于自动和辅助导航系统,以及运动目标的跟踪系统。本章将建立目标跟踪 的卡尔曼滤波器模型,预测和估计运动目标的位置和速度。在对预测后的运 动目标和当前前景目标进行匹配时,利用图像质心、区域面积进行目标位置 的定位。通过卡尔曼滤波器进行运动估计,可以对目标位置有一个准确的估 计,减少了噪声干扰和特征提取的搜索范围,从而减小了计算量,同时以滤 波值作为输出,相当于对检测算法进行了一定的修正,使得结果更接近于真 实的情况。

本章 的 结 构如下:3.2节介绍卡尔曼滤波的基本理论;然后在3.3节建立 目标跟踪的卡尔曼滤波器模型;3.4节构造了一个利用图像质心、区域面积 进行目标匹配的算法;3.5节给出了基于卡尔曼滤波的目标跟踪算法;3.6节 是实验结果与分析:最后在3.7节对本章进行小结。 3.2卡尔曼滤波原理

滤波 问 题 就是尽可能地恢复一个被噪声干扰了的时间序列的问题,也可 以视为一个预测问题。从数学上讲,预测就是从一个时间序列的过去的数据 来估算整个序列的统计参数。这种估算得出的是统计参数的平均值,它与客 观实际是有一定的差距的,最佳预测应使这种误差为某种准则下的最小。 196 0年 和 1961年卡尔曼和布西提出了递推滤波算法,成功地将状态变 量法引入到滤波理论中来,用消息与干扰的状态空间模型代替了通常用来描 述它们的协方差函数,将状态空间描述和离散时间更新联系起来,适用于计 算机直接进行运算,而不是去寻求滤波器冲击响应的明确公式。这种算法得 出的是表征状态估计值及其均方误差的微分方程,给出的是递推算法。这就 是著名的卡尔曼滤波理论,或称为卡尔曼一布西滤波(张有为,1980; Welch G eta1 .,2003).

3基于卡尔曼滤波的目标跟踪

一般 地 , 对于一个可分解为N维动态系统和M维(M

其中,x,E R “是k时刻的系统状态,ZkE=- 91M是k时刻的观测,矩阵人表示 状态从k一1时刻到k时刻的状态转移矩阵,从为观测矩阵,系统方程中省 略了输入控制。wk和Vk分别为具有协方差矩阵Qk和凡,且互不相关的零均 值白噪声序列,即满足

Wk 一N (O ,Q k), v k一 N (0, Rk )

COV [Wk ,wj ]一 Qka kj , COV[VkV)]二Rkbki,COV[WkVi]二0 通常将Qk称为状态噪声协方差,称Rk为观测噪声协方差·

假定 知 道 k时刻之前过程和给定观测值Zk的情况下,设xkE巩 N}

.X,E 91\分别为k时刻先验状态估计和后验状态估计。因此可以定义先验估 计误差和后验估计误差分别为 了4 5 q︺ 3 、3

.x ,一xk e.冠 x, 一xk 从而先验误差协方差为 e. e.

后验估计协方差为 只=

为了推导出卡尔曼滤波的公式 E [ekek

,首先来计算后验状态估计xk它是先验 3基于卡尔曼滤波的目标跟踪

状态估计布和实际观测值Zk和观测估计Hk布加权差分的线性组合,如下式 Sk 0 x k十 K (zk 一H A ) ( 3.6 )

式中Zk - Hxk称为差值(residual),反应了观测估计Hkxk和实际观测Zk之间的 误差。矩阵K称为增益(gain),用来最小化后验估计误差协方差。这个最小 化过程是首先将式(3.句代入ek,然后再代入式(3.叼,并令结果为零,求出K. Kk·P, -H kf(H kP }, - H }T + R k 卜 Pk-Hf H}P}- K +凡 (3.7)

卡尔 曼 滤 波器把每一个时间点k的误差协方差矩阵的跟踪减小到最小, 它由两步完成:

(1) 预 测 步骤:包括状态预测和误差协方差预测

(2) 修 改 步骤:包括卡尔曼增益计算和后面的状态和误差协方差修改。 从上面的推理可以得到卡尔曼滤波器的基本方程,如下所述: 状态 预 测 方程布二Akxk-, (3.8 )

协方 差 预 测方程Pk二A,Pk-,Ak十Qk (3.9 )

卡尔 曼 增 益方程凡二PkH k(H kPkH k十凡犷, (3.10) 状态 修 改 方程xk二Sk+ K k(Z. - H.xk) (3.1 1) 协方 差 修 改方程Pk一(I- KkHk)Pk (3. 12)

卡尔 曼 滤 波利用反馈控制系统估计运动状态,滤波器估计某一时间的状 态,并获得该状态地预测值。也就是说,卡尔曼滤波公式分成两部分:预测 和修正。预测公式负责利用当前的状态和错误协方差估计来为下一步时间状 态得到先验估计;而修正公式负责反馈部分,如将新的观测和先验估计一起 考虑,从而获得后验估计。卡尔曼滤波算法的描述如下图3.1所示。 3基于卡尔曼滤波的目标跟踪

图3 .1 卡 尔 曼 滤 波 的 计算 流 程 图

3.3目标跟踪的卡尔曼滤波器模型

运动目标跟踪,就是在连续的图像帧间创建基于位置、速度、形状、纹理或色彩等等有

关特征的对应匹配问题(马颂德等,1998)。如果把所有的图像帧重叠起来,即将第一副的特征和后续特征中的图像特征连接起来,就可以得到物体的运动轨迹,因此,运动目标跟踪的目的是确定运动目标的运动轨迹,其关键是在检测所得的前景目标和跟踪的动态运动目标之间建立对应关系。

本章采用卡尔曼滤波器作为目标的运动模型,预测运动目标的位置和速度。在对预测后的运动目标和当前前景目标进行匹配时,利用图像质心、区域面积进行目标位置的定位。通过卡尔曼滤波器进行运动估计,可以对目标位置有一个准确的估计,减少了噪声干扰和特征提取的搜索范围,从而减小了计算量。为此,本文根据卡尔曼滤波器原理和目标运动特点,建立目标跟踪的卡尔曼滤波器模型。 3.3.1状态变量的选取

描述目标的几何特征可以包括位置、形状和质心(形心)等。本章选择检测得到的二值掩模图像中目标运动连通区域的最小外接矩形框描述目标,它可以同时表示目标的位置和形状。另外,目标的运动特征,由运动矢量描述,它是指某个运动物体在两帧图像中的位置差矢量,即表示运动物体在这两帧图像的时间间隔内所做的位置,它的值与运动物体的加速度大小有关。因此,在目标跟踪的卡尔曼滤波器模型中,状态变量就是表征该目标的最小外接矩形框的一对对角顶点(称为特征点)的集合,包括它们的位置,速度和加速度。 用如下向量表示:

T ( 3.1 3) x?(x1, y1,?? x2,y2,vx1 ,vy1 ,vx2 ,vy2 ,?x1,?y1,?x2,?y2 )其中,(X1,Y1)和(X2,Y2)分别表示特征点的坐标,下标1和2表示不同的特征点;(vx1 ,vy1 )和(vx2 ,vy2 )分别表示相应特征点在X,Y坐标上的单位位移,即为速度;(?x1,?y1 )和(?x2 ?y2)分别表示相应特征点的加速度。

在实际运算中,为方便起见,可以建立两个卡尔曼滤波器,它们的状态变量分别是特征

点的横纵坐标,以及它们沿横纵坐标轴的速度和加速度。两个滤波器的状态转移方程和测量方程是完全一样的。因此,状态变量可分别表示为:

TT,Y=(x?)T (3.14) x?(x1,x2,vx1 ,vx2 ,?x1,?x2)( y1,?? y2,vy1 ,vy2 ,?y1, ?y2)3.3.2系统的状态转移方程

状态转移方程的建立也即对目标的运动规律的把握是模型成败与否的关键,状态转移方程误差过大,会使卡尔曼滤波器的性能大受影响。在图像采集频率比较高,相邻图像帧间时间间隔不大的情况下,两帧之间目标的位移不大,对大多数正常运动的目标(即不出现突然加速,大角度变向等动作)来说,其在两帧之间的运动可以近似为匀加速直线运动;而对于那些非匀加速运动的情况,由于帧间间隔很小,加速度实际变化也不大,用匀加速直线运动来近似不会带来太大的误差(Fanet al .,20 02)。因此,假设目标在相邻两3墓于卡尔曼滤波的目标跟踪帧图像间的运动为匀加速直线运动。 在这 一 假 设条件下,得到如下的状态转移方程:

XK?1?AKXK?wk ( 3.1 5)

T其中,xk?表示k时刻系统的状态变量,Wk是附加的(x1,k,x2,k,vx1,k ,vx2,k ,?x1,k,?x2,k)过程噪声,并令它是零均值白噪声序列。Ak是系统转移矩阵,它描述了k十1时刻的一个

新状态与它的前一时刻(k时刻)的状态之间的关系。在本章的系统中,Ak是根据二阶牛顿动力学方程来决定的,并且假定它是时不变的,因此有:

????AK?A???????1000000100000010000101000.5010100?0.5??0??(3.16) 1?0??1??

3.3.3系统的观测方程

在实际应用中,只能观测到运动目标在图像中的位置,而不能直接观测到它的速度及加速度。所以,系统的状态方程描述的是检测到的跟踪特征点在图像平面的位置,其表达式为:

ZK?HKXK?Vk (3 .17 )

T其中,观测向量zk?是k时刻观测到的特征点在图像平面的位置坐标,观测(zx1,k ,zx2,k )噪声vk为零均值白噪声序列,观测矩阵Hk表达了观测向量与状态向量之间的关系,同样假定它是时不变的,则有:

?100000?HK?H???(3.18)

010000??3.4目标匹配

图像序列中,相邻图像帧间的时间相隔比较小,物体的运动速度和方向不可能在这么短的时间内发生突变。从而可以认为同一个运动目标在相邻图像的目标矩形区域大小和位置变化不大,也就是说运动目标的运动具有连续性的特点。因此,可以选择目标最小外接矩形框的位置和面积作为特征值来进行帧间的目标匹配。

?k,y1,?k)和(x?? 假设第k帧的第i个目标的预测特征点坐标为(x1,2,k,y2,k) 第k+l帧观测的第

???k?1,y1,?k?1)和(x??j个目标的特征点坐标为(x1,2,k?1,y2,k?1),则定义目标的位置(xk,yk)为其最

小外接矩形框的质点,即

x?k??k?x?2,kx1,2 ,y?k??k?y?2,ky1,2(3.19)

第k帧预测的第i个目标和第k+l帧观测的第j个目标的距离为目标矩形窗口的质点的距离,

用下式表示:

j2ij2D(i,j)?(xik -xk?1)?( yk?yk?1) (3.20)

第k帧预测的第i个目标的矩形面积和第k+l帧观测的第j个目标的矩形面积的差异函数定义为:

jS(i,j)?Sik -Sk?1(3.2 1)

其中,窗口面积Sik?xi?xi?yi?yi。 因此,选择目标的位置和区域面积作为特征

1,k2,k1,k2,k值的匹配函数可表示为:

R(i,j) =D(i,j) + S(i,j) (3.22)

对于第k+l帧所有观测到的目标,匹配函数R(i,j)最小的目标为第k帧预测的第i个目标的最佳匹配,作为卡尔曼滤波器新的观测变量输入。 3.5基于卡尔曼滤波的目标跟踪算法

通过上面建立的目标运动模型的状态转移方程和观测方程,以及目标匹配算法可以运用卡尔曼滤波来估计目标的位置和速度,得到目标的运动轨迹。如图3.2所示为基于卡尔曼滤波器的目标跟踪算法的流程图。 首先,算法采用第二章中介绍的基于自适应背景模型的运动检测算法,去除图像中阴影、光照条件等噪声的干扰,提取出运动目标区域并分别进行形状的外接矩形描述。 然后,将这些目标的位置与上一帧用卡尔曼滤波器预测的目标位置进行比较,通过目标匹配算法确定各目标与上一帧中各目标的匹配关系。将匹配的结果作为新的观测变量输入到卡尔曼滤波器中,对卡尔曼滤波器的参数进行更新。通过滤波器输出的状态变量的修正值计算得到该目标的质心位置,并加入到目标的运动轨迹中去。

算法最终输出的目标运动轨迹为该目标在各帧图像中质心位置的集合。采用经过滤波输出的目标位置而不是匹配的检测到的目标区域作为最终的目标位置,这样做实际相当于对检测算法的结果进行了一定的修正,使得到的目标运动轨迹比较平滑,更接近于真实的情况。 从算 法 的 过程可以看出,目标运动轨迹的跟踪和运动目标的检测方法实际上是相辅相成的。一方面,运动轨迹的跟踪建立在稳定的检测算法的基础上,由于检测算法是独立的,不依赖于跟踪滤波器预测的位置,因此即使滤波器预测发生偏差也不会影响目标检测的准确性,检测算法得到的位置能反映目标的真实运动规律。这样,就可以用检测的结果不断地调整和更新滤波器参数,使其能很好的跟踪和预测目标的运动轨迹。而另一方面,跟踪滤波器正确地把握目标的运动规律后,在合理预测的基础上又可以对检测结果进行必要的修正,从而去除检测结果中的噪声,得到最优的检测输出,使算法的结果更可靠。

动态图像序列基于自适应背景模型的运动检测目标区域标记与形状描述卡尔曼滤波器参数初始化目标匹配目标位置预测卡尔曼滤波器参数更新目标运动轨迹 图 3.2 基于卡尔曼滤波器的目标跟踪算法流程图

3.6实验结果与分析

将以上基于卡尔曼滤波的目标跟踪算法应用于车辆和人体运动的轨迹跟踪。图3.3和图3.4分别给出了部分实验结果。白色方框区域表示各帧对应目标的运动区域,白色曲线表示对应目标在各帧间的运动轨迹。图3.3为车辆跟踪,(a), (b), (c)和(d)分别给出了车辆在原始图像第197, 233, 350和373帧的时刻的跟踪结果。当车辆的运动区域面积小于某一闽值时,认为该车将离开场景,从而结束对其的跟踪,这里取阐值为150。图3.4为人体运动跟踪,(a)和(b)分别给出了行人在原始图像第104, 182帧的时刻的跟踪结果。真实值有一定差别,但随着检测算法对卡尔曼滤波的不断修正,保证了跟踪在这种情况下仍可以进行,并且卡尔曼滤波器的参数能比较快地稳定下来,而卡尔曼滤波器参数稳定后又可以对检测的结果进行一定修正,使轨迹变得平滑。这样虽然在开始的时候得到的轨迹不太稳定,但随着时间推移,观测数据的陆续获得,很快就能实现比较准确的跟踪。

3.7本章小结

本章建立了目标跟踪的卡尔曼滤波器模型,对根据运动检测算法从序列图像中检测出的运动目标进行轨迹跟踪。算法选择目标的最小外接矩形框的一对对角顶点作为跟踪的特征点,建立了目标跟踪的卡尔曼滤波器模型,通过目标匹配获得卡尔曼滤波器的观测输入,卡尔曼滤波估计输出为目标区域的位置,最终得到的是由目标在各帧图像中质心位置集合组成的运动轨迹。

在目标匹配时,采用质心和面积相结合的方法,兼顾了目标的位置和形状,利用匹配函数来进行目标匹配。通过卡尔曼滤波器进行运动估计,可以减少噪声干扰和特征提取的搜索范围,从而减小计算量,同时对检测算法的结果进行了一定的修正,使得到的目标运动轨迹比较平滑,更接近于真实的情况。另外,算法中检测结果和跟踪结果的相互校正进一步提高系统的稳定性。实验结果表明,目标跟踪的卡尔曼滤波模型比较符合实际的情况,跟踪算法可以可靠地预测与跟踪出目标的运动轨迹。 附录

附录A部分程序源代码 %imsubtract at presentfr ame

%=二二二二二二二二二=二=二二二二=二 clear all;close al;clc formatl= char('.bmp); format2= char('.bmp);

loadpath=char('EAimage sequence\\car\\mov43\\');

sequence=109 ; sequenceBG=98 ; T1=35; T2=35;

Il=imread(strcat(loadpath,num2str(sequence),formatl)); I2=imread(strcat(loadpath,num2str(sequence-1),formatl));

BG=imread(strcat(loadpath,0', num2str(sequenceBG),formatl)); Jl=rgb2gray01); J2=rgb2gray(12); J3=rgb2gray(BG); Dl=imsubtract(Jl,J2); Ml=(Dl>Tl);

D2=imsubtract(Jl,J3); M2=(D2>T2); SE1=[1,1];

BW 1 =imfill(Ml,ho les'); BW 1=imerode(BW 1,SE1); BW 1=bwmorph(BW 1,'clean'); SE2=[0 1,10];

BW2=imfdl(M2,'holes');

BW2=bwmorph(BW2,'clean');

figure(1),subplot(2,2,1),subimage(Jl) figure(1),subplot(2,2,2),subimage(Dl) figure(1),subplot(2,2,3),subimage(Ml) figure(1),subplot(2,2,4),subimage(BWl) figure(2),subplot(2,2,1),subimage(Jl) figure(2),subplot(2,2,2),subimage(l3) figure(2),subplot(2,2,3),subimage(M2) figure(2),subplot(2,2,4),subimage(BW2) 附录

%initialization of BG

%=二二二二二二二二二二二二 clear all;close all;clc; start-frame = 90; endes frame=121;

totalwefr ame= ( endf rame-startesfr ame)+1; formatl = char('.bmp); format2二char('.jpg);

loadpath二char('L:\\image sequence\\9\\);

savepath二charCLAimage sequence\\9\\save\\); BG=zeros(240,320,3); %BG=uint8(round(K*255)); tic;

for sequence=start_frame:l:end一frame

ifs e q ue nce <1 0

1=un re ad (st rca t(lo ad path,'000',num2str(sequence),formatl)); els eif se quence>=10&sequence<100

I=i mre ad (st rca t(lo ad pa th,' 00 ',nu m2str(sequence),fonnatl)); else if se que nc e> =10 0&sequence<1000;

I=u nre ad (st rca t(lo ad pa th, '0',n um 2s tr( seq ue nce),formatl)); else I= un rea d(s trc at( loa dpa th, nu m2str(sequence),formatl)); en d en d en d

J=r gb2hsv(I); BG = BG +J; end

U=BG*255/totalfr ame;

SIGMA=zeros(240,320,3);

for sequence=start~ frame:l:endes frame ifs e q uen ce<10

I=im re ad (str cat (lo adp ath,00 0',num2str(sequence),fo rmatl)); els eif se quence>=10&sequence<100

I=i mre ad (st rca t(lo ad pa th,' W ,nu m2str(sequence),fo rmatl)); else if se que nce > =10 0&sequence<1000;

I=i nu ead (st rca t(lo ad pa th, O', n um 2s l叹 seq ue nce),fo rmat1)) ; else 1= im rea d( str cat (lo adp ath ,n um2str(sequence),fo rmatl)); en d R6 附录 en d en d

J=r gb2hsv(I)\;

SIG M A =SIGMA+(J-功.\; end

SIGMA=SIGMA/(total~fr ame); BG=hsv2rgb(BG/totalesfr ame); BG=uint8(round(BG'255)); figure,imshow(BG) % motion detection % ======二==二二= clear all;

close all;clc;

%load('L:\\image sequence\\8\\BG1.mat); start frame二122; endesfr ame=422;

totalesfr ame二(endesfr ame-startesfr ame)十1; formatl二char('.bmp');

format2二char('.jpg);

loadpath=char(L:\\image sequence\\9\\'); %SAVEPATH二char(''); BG=zeros(240,320,3);

forse quence=start_frame:l:endesfr ame ifs e q ue nce <1 0

I=i mre ad (st rca t(lo ad path,'000',num2str(sequence),formatl)); els eif se quence>=10&sequence<100

I=im re ad (st rca t(lo ad pat h,'0 0' ,nu m2str(sequence),formatl)); els eif se qu ence > =1 00&sequence<1000;

I=i mre ad (st rca t(lo ad pat h,' O',n um 2s tr( seq ue nce),formatl)); else I= im rea d( strc at( loa dp ath ,nu m 2st r(sequence),formatl)); en d en d en d

J=r gb 2h sv(I)'255; D= ab s(J -U);

BW =z er os(240,320); ST =8 0 ; 87 附录

deltaH=15; Tlta(cont) deltaS=15; deltaV=15;

SIGMA(:,:,1)=max(deltaH,SIGMA(:,:,1)); SIGMA(:,:,2)=max(deltaS,SIGMA(:,:,2)); SIGMA(:,:,3)=max(deltaV,SIGMA(:,:,3)); tic;

% foreground region detecion

%====二=二二=二二二二二二二二二二 for i=1:240 for j= 1:3 20

ifJ ( ij ,2 )

BW ( i j) = D( ij, 3 )

els eif J( i,j,2)ST&&J(ij,3)>0 JS= 25 5' J(ij ,2 )/J( ij ,3 );

BW (i, j)= (D (i,j ,3) ST&&U(ij,2 )0 US =2 55* U( ij, 2)/ IJ( ij, 3 );

BW (ij ) = D( i,j, 3)< SI GMA(i,j,3)&&(abs(J(i,j,2)-US)

BW (i, j)= D( ij, 3 )< SI GMA(i,j,3)&&D(ij,2 )

en d en d en d end toe;

figure,imshow(BW) %BG u冈ate

% =二====二二===== alfal=0.5; alfa2=0.5; for k=1:3

U(:,:,k)二(1-alfal)*BW.*U(:,:,k)+alfal*BW.*J(:,:,k)+((BW-1).\,:,k); SIGMA(:,:,k)=(1-alfa2)*BW.*SIGMA(:,:,k)+alfa2*BW.*(J(:,:,k)-U(:,:,k)).^2 +(( BW -1 ).\, :,k) ; end 88 附录

%shadow detection and noise pressing

% 二二二二=二=二=二=二二======二====二 beta=0.5; gama=0.8; TS=10; 111=5; SP=BW; for I二1:240 for j 二1:320 ifS P (i j卜 =0

if( a bs (J (i,j ,l)- U(ij,l))<=TITJ&&abs(J(i,j,2)-U(ij, 2))<=TS && (J (ij ,3 ) ./U (ij , 3 )<= ga ma)&&(J(ij,3 )./U(ij,3 )>=beta) SP (ij) =1 ; els e e n d en d en d en d toc;

A =--bwfill(一(SP>0),'holes);

RE SULT=bwmorph(SP,'majority',8); B= bwmorph(BW,clo se'); RE SULT=bwmorph(B,'open); %R ESULT=morph(SP); % plotth ere sult

% 二二 二 二二二二二二二 tel taT = 3;

if( s equence/teltaT-floor(sequence/teltaT))==0

figu re (se qu ence +l),subplot(2,2,1),subimage(I) fig ure (se qu ence +l),subplot(2,2,2),subimage(BW) fig ure (se qu en ce+l),subplot(2,2,3),subimage(SP)

fig ure (se qu enc e+l),subplot(2,2,4),subimage(RESULT) fpr intf CP res sa k eyto c ontinue) 四 us e ; fpr intf (}n ) clo se a l l en d

end %end main loop 附录

Tmonstrate the performce of tracking the object %through the given image sequence using PF % 二=二二二二二二========二二 clear all;cl osea ll;c1 c echo off; % parameters

startes frame二1; end~fr ame= 1 97;

present frame = start~ frame;

totalefr ame= (e nd~fr ame-startfr ame)+1; formatl = char('.bmp}; format2二char('.jpg');

loadpathl = char('E:\\image sequence\\mov36\\'); loadpathl二char('E:\\image sequencelinov37\\); pathe./InitialDaW,path); load InitialData_head;

% Initialization data contains of:

%Q0=te mplateo fco ntrolpo intsv ector(m odelde rivedfr omt hefi rstfr ame) % 二[x(1)x (2).. x( Nq/2)y( l)y( 2)二y(Nq/2))' %W=Shape-space metric (Ngx6) %Q=W'X+QO

path('./DynamicParameters',path); load DynamicParameters一head;

% A2,A1,B,D,X mean are parameters of the ARP2. N=300; % Numberof p article X二zeros(6,totalesfra me); Xparticle_pf= z eros(6,N); XparticlePrevl-pf = zeros(6,N); XparticlePrev2-pf = zeros(6,N); q二zeros(N,total_frame); resamplingScheme = 1;

K= 0 ; % O ne m e ansth atth ec urveis o pena ndz erom eanc losed M二30; %Number of sampling points along curve

L = 20; %Search window along the normal curve q01 = 0.2; qll二1-q01;

lunda二0.1; % ForP assiond istribution sigma=1众%Value of sigma 90 附录

% generate the initial state

% 二二二二=二====二二=二二二二 XparticlePrev2_pf二zeros(6,N); w = randn(6,N);

XparticlePrevl_pf二B\; %start tracking using PF

% =二====二==二二=二二二二

for presen仁frame二start~fr ame:l:endefr ame seq ue nce 二(presentesfr ame-start_frame)+1; ifp resentfr ame<10

1=i mre ad (strcat(loadpath2,00',num2str(present.fr ame),formatl)); els eif p re sentfr ame>=10&presentF rame<100

I=i mr ead (st rca t(loadpath2;0',num2str(presentesfr ame),formatl)); els ep re sen t f rame>=100;

I=i mre ad (st rca t(lo ad pa th2 ,num2str(presentfr ame),fonnatl)); en d en d tic

%p redictions tep(generatep atilce_pred)

% 二=二=二二二二二二二二二==二=二=二二二二=二= fo rn =1:N

Xp art icl ePr ed _pf(:,n)二

dynamic(A2,Al,B,X_mean,XparticlePrev2_pf(:,n),XparticlePrevl_pf(:,n)); en d

%e valuatesim portance weights % =====二===二=====二=二== for n =1:N,

Qp art icle Pr ed_ pf= W \,n)+00;

%G eneratec urves(particle)fo rco mputeth eim portancew eights

q(n ,sequence)= im portanceweightsl(QparticlePred_pf,M,I.,gOl,qll, lunda,sigma,K,1); end toc;

for i=l:length(q(:,sequence)) ifq ( i,sequence)<=0

q(i ,se que nce )= 1e-5; en d

end

q(:,sequence)二q(:,sequence)./sum(q(:,sequence)); %N ormalizeth ew eights 91 附录

X(:,sequence)二XparticlePred-pf'q(:,sequence); %T hea verageo fst ate %selection step

% 二=二二二二二== path('.(selection',path); if resamplingScheme二二1

out lndex二residuaIR(1:N,q(:,sequence刀;%Residualre sampling. elseif resamplingScheme二二2

out Index= s ystematicR(1:N,q(:,sequence));%Systematicre sampling. else

out lndex二multinomiaIR(1:N,q(:,sequence));%Multinomialre sampling. end;

Xparticle_pf = XparticlePred-pf(:,outIndex);

X(:,presentesfr ame)=mean(Xparticle_pf,2); 0IoT hea verageo fst ate % update state

% =二二二二二二二

XparticlePrev2_pf二XparticlePrevl-pf;

XparticlePrevl-pf二Xparticle-pf; %oreq ualre pmat(X(:,present-fr ame),1,N) %plot the result

% =二二二二=二====

ifpr esentfr ame<10 %Ford ifferentfil ename

I= imread(strcatooadpathl,'00',num2str(presentfr ame),fonnatl)); els eif p resentfr ame>=10&presentfr ame<100

I= im rea d( str cat (Io adpathl;0',num2str(present一 frame),formatl)); els ep res en tf rame>=100;

I= im rea d(s trc at( loa dp ath l,num2str(presentfr ame),formatl)); en d end

figure,im show(I)

Q -real二W\,sequence) + Q0; [Q]= generate一(Qwere al,K); curveesfi t二spcrv(Q,2);

holdo n,h= plot(curveesfit (2,:),curve一 fit(1,:),r-' ,Li neWidth',2),ho ldo ff set(h,'MarkerSize七80); axis([0 100 0 100]) axis square grid off

fprintf('Press a key to continue') 92 附录 pause;

fprintf(}n) close all

end; %End of presentes frame loop.

function outlndex二multinomia]R(inlndex,q);

if nargin<2,er rorCNoten oughin putar guments.');en d [S,arb]= s ize(q); %S = N umberof pa rticles. %multinomialsa mpling N -babies = zeros(l,S); cumDist= c umsum(q);

u二fliplr(cumprod(rand(1,S).\; j=1; for i=1:S

wh ile(u (l,i)>cumDist(l,j)) j=j +1 ; en d

N少 abies(1j)=N少abie城1j)+1; end;

%copy resample trajectories index=l; for i=1:S

if( N esba bies(l,i)>0)

for j= ind ex:index+Nesba bies(l,i)-1 out lnd ex o) 二i nindex(i); en d; en d;

ind ex=in dex+N少abies(l,i); end

本文来源:https://www.bwwdw.com/article/xfvw.html

Top