视频中对运动物体跟踪的算法

合集下载

一种基于卡尔曼滤波的运动物体跟踪算法

一种基于卡尔曼滤波的运动物体跟踪算法
L ig AN Juln IJn ,F i— u
( ol efTlo mui t n&I om t nE gnen X ’nU ir to P s C lg ecm n ai e o e c o n r ai n ierg, ia n esyf os& Tl o mui t n, ia 1 11 C ia f o i v i t e cm n ai s X ’n7 0 2 , hn ) e c o
cvrdadhg edm vn e edo ra t ev e ak g tippr rpsda m rvdm v goj trci oee n i s e oigi t l fel i i ot ci ,hs a e pooe poe oi be akn hp nhf i -m d r n i n ct g
李 晶, 范九伦
Hale Waihona Puke ( 西安 邮 电学院 通信 与信息 工程 学院 , 西安 702 ) 11 1

要:针对实时视频监控领域中传统的 C m h 算法不能有效解决遮挡和高速运动等问题 , 出一种改进的 a sf i i 提
Cm h t a si 算法 与卡 尔曼滤波相 结合 的运 动物体跟 踪算 法。首先 , 二 次搜 索来调 整搜 索窗 口的位 置和 大小 , f 通过 保
第2 7卷第 8期 21 0 0年 8月
计 算 机 应 用 研 究
Ap l a in Re e r h o o u e s p i t s a c f C mp t r c o
Vo . 7 No 8 12 . Au . 2 0 g 01

种 基 于 卡尔 曼滤 波 的运 动 物体 跟 踪算 法
ajs dtep cs n i s yti aci n e , nodroe sr r —me rcig i p m ne oi r i dut l e ds e c s rh ga dt n i re nue e t ak , m l etdm t npe c e h a a z b w ee n h t a i t l n e o d-

实时视频流处理中的图像检测与跟踪算法优化

实时视频流处理中的图像检测与跟踪算法优化

实时视频流处理中的图像检测与跟踪算法优化随着人工智能技术的不断发展,实时视频流处理已经成为许多领域中的关键任务,如智能监控、智能交通以及人机交互等。

其中,图像检测与跟踪作为视频流处理的基础技术之一,对于实时性和准确性的要求较高。

本文将探讨实时视频流处理中的图像检测与跟踪算法优化。

一、图像检测算法优化图像检测算法是实时视频流处理中的重要环节,其目的是在视频流中准确地识别和定位出感兴趣的目标物体。

常用的图像检测算法包括基于深度学习的目标检测方法(如YOLO、Faster R-CNN等)和传统机器学习方法(如Haar特征级联检测器等)。

为了提高图像检测算法的准确性和实时性,可以从以下几个方面进行优化:1. 深度模型的轻量化:深度学习模型通常具有较大的计算资源需求,因此需要将模型进行轻量化,以减少计算量和内存占用。

可以使用剪枝、量化和模型压缩等技术来实现模型的轻量化,并保持较高的检测准确性。

2. 多尺度检测策略:针对视频流中目标在不同尺度上的变化,可以采用多尺度的检测策略。

通过在不同的尺度上进行目标检测,可以提高算法对于目标的检测率和定位精度。

3. 多任务学习:利用多任务学习的思想,可以在目标检测任务上同时进行其他相关任务的学习,如目标分割、姿态估计等。

通过共享特征提取器和减少重复计算,可以提高算法的效率和准确性。

4. 算法加速:针对实时视频流处理的要求,可以采用算法加速的方法来优化图像检测算法。

例如使用GPU并行计算、基于硬件加速的算法实现等,可以提升算法的处理速度。

二、目标跟踪算法优化目标跟踪是实时视频流处理中的另一个重要环节,其目的是在视频流中持续追踪感兴趣的目标物体。

常用的目标跟踪算法包括相关滤波器跟踪(如MOSSE、KCF等)和基于深度学习的跟踪器(如Siamese、DCFNet等)。

为了提高目标跟踪算法的鲁棒性和实时性,可以从以下几个方面进行优化:1. 特征选择和表示:尽可能选择具有较鲁棒性和判别性的特征来表示目标物体。

vits 原理

vits 原理

vits 原理VITS原理是视频检测跟踪系统的基础,它是一种可以追踪并检测视频中运动目标的技术。

VITS原理基于目标识别和追踪,其主要应用领域包括安防监控、交通管制、智能家居等。

一、VITS原理的基本构成VITS原理的实现基于以下几个基本构成:1. 目标检测:检测视频中的运动目标,通常使用物体检测算法,如背景减除、HOG算法、卷积神经网络等。

2. 目标跟踪:跟踪被检测出的运动目标,在跟踪过程中,可以使用基于卡尔曼滤波、粒子滤波、神经网络等算法。

3. 目标识别:对跟踪出的目标进行识别,并分为不同的类别,例如人、车等。

4. 路径预测:预测当前目标的运动轨迹,提高跟踪的精确度。

二、VITS原理的实现过程VITS原理的实现过程如下:1. 首先,获取视频或视频流,并对其进行预处理,如视频的压缩、去噪等。

2. 进行目标检测,即检测视频中的运动目标,并通过目标检测算法,提取目标的特征向量,用于后续目标跟踪和识别。

3. 对被检测到的目标进行跟踪,通过跟踪算法,预测目标的运动轨迹,提高跟踪的精确度。

4. 对被跟踪到的目标进行识别,通过目标识别算法对目标进行分类,例如人、车等,并对其进行标注。

5. 对跟踪目标的路径进行预测,以提高跟踪的准确性。

6. 最后,展示跟踪结果,例如在视频监控界面中展示跟踪目标的路径、位置等信息。

三、VITS原理的优缺点VITS原理作为一种视频检测跟踪技术,具有以下优点:1. 高精度:通过多种算法的配合,可以提高跟踪的准确度,同时进行目标识别还可以进一步提高其准确度。

2. 实时性强:基于硬件加速等等技术可充分优化算法,提高VITS原理的实时性。

3. 无需标记:使用无监督学习算法,可以不需要人工标记训练数据。

然而,VITS原理也存在以下缺点:1. 对光线、背景等环境要求较高,环境复杂的相机效果可能会不稳定。

2. 硬件成本较高,需要大量高性能硬件和算法优化才能达到实时性。

四、VITS原理的应用领域VITS原理广泛应用于安防监控、交通管制、智能家居等领域。

摄像机定位和跟踪的算法设计与实现

摄像机定位和跟踪的算法设计与实现

摄像机定位和跟踪的算法设计与实现随着科技的不断发展,摄像机技术也得到了极大的提升。

如今,各种摄像机的应用越来越广泛,从普通的监控摄像机到自动驾驶汽车摄像机,所有这些应用都需要进行定位和跟踪。

因此,摄像机定位和跟踪的算法设计和实现变得越来越重要。

本文将对摄像机定位和跟踪的算法进行详细的介绍和剖析。

首先,我们将介绍摄像机定位算法的一般原理,并且分析其优缺点。

接着,我们会介绍两个摄像机跟踪算法,分别是基于模板匹配的跟踪算法和基于卡尔曼滤波的跟踪算法。

最后,本文将探究一下它们的实现细节,并提供相应的案例。

一、摄像机定位算法摄像机定位算法的主要目标是从采集的视频流中识别和定位物体的位置。

摄像机定位算法一般分为两个步骤:特征提取和特征匹配。

首先,我们需要从摄像机中提取出物体的特征,通常特征包括颜色、纹理和边缘等。

这里,我们可以使用一些经典的特征提取算法,例如SIFT(尺度不变特征变换)等。

然后,在特征提取的基础上,我们需要将提取出的特征与预先提供的目标模板进行匹配。

匹配可以通过计算目标模板和提取特征之间的相似度来完成。

该相似度可以使用一些距离度量算法来进行计算,例如欧氏距离或相关系数。

虽然摄像机定位算法具有许多优点,例如实时性好、准确度高等,但其缺点在于对于目标的识别过于依赖特征提取。

一旦场景中的光线、阴影或者物体移动等条件发生变化时,特征提取的质量就会受到影响,进而导致摄像机定位算法的失败。

二、基于模板匹配的摄像机跟踪算法基于模板匹配的摄像机跟踪算法通常将摄像机定位算法作为初始化过程,然后应用模板匹配算法跟踪目标物体。

与摄像机定位算法不同的是,模板匹配的匹配过程非常简单和高效。

在模板匹配算法中,我们首先需要在第一帧中选择目标物体的一个区域作为模板。

然后,我们将该模板与第一帧中其他区域进行匹配,以找到目标物体在第一帧中的位置。

在后续帧中,我们只需要在上一帧中的目标物体位置周围寻找新的目标物体位置即可。

虽然基于模板匹配的摄像机跟踪算法简单、高效,但是也存在一些缺点。

运动目标检测方法

运动目标检测方法

运动目标检测方法
运动目标检测是计算机视觉领域中的一个重要任务,旨在识别图像或视频中的运动目标并将其从背景中分割出来。

以下是几种常见的运动目标检测方法:
1. 基于背景差分的方法:该方法通过建立静态背景模型并通过计算当前帧与背景之间的差异来检测运动目标。

常见的背景差分算法有帧差法、高斯混合模型(GMM)法等。

2. 基于光流的方法:光流是描述图像中像素运动方向和速度的一种方法。

基于光流的运动目标检测方法通过计算两个相邻帧之间的光流场,并根据光流的一致性来检测运动目标。

常见的光流算法有Lucas-Kanade算法、Horn-Schunck 算法等。

3. 基于运动轨迹的方法:该方法通过跟踪目标的运动轨迹来检测运动目标。

常见的运动目标跟踪算法有卡尔曼滤波算法、粒子滤波算法等。

4. 基于深度学习的方法:近年来,深度学习技术在计算机视觉领域取得了显著的进展。

基于深度学习的运动目标检测方法通过使用深度学习模型,如卷积神经网络(CNN)或循环神经网络(RNN),来学习图像或视频中的运动目标特征,并进行目标检测。

5. 基于多目标跟踪的方法:运动目标检测通常是多目标跟踪的前置任务。

基于
多目标跟踪的方法可以通过结合目标检测和目标跟踪的技术,实现对连续帧中的多个目标进行准确的检测。

这些方法各有特点和适用领域,选择适合任务需求的方法能够提高运动目标检测的效果。

基于帧间差分法的目标运动检测算法

基于帧间差分法的目标运动检测算法

基于帧间差分法的目标运动检测算法
摘要
针对目前视频监控领域中,目标运动检测技术在视频分析研究中具有很大的应用价值,本文提出了一种基于帧间差分法的目标运动检测算法。

该算法通过采用基于帧间差分法的处理技术来实现对目标物体的运动检测,提高了目标物体的跟踪精度和算法的鲁棒性。

实验证明该算法较传统方法具有更好的检测效果和更高的遥测率,具有一定的实际应用价值。

关键词:帧间差分法;目标运动检测;跟踪精度;算法鲁棒性;遥测率。

一、背景介绍
目标运动检测技术在视频图像处理领域中具有广泛的应用价值,特别是在视频监控领域中有着广泛应用。

目标运动检测技术可以通过对视频图像进行处理,对图像中的目标物体进行跟踪和检测,从而实现对目标物体的监控。

目前,针对目标物体的运动检测技术主要有两种:基于背景差分法和基于帧间差分法。

其中,基于帧间差分法的目标运动检测技术在处理速度和检测精度方面具有许多优势。

本文旨在。

如何利用计算机视觉技术进行运动目标检测和跟踪

如何利用计算机视觉技术进行运动目标检测和跟踪

如何利用计算机视觉技术进行运动目标检测和跟踪计算机视觉技术的快速发展使得运动目标检测和跟踪成为可能。

这项技术不仅在安防领域起到重要作用,还应用于自动驾驶、智能监控和虚拟现实等众多领域。

本文将介绍如何利用计算机视觉技术进行运动目标检测和跟踪。

一、运动目标检测运动目标检测是指利用计算机视觉技术,通过分析连续的图像序列,检测出视频中出现的运动目标。

运动目标可以是人、车辆、动物等各种物体。

以下是运动目标检测的主要步骤。

1. 前景提取前景提取是运动目标检测的第一步,其目的是将视频中的前景目标从背景中分离出来。

常用的前景提取方法包括帧差法、基于统计学模型的方法和基于深度学习的方法。

帧差法是最简单的方法,基于像素之间的差异来识别前景目标。

而基于统计学模型的方法则通过建立像素值的分布模型来识别前景目标。

基于深度学习的方法通常使用卷积神经网络(CNN)来提取特征并进行分类。

2. 运动检测运动检测是利用差分技术或光流法等方法,检测出视频中的运动目标。

差分技术通过对相邻帧之间的差异进行计算,来确定运动目标的位置。

而光流法则通过跟踪关键点在连续帧之间的移动来检测运动目标。

3. 目标分割和识别目标分割和识别是将前景目标分割并分类的过程。

它通常通过图像分割算法和目标识别算法实现。

图像分割算法将前景目标从图像中提取出来,并通过边缘检测、区域生长或图像分割神经网络等方法实现。

目标识别算法则通过比较目标特征和已知类别的模型特征,来对目标进行分类。

二、运动目标跟踪运动目标跟踪是指通过分析视频序列中的目标位置,持续追踪目标的运动轨迹。

以下是运动目标跟踪的主要步骤。

1. 目标初始化目标初始化是运动目标跟踪的第一步,其目的是在视频序列的初始帧中确定目标的位置。

常用的目标初始化方法有手动框选和自动检测。

手动框选是通过人工在初始帧中标记目标的位置。

而自动检测则通过运动目标检测算法自动获取初始目标位置。

2. 特征提取和匹配特征提取和匹配是运动目标跟踪的核心步骤。

基于视频图像分析的行人检测与轨迹跟踪

基于视频图像分析的行人检测与轨迹跟踪

基于视频图像分析的行人检测与轨迹跟踪随着智能化技术的不断发展和普及,越来越多的应用场景需要对行人进行检测和轨迹跟踪。

行人检测与轨迹跟踪技术可以应用于视频监控、交通管理、智能巡检等领域,具有重要的实际意义和应用价值。

本文将介绍基于视频图像分析的行人检测与轨迹跟踪的方法与应用。

行人检测是指在视频图像中准确地识别出行人目标,并进行定位。

行人检测的关键在于准确地判断图像中的目标是否为行人,并将其与背景进行有效区分。

通过深度学习算法,可以让计算机模型学习到行人在图像中的特征和模式,并使用这些特征进行行人检测。

常用的深度学习算法包括卷积神经网络(CNN)、目标检测算法(如Faster R-CNN、YOLO等)等。

这些算法能够对图像进行快速且准确的行人检测,实现实时监测和预警。

轨迹跟踪是指通过连续帧图像的时间序列,对行人在不同帧之间的运动进行跟踪与分析。

轨迹跟踪主要分为两个步骤:检测和匹配。

检测步骤利用行人检测算法对每一帧图像进行目标检测,得到每一帧中的行人目标区域。

匹配步骤则利用跟踪算法将相邻帧中的行人目标区域进行匹配,形成行人轨迹。

常用的轨迹跟踪算法包括卡尔曼滤波、粒子滤波、多目标跟踪等。

这些算法能够有效地对行人进行轨迹分析,提供行人的运动轨迹和路径信息。

基于视频图像分析的行人检测与轨迹跟踪具有广泛的应用前景。

在视频监控领域,利用行人检测与轨迹跟踪技术可以实现对人员的自动识别与跟踪,提高视频监控的效果和效率。

在交通管理领域,行人检测与轨迹跟踪技术可以用于行人过马路的安全管理与交通流量分析,提供有关行人行为的统计和决策依据。

在智能巡检领域,行人检测与轨迹跟踪技术可以应用于巡检机器人和智能无人车等设备,提供智能化的巡检和运输服务。

然而,基于视频图像分析的行人检测与轨迹跟踪面临一些挑战。

首先,图像数据的质量和噪声会影响算法的准确性和鲁棒性。

其次,行人的姿态、遮挡、尺度变化等因素也会对检测和跟踪结果产生影响。

此外,复杂的场景和多目标跟踪也是研究的难点之一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

视频中对多目标运动物体跟踪的算法解析1.算法目的:运动目标跟踪算法的目的就是对视频中的图象序列进行分析,计算出目标在每帧图象上的位置。

这里要根据区域分割过程给出的目标质心位置,计算出目标位移,并且根据质心位置的变化判断出目标的运动方向,以及运动目标是否在观察窗口,实现对客流量的统计。

因为该跟踪是对多目标的追踪,需要找出运动目标在相邻帧上的对应区域。

系统具有固有噪声,目标周围背景的干扰可能会产生误差,但这些噪声在前面的过程已经去除,如有必要可做适当调整修正。

2.算法难点:(1)因为要跟踪的是多目标,需要找到相邻帧之间对应的运动目标区域不致跟踪混乱。

(2)如何判断运动目标区域是否是新的目标进入观测窗口(3)运动目标是否离开了观测窗口以及离开的方向;即计数器何时加1、是否加1(4)对跟踪过程中出现的一些偏差和问题,要进行必要的修正3.算法描述:(1)跟踪首先要判断的是:帧与帧之间如何将运动目标对应起来。

追踪过程中的追踪特征是物体的质心(由运动区域分割过程中给出),这里判断对应目标可以:a.只利用质心间的最短距离做为特征; b.利用加权系数将最短距离,运动目标区域的长度,宽度以及长宽比和面积等综合起来作为特征。

(2)根据判断特征设置目标链,记录每个被跟踪目标的最新质心位置,为下步判断提供条件。

另外将每个目标的质心位置存储起来,可以随时掌握目标的运动情况,为以后要输出目标的运动曲线做基础。

(3)每进入观察窗口一个新的运动目标,就将它的最新质心位置加入该目标链。

如何判断该运动目标是新的:设置门限值ymin,ymax(当ymin<y<ymax视为在观测窗口,当y>ymax 或y<ymin可认为是新目标区域),当有目标的质心位置目标.y<ymin或目标.y>ymax并且它的标志位为未被跟踪,则肯定是新目标(在新目标区域出现的目标有可能是要离开观测窗口的目标,不过它们的标志位肯定为被跟踪)。

这样判断出来的新目标方向是有出、入之分的。

(4)与目标链(MB[h][l])相对应的还有位置数组(WZ[m][n]),用来存放目标链中相应目标的质心位置。

最初进行处理时,目标链是空的,在当前帧中若有新目标,则将其横、纵坐标加入到目标链中,并存储在对应的位置数组中,置标记为被跟踪。

(5)处理新的当前帧时,首先将目标链MB中每个元素(代表前一帧中所有运动目标)依次与当前帧中记录的每个运动目标进行距离计算,求出其中最小距离d(假设是MB[i]与当前帧中运动目标t的质心距离)则判断d与门限值λ的大小,若d<λ,则说明运动目标t就是前一祯MB[i]对应的运动目标区域,则将t的质心位置更新代替MB[i]中的横纵坐标(MB[i]中记录目标i的最新质心位置),并将其质心位置加入到WZ[i]中去,记录该目标运动质心的记录,将该运动目标标记为被跟踪;如d>λ则说明该最小值不足以证明它们是对应目标,可能MB[i]代表的目标已经不在跟踪窗口,则做如下处理:检查对应MB[i]代表的目标质心位置的最新记录,如果MB[i][1](纵坐标)>ymax,可认为目标离开观测窗口,并且方向是进入,则计数器加1;如果MB[i][1]< ymin,目标离开观测窗口,但方向是出去,计数器不动作。

(6)设置数组CC[m][n],存储离开观测窗口并且方向是进入的运动目标质心位置记录,象(5)中的MB[i]若是进入就将对应位置记录WZ[i]存放在数组CC中,同时清除MB[i]中的特征值和WZ[i]中的质心记录。

这里可以另外设置一个空闲位置数组KWZ[i],记录被清空的WZ 中的位置,每次有新目标到来,须分配数组空间就先检查是否有被清空的记录。

(7)直至目标链中的目标检查完毕,则查看当前祯中的各运动目标,如有未被标记的,且在新目标区域中则将其加入到目标链中,标记设为已被跟踪。

(8)接收新的当前祯,继续如此处理。

处理过程中可能出现的几个问题为:(1)如果当前祯中一个运动目标t已经被标记,但是当处理到目标链中下一个目标是最小距离的仍是t,说明目标链中有两个目标都与t的距离最小,这样就需要调整。

(2)如果门限值λ设置不当,则可能产生误判。

(3)如果目标链中所有目标检查完毕,但是在当前祯中有未被标记并且不在新目标区域,即不是新目标,又不是被跟踪目标的相应目标,则有差错出现,可能是噪声。

(4)是否将离开观测窗口并且运动方向是出去的目标质心位置存储在数组CC中。

4.算法实现数据结构:a. 设置数组WZ[m][n]用来存放跟踪过程中被跟跟踪目标的各时刻质心位置,WZ[i][0]存放下次填写质心记录的位置,从WZ[0][1]开始记录横坐标。

b. 设置数组MB[M][2]存放目标链,记录被跟踪目标的最新质心位置,MB[0][0]存放被跟踪目标的个数,MB[0][1]闲置。

c. 设置数组CC[h][l]存放离开观察窗口已跟踪完毕的各目标的质心位置,供若质心位置曲线,提高精度用。

d. 设置KWZ[m]记录清空的WZ数组序号;KWZ[0]表示清空的WZ数组元素的个数,若再次分配数组空间给新目标时,先检查KWZ数组中KWZ[0]是否为0,若为0,则分配新数组空间,否则重新利用被清空的数组位置e. 设置门限值λ,ymax,ymin.f.接收到的运动目标为一个struct初始化:For (I=0;I<m;I++){ WZ[I][0]=1;MB[I][0]=-1;置初值;MB[I][1]=-1;}for(I=0;I<n;I++)CC[I][0]=-1; 初始化数组CC,初始化数组KWZ;KWZ[0]=0; 初始化时没有清空的数组MB[0][0]=0;记录目标链中目标的数目Cursorm=1; 记录目标链中最末位置Cursorc=0; 记录数组CC中最末位置Count=0; 计数器While ( 有下一祯数据传送){ for( I=1;I<cursorm;I++) 依次对目标链各目标进行处理{ x=MB[I][0];y=MB[I][1];p=head; p指向一祯数据的头do {接收当前祯的数据;d=sqrt(pow(x-p.x,2)+pow(y-p.y,2));if(d<dmin) { dmin=d ; q=p;}继续接收当前祯的下个运动目标的数据结构;p=p->next;}while ( 当前祯的数据接收完全)if ( d<λ){ MB[I][0]=q.x;MB[I][1]=q.y;WZ[I][WZ[I][0]]=q.x;WZ[I][WZ[I][0]]=q.y;WZ[I][0]=WZ[I][0]+2;q.mark=’y’;}else{ if(MB[I][1]>ymax) 离开观测窗口方向是进入{ count++;将WZ[I]中的记录转存到CC数组中;cursorc++;清除WZ[I]和MB[I]中的数据;KWZ[0]++; 标记空闲数组元素个数KWZ[KWZ[0]]=I;}if(MB[I][1]<ymin) 离开观测窗口方向是出去{ 清除WZ[I]和MB[I];KWZ[0]++;KWZ[KWZ[0]]=I;}}}目标链中的所有目标处理结束且目标链不空则:{ 判断当前祯中各运动目标的标记;p=head; 重新指向一祯的开头while ( p!=null){ if(p.mark==’n’)if(p.y<ymin||p.y>ymax){ 将该新目标加入到目标链中;p.mark=’y’;}else 出错处理,修正;出现既非新目标又非被跟踪目标p=p->next;}}if (MB[0][0]==0) 说明还未有被跟踪目标,目标链为空{ 依次读取当前祯的数据;p=head;while (当前祯数据未完){ if ( p.mark==’n’&&(p.y < ymin || p.y > ymax)) 在新目标区域{ MB[cursorm][0]=p.x;MB[cursorm][1]=p.y; 修改最新质心位置MB[0][0]++;WZ[cursorm][WZ[cursorm][0]]=p.x;WZ[cursorm][WZ[cursorm][0]]=p.y;WZ[cursorm][0]=WZ[cursorm][0]+2;p.mark=’y’;}cursorm++;p=p->next;}}接收下一祯运动目标的数据结构;} 对应while循环5.算法优化:其中λ,ymin和ymax的取值要得当,否则会出现差错,这需要反复测试得到合适的值。

另外对图象的噪声影响和跟踪过程中出现的不期望的结果如果进行修正,则结果可能会更精确。

6.各个函数功能及其输入输出所有函数在程序track..c中存放。

(1)void Init() 初始化函数,将程序中全局变量——数组WZ和MB初始化,kwhead是指向空闲数组位置的指针,初始化为NULL,cursorm的值表示数组WZ和MB的最大下标+1;其中MB[0][0]存放正在被跟踪目标个数,WZ[I][0]存放第I个被跟踪目标的下一个轨迹质心存放位置(在数组WZ中),countin,countout分别记录进入和出去的人数;(2)void Addkw(int xh):功能:将释放的数组元素下标加入一个链表中,便于以后分配。

输入:刚释放的数组元素的下标xh;输出:无输出,下次分配时,利用指针头kwhead依次分配数组空间。

(3)int Delkw():功能:有新的目标出现在运动区域,找到合适的数组下标,将此数组空间分配给该目标。

输入:无输入,直接调用该函数,从kwhead所指的链表中(为空闲数组下标)依次分配空间。

输出:输出要分配的数组下标。

(5)int Getxymax(int WZtemp[Nmax]):功能:从数组Wztemp所记录的运动轨迹中找到最大的横坐标或纵坐标。

输入:输入该运动目标的所有运动轨迹记录Wztemp.输出:输出找到的最大的横坐标或纵坐标(如果定义Coordinate则找最大的横坐标,此时运动目标在横轴上运动幅度较大而纵轴上几乎不变)(6)int Getxymin(int WZtemp[Nmax]):功能:从数组Wztemp所记录的运动轨迹中找到最小的横坐标或纵坐标。

输入:输入该运动目标的所有运动轨迹记录Wztemp;输出:输出找到的最小的横坐标或纵坐标。

(7)void HandledataY():如果没有定义Coordinate(表示目标运动方向是顺着或逆着纵坐标)则运行该程序。

功能:处理得到的运动质心,将各质心位置一一对应,找到各个运动目标的运动轨迹,并记数。

相关文档
最新文档