基于opencv的运动物体跟踪实验报告

合集下载

《2024年基于OpenCV的运动目标检测与跟踪》范文

《2024年基于OpenCV的运动目标检测与跟踪》范文

《基于OpenCV的运动目标检测与跟踪》篇一一、引言运动目标检测与跟踪作为计算机视觉的重要研究领域,其广泛应用于视频监控、智能交通、人机交互等多个领域。

随着计算机视觉技术的不断发展,基于OpenCV的运动目标检测与跟踪技术因其高效、准确的特点,逐渐成为研究热点。

本文旨在介绍基于OpenCV的运动目标检测与跟踪方法,分析其原理、应用及优化方法,以提高目标检测与跟踪的准确性和实时性。

二、OpenCV简介OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,包含了大量用于图像处理和计算机视觉的算法。

OpenCV提供了丰富的API接口,方便开发者快速实现各种计算机视觉算法。

在运动目标检测与跟踪方面,OpenCV提供了多种方法,如背景减除法、光流法、特征匹配法等。

三、运动目标检测运动目标检测是从视频序列中提取出运动目标的过程。

基于OpenCV的运动目标检测方法主要包括背景减除法和帧间差分法。

1. 背景减除法:通过将当前帧与背景帧进行差分,得到前景目标。

该方法可以有效地提取出运动目标,但对背景的更新和模型的适应性要求较高。

OpenCV提供了多种背景减除算法,如MOG2、KNN等。

2. 帧间差分法:通过比较相邻两帧的差异来检测运动目标。

该方法对光照变化和背景干扰具有一定的鲁棒性,但可能会产生“鬼影”现象。

四、运动目标跟踪运动目标跟踪是在检测出运动目标的基础上,对目标进行持续跟踪的过程。

基于OpenCV的运动目标跟踪方法主要包括特征匹配法和光流法。

1. 特征匹配法:通过提取目标的特征,在后续帧中寻找与该特征相似的区域来实现跟踪。

该方法对目标的形变和部分遮挡具有一定的鲁棒性,但当目标与周围环境相似时,容易产生误匹配。

2. 光流法:利用光流信息来实现目标的跟踪。

光流表示了图像中像素点的运动信息,通过计算相邻帧的光流场,可以估计出目标的运动轨迹。

基于OpenCV的运动目标检测与跟踪的开题报告

基于OpenCV的运动目标检测与跟踪的开题报告

基于OpenCV的运动目标检测与跟踪的开题报告1.问题描述动态目标检测与跟踪是计算机视觉领域的重要研究方向之一,其应用范围涉及视频监控、智能交通、人机交互等领域。

然而,传统方法对于场景复杂、目标运动快速、遮挡等情况处理效果不佳,需要更高精度、更高效率的算法解决这些问题。

2.研究目标本研究拟使用OpenCV库,运用图像处理、计算机视觉、机器学习等方法,实现运动目标的检测与跟踪,达到以下目标:(1)快速准确地检测运动目标,识别目标的运动轨迹;(2)针对遮挡、光照变化等问题,采用定位、成像、跟踪等多种策略,提高目标检测的精度;(3)针对运动目标的运动速度、方向等多种属性,进行多角度、综合性的分析和研究,建立适用于实际应用的算法。

3.研究方法和技术路线(1)建立视频采集平台。

使用摄像机获取实时视频流,并对数据进行采集、预处理,并应用OpenCV库实现视频流后处理。

(2)建立运动目标检测算法。

运用图像处理算法进行前景/背景分类、形态学滤波等操作,采用一系列特征提取的方法刻画像素点的特征,采用分类器实现目标检测。

(3)针对复杂场景、遮挡等问题,采用多特征、多分类器等方法进行重新整合,进一步提高算法准确度。

(4)建立运动目标跟踪算法。

根据检测结果,利用卡尔曼滤波、粒子滤波等跟踪方法对运动目标进行跟踪。

(5)建立性能评估体系,基于指标和实际应用场景对所研发算法进行综合性评估。

4.预期结果基于OpenCV库进行运动目标检测与跟踪,在实验室实现的基础上,进行测试、优化,结合现有开源算法,最终达到高精度、高效率的运动目标检测与跟踪效果,具体评估指标包括精度、召回率、信噪比等。

同时,根据实际应用场景,通过算法参数的调整,进一步将算法实现优化,使其适用于各种应用场景。

《2024年基于OPENCV的运动目标检测与跟踪技术研究》范文

《2024年基于OPENCV的运动目标检测与跟踪技术研究》范文

《基于OPENCV的运动目标检测与跟踪技术研究》篇一一、引言随着计算机视觉技术的快速发展,运动目标检测与跟踪技术在众多领域中得到了广泛应用,如智能监控、交通流量分析、人机交互等。

作为计算机视觉的重要组成部分,基于OPENCV的运动目标检测与跟踪技术正受到越来越多的关注。

本文将介绍基于OPENCV的运动目标检测与跟踪技术的研究现状及挑战,同时深入探讨相关方法、应用领域以及前景展望。

二、相关技术研究概述OPENCV是一个开源的计算机视觉库,为运动目标检测与跟踪提供了强大的技术支持。

本文所研究的内容主要包括背景建模、目标检测和目标跟踪三个方面。

背景建模通过构建动态背景模型来分离出运动目标;目标检测是在视频序列中准确识别出感兴趣的目标;而目标跟踪则是利用各种算法实现目标在连续帧间的定位。

三、背景建模技术研究背景建模是运动目标检测的关键步骤。

常用的背景建模方法包括高斯混合模型(GMM)和代码本算法等。

高斯混合模型通过建立背景的统计模型来区分前景和背景,适用于动态背景环境。

代码本算法则根据像素的时空特性进行背景建模,具有较好的实时性。

本文将详细介绍这两种方法的原理、实现过程及优缺点。

四、目标检测技术研究目标检测是运动目标跟踪的前提。

基于OPENCV的目标检测方法主要包括基于帧间差分法、光流法、基于深度学习的目标检测等。

帧间差分法通过比较连续帧间的差异来检测运动目标;光流法利用图像序列中像素的光流信息来检测运动目标;而基于深度学习的目标检测方法则通过训练神经网络模型实现高精度的目标检测。

本文将详细比较这些方法的性能,并分析其在实际应用中的优劣。

五、目标跟踪技术研究目标跟踪是实现运动目标持续监测的关键技术。

常用的目标跟踪方法包括基于特征的方法、基于模型的方法和基于深度学习的方法等。

基于特征的方法通过提取目标的特征进行匹配实现跟踪;基于模型的方法则根据目标的形状、大小等先验信息建立模型进行跟踪;而基于深度学习的方法则利用神经网络模型实现高精度的目标跟踪。

基于OpenCV的运动目标检测与跟踪算法的研究

基于OpenCV的运动目标检测与跟踪算法的研究

基于OpenCV的运动目标检测与跟踪算法的探究摘要:随着计算机视觉技术的提升,运动目标检测与跟踪成为了热门探究领域之一。

本文基于OpenCV库,对运动目标检测与跟踪算法进行了探究。

起首,介绍了OpenCV库及其在计算机视觉领域的广泛应用。

接着,分析了运动目标检测与跟踪的基本观点和相关技术。

随后,详尽介绍了OpenCV中常用的运动目标检测算法,包括背景减除法、帧差法和光流预估法,并对它们的原理进行了深度探讨。

最后,给出了运动目标跟踪算法在OpenCV中的实现方法,并通过试验结果验证了算法的有效性与稳定性。

1. 引言随着计算机视觉技术的不息进步,运动目标检测与跟踪成为了计算机视觉领域的重要探究方向之一。

运动目标检测与跟踪技术可以应用于许多领域,如智能监控、自动驾驶、智能机器人等,具有宽广的应用前景。

OpenCV作为一个开源的计算机视觉库,在图像处理与分析中有着广泛的应用,为开发者提供了丰富的函数库和工具,便利了运动目标检测与跟踪算法的实现。

2. OpenCV库的介绍OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,最早由Intel公司开发并在BSD许可下发布。

它提供了丰富的函数库和工具,包含了多种计算机视觉算法和工具,可用于处理、分析和识别图像与视频。

OpenCV是跨平台的,支持多种操作系统,如Windows、Linux等。

它的主要特点包括:易于使用、高性能、灵活性、扩展性强等。

3. 运动目标检测与跟踪的基本观点和相关技术3.1 运动目标检测的基本观点运动目标检测是指在图像或视频序列中检测出具有某种运动特征的目标。

运动目标检测的基本观点包括:目标模型、背景模型和运动检测方法等。

目标模型是指对目标的外形、外观、运动特征等进行建模的过程。

背景模型是指对于每一帧图像的背景进行建模的过程。

运动检测方法是指依据目标模型和背景模型来裁定图像中是否存在运动目标的方法。

基于OpenCv的运动目标追踪与检测

基于OpenCv的运动目标追踪与检测

• 156•随着信息科技的快速发展,视频监控等相关行业也逐渐成熟起来,作为一个独立的产业体系,视频资料不论种类还是数量都与日俱增。

但不正当的操作手段也使得视频资料鱼龙混杂,那么,如何在海量的视频资料中提取到符合要求的数据信息,是目前亟待解决的重要问题,因此基于海量视频资料信号为基础的目标追踪与检测应运而生。

本文主要基于OpenCV 并利用mean shift 算法来实现对视频中出现的多运动目标进行单目标追踪检测,实验表明该算法有较好的追踪效果。

科技革命以来,随着各类技术的不断更新发展,电子监控等相关领域也在越来越多的范围内使用。

如何及时有效的在视频中寻找出有用信息便显得尤为重要,于是对有用的特定目标的检测与跟踪的相关研究也就应运而生,并且成为了视觉领域的一大热点。

现在,一般的智能系统基本上都包括对特定有用目标的检测和跟踪,还有识别以及行为分析等功能。

运动目标检测,其锁定的是我们需要注意的区域,更是后续其他处理的基础,跟踪与识别作为图像高级语义处理的环节为后面行为分析提供依据。

基于C++的视觉库OpenCv 是可以在多系统进行操作的开源软件。

它容纳了计算机视觉的领域众多函数,包括工业产品、医学图像、安全保卫领域、交互操作、相机校正、双目视觉以及机器人学。

本文主要利用OpenCV 库来实现对视频中出现的多运动目标进行单目标追踪。

运动目标检测是指在摄像头监控界限内有活动的目标时,采用图像分割,将背景图像中的目标的运动区域提取出来。

视频分析的基础是移动目标的检测,因为与视频分析算法有关的图像处理都是以目标区域的像素点为基础来进行处理。

目标检测的结果直接影响视觉监控系统的整体性能。

科学技术突飞猛进,日新月异,运动目标的检测种类繁多,与日剧增。

运动目标的跟踪,简单说,就是在图像中对感兴趣的目标进行定位并且使用可视化的方式进行标记,一般来说,都是通过数学的方式,对目标的信息加以表示,然后整个图像中找到与建立的数学表达最为相似的待选区域在图像中具体位置的过程。

《2024年基于OpenCV的运动目标检测与跟踪》范文

《2024年基于OpenCV的运动目标检测与跟踪》范文

《基于OpenCV的运动目标检测与跟踪》篇一一、引言运动目标检测与跟踪是计算机视觉领域的一个重要应用,它在许多领域中都有着广泛的应用,如智能监控、智能交通、人机交互等。

OpenCV(Open Source Computer Vision Library)作为一个强大的计算机视觉库,提供了许多功能强大的运动目标检测与跟踪算法。

本文旨在介绍基于OpenCV的运动目标检测与跟踪算法的实现原理、优缺点以及实际应用。

二、运动目标检测运动目标检测是计算机视觉中的一项基本任务,其目的是从静态背景中提取出运动的目标。

基于OpenCV的运动目标检测方法主要包括背景减除法和光流法。

1. 背景减除法背景减除法是一种常用的运动目标检测方法,其基本思想是将当前图像与背景模型进行差分,得到前景掩模,从而提取出运动目标。

在OpenCV中,可以使用BackgroundSubtractor类实现背景减除法。

该类提供了多种背景模型,如混合高斯模型、高斯模型等。

在实现过程中,需要先训练背景模型,然后对实时图像进行背景减除,得到前景掩模。

2. 光流法光流法是一种基于光流估计的运动目标检测方法。

其基本思想是利用图像序列中像素或特征点的运动信息来检测运动目标。

在OpenCV中,可以使用calcOpticalFlowPyrLK函数实现光流法。

该方法需要提供初始的匹配点集和相邻帧的图像,然后通过计算光流来得到运动目标的轨迹。

三、运动目标跟踪运动目标跟踪是在运动目标检测的基础上,对运动目标进行进一步的定位和跟踪。

基于OpenCV的运动目标跟踪方法主要包括基于特征的跟踪和基于外观的跟踪。

1. 基于特征的跟踪基于特征的跟踪是利用图像中的特征点来进行目标跟踪的方法。

在OpenCV中,可以使用SURF、SIFT等特征检测算法提取特征点,并使用光流法或KLT算法进行特征匹配和跟踪。

该方法具有较高的鲁棒性和准确性,但需要计算特征点并进行匹配,计算量较大。

2. 基于外观的跟踪基于外观的跟踪是利用目标的外观信息进行跟踪的方法。

基于opencv的运动物体跟踪实验报告

基于opencv的运动物体跟踪实验报告

基于opencv的运动物体跟踪一、实验目的1.通过实验了解opencv运动物体跟踪的数据结构、函数以及基本框架;2.通过实验提高对于图像的认识;3.通过实验了解光流法、背景差分法、Camshift等主流视频跟踪算法;4.通过实验将理论和实践联系起来,提升对于理论知识的认识;二、实验要求1.调用基于intel 的开源视觉库opencv,实现视频或者摄像头的监控;2.编程实现对进入视觉范围内的运动物体实施监测与跟踪;3.统计出进入视觉范围内的物体个数,速度等;4.针对实际的监控效果,实现对算法的改进,完成复杂背景下物体跟踪问题三、实验环境PC机一台(VC++)、摄像头一个四、实验内容1.opencv相关信息:opencv是hite严开源计算机视觉库。

它由一系列c函数和少量c++类构成,实现了图像处理和计算机视觉方面的很多通用算法。

其重要重要特性包括:拥有包括300多个C函数的跨平台的中、高层API。

它不依赖于其它的外部库——尽管也可以使用某些外部库。

openCv的优势在于:(1)纯c代码,源代码开放;(2)丰富的函数功能,强大的图像和矩阵运算能力;(3)平台无关性;(4)程序运行的实时性;(5)方便灵活的用户接口;(6)交互性及强大的扩展功能;(7)可嵌入性。

可见,作为一个基本的图像处理、计算机视觉和模式识别的开源项目OpenCv可以直接应用于很多领域,作为二次开发的理想工具。

2.图像噪声的处理方面图像信号在产生、传输和记录过程中,经常会受到各种噪声的干扰,一般来说,现实中的图像都是带噪图像。

通常在图像处理工作中,在边缘检测、图像分割、特征提取、模式识别等高层次处理之前,选用适当的方法尽量地去除噪声干扰是一个非常重要的预处理步骤。

依据噪声产生的原因,将经常影响图像质量的噪声源分为三类:阻性元器件内部产生的高斯噪声;光电转换过程中的泊松噪声(椒盐噪声);感光过程中产生的颗粒噪声。

噪声的均值表明了图像中噪声的总体强度。

基于Opencv的运动目标的检测和跟踪

基于Opencv的运动目标的检测和跟踪
p c u e w l g t h r e o r i ae , n p l e t i a k n l o t m od tc n r c e mo i g t re a e it r , e wi e e t g t o d n t s a d a py c n r d t c ig a g r h t ee ta d ta k t v n a g t s d l t a c o r i h b o a ma e s q e c .h a g tSp st n c n b ee mi e y te c n e f a t l .h s ag r h u e ma l mo n f n g y i g e u n e et r e ’ o i o a e d t r n d b e tro r c e i l o t m s s s l r T i h p i T i a u to c l u ai n a d e s o k I t b l y a d p e ii n ma ny d p n s o g e me tt n a d t e v l e o r s o dT e a c l t n a y t w r . ssa i t n r c s i l e e d n i o o t i o ma e s g n a i n h a u f h e h l . h o t d t i d p o e sa d te k yc d f e c g rt m a i e h  ̄ ce a s es se d sg s ac n r l ne f c ,S ea l r c s n e o eo e h Op n v a o i l h h d g v n i t e a l , o t y tm e i n o to t r e O n l h i a t a e ma a e a n trt e mo e n f e il sa n t . x e me t l e u t h w a sn h sw y c n a h e e h t h n g rc n mo i v me t h c e t yi t o h ov a me E p r n a s l s o t tu i gt i a a c iv i r s h ie t i ain o emo i gtr e i e l i . d n i c t f vn g t t r a- me f o h t a w h t Ke r s v rg t o c n r i a k n ; vn r e ;Op n v y wo d :a e a e meh d; e tod t c i g mo i g t g t r a e c
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于opencv的运动物体跟踪一、实验目的1.通过实验了解opencv运动物体跟踪的数据结构、函数以及基本框架;2.通过实验提高对于图像的认识;3.通过实验了解光流法、背景差分法、Camshift等主流视频跟踪算法;4.通过实验将理论和实践联系起来,提升对于理论知识的认识;二、实验要求1.调用基于intel 的开源视觉库opencv,实现视频或者摄像头的监控;2.编程实现对进入视觉范围内的运动物体实施监测与跟踪;3.统计出进入视觉范围内的物体个数,速度等;4.针对实际的监控效果,实现对算法的改进,完成复杂背景下物体跟踪问题三、实验环境PC机一台(VC++)、摄像头一个四、实验内容1.opencv相关信息:opencv是hite严开源计算机视觉库。

它由一系列c函数和少量c++类构成,实现了图像处理和计算机视觉方面的很多通用算法。

其重要重要特性包括:拥有包括300多个C函数的跨平台的中、高层API。

它不依赖于其它的外部库——尽管也可以使用某些外部库。

openCv的优势在于:(1)纯c代码,源代码开放;(2)丰富的函数功能,强大的图像和矩阵运算能力;(3)平台无关性;(4)程序运行的实时性;(5)方便灵活的用户接口;(6)交互性及强大的扩展功能;(7)可嵌入性。

可见,作为一个基本的图像处理、计算机视觉和模式识别的开源项目OpenCv可以直接应用于很多领域,作为二次开发的理想工具。

2.图像噪声的处理方面图像信号在产生、传输和记录过程中,经常会受到各种噪声的干扰,一般来说,现实中的图像都是带噪图像。

通常在图像处理工作中,在边缘检测、图像分割、特征提取、模式识别等高层次处理之前,选用适当的方法尽量地去除噪声干扰是一个非常重要的预处理步骤。

依据噪声产生的原因,将经常影响图像质量的噪声源分为三类:阻性元器件内部产生的高斯噪声;光电转换过程中的泊松噪声(椒盐噪声);感光过程中产生的颗粒噪声。

噪声的均值表明了图像中噪声的总体强度。

一般地,对噪声的描述采用统计意义上的均值与方差。

综合使用各种方法去除图像噪声,通过实验比较了这些方法所适用的场合,深入了解了其中的均值和中值滤波算法,兼顾质量和实时性的要求,将两者结合起来,采用一种改进的实时滑窗递归中值算法。

均值滤波一般的具体实现步骤是:.选择一个(2n+l)X(2n+l)的窗口(通常为3X3或5X5),并用该窗口沿图像数据进行行或列的滑动;.读取窗口下各对应像素的灰度值;.求取这些像素的灰度平均值替代窗口中心位置的原始像素灰度值。

中值滤波一般的具体实现步骤是:.选择一个(2n+l)x(2n+l)的窗口(通常为3x3或5X5),并用该窗口沿图像数据进行行或.读取窗口下各对应像素的灰度值;.将这些灰度值从小到大排成一列,用排序所得的中值替代窗口中心位置的原始像素灰度值;滑窗扫描的顺序是先从上往下扫描,建立滑窗的分行部分和循环链表,以及当前滑窗内各行数据的总和。

每次滑动记录滑动的距离,根据滑动距离从分行部分和循环链表中提取最旧的行部分和从当前滑窗总和中减去,并计算移入行数据的和,覆盖掉刚提取的最旧的数据,再与当前滑窗总和相加。

滑窗总和除以(2n+l)x(2n+l)得到滑窗均值,存储到目标图像中处于滑窗中心的位置。

由于每次运算只考虑滑窗移入和移出的数据,每次计算均值的时间复杂度就是O(2n+3)即使滑窗的尺度选取得很大,做整幅图像的均值运算量也只是线性增长,实时性显著提高。

3.运动目标检测方面重点学习了目前在实际应用中普遍采用的帧间差分法和以背景差分算法,综合帧间差分法和背景差分法各自的特点,使用了一种自适应累积背景的背景差分法,使得背景更新算法使之能够排除目标的干扰,自适应地获取背景图像;为了适应背景图像的亮度变化,使用了基于直方图统计和最小二乘法的OTSU算法实时计算阐值提取运动目标。

本次实验基于OTSU算法进行改进完成二值化图像阐值的选取,OTSU算法由日本学者大津于1979年提出,是目前广泛使用的阐值分割法之一。

OTSU法也称为最大类间方差法或最小类内方差法,又叫大津法,简称OTSU。

该方法基于图像的灰度直方图,以目标和背景的类间方差最大或类内方差最小为闽值选取准则,按图像的灰度特性,将图像分成背景和目标两部分。

背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。

因此,使类间方差最大的分割意味着错分概率最小。

OTSU算法在很多情况下都能取得良好的分割效果。

运动目标检测是视频运动目标检测与跟踪的第一部分,它就是实时的在被监视的场景中检测运动目标,并将其提取出来。

运动目标检测常用的有四种常用方法:连续帧间差分法、背景差分法、光流法和运动能量法连续帧间差分法对于动态环境有很好的适应性,但却不能够很好地分割运动对象,不利于进一步的对象识别与分析;背景差分法是将当前帧每个像素与背景图像逐一比较,能够较完整的提取目标点,却又对光照和外部条件造成的动态场景变化过于敏感;光流法的优点是能够检测出独立运动的对象,不需要预先知道场景的任何信息,而且可以应用于背景整体运动的情况,但是大多数光流方法的计算复杂,除非有特殊的硬件支持,否则很难实现于实时检测;运动能量法适合于复杂变化的环境,能消除背景中振动的像素,使按某一方向运动的对象更加突出地显现出来,但运动能量法也不能精确地分割出对象。

而背景更新算法能够自适应地获取背景图像,该算法提取背景的思想是将连续帧间差分法和背景差法相结合,通过当前帧帧差图像找到物体的运动区域,对运动区域的背景保持不变,而非运动区域的背景采用当前的帧进行替换更新,这样经过一段时间就可以提取出背景图像。

4.运动目标的跟踪目标检测的后继步骤就是目标跟踪,目标跟踪是在事先不了解目标运动信息的条件下,通过来自信息源的数据实时估计出目标的运动状态,从而实现对目标的位置和运动趋势的判定。

通过图像分割获取目标团块信息;采用Kalman滤波和运动模板的方法跟踪运动目标;对彩色图像采用Camshift算法完成目标跟踪,较好地解决目标的遮挡和重叠问题,最后,将检测和跟踪模块纳入openCv提供的运动目标分析框架,形成一个比较完整的目标检测和跟五、实验步骤1.开发平台搭建安装、下载Opencv,并在vc++2006编译环境下配置opencv。

在vc++2006中建立新工程以后,在工程设置里添加需要的opencv库,并在程序文件中包含opencv的头文件。

2.添加运动检测跟踪程序中所用到的opencv跟踪框架团块运动物体的前景检测模块:判断每一个像素是前景还是背景。

输入数据为当前帧图像,输出为当前帧的前景掩码。

OpenCV可以检测出完全静止的背景,实际运用中可能发生平移或旋转,为满足背景变化也可以检测出运动物体,那就需要把摄像头的标定结合进来。

运动物体的团块特征检测模块:使用前景检测的结果检测场景中运动物体的像素结合—团块,输入数据为当前帧的掩码和已有的团块,输出数据为新检测到的团块。

为满足在雷达系统上的应用,团块的图形特征和运动相关性分析都要考虑,而且要考虑团块之间以及团块与背景融合以后的处理。

运动物体的团块跟踪模块:括团块列表和单团块跟踪,使用新团块检测的结果,输入数据为当前帧、当前帧掩码和新团块,输出数据为当前帧的团块信息:ID号,位置,速度以及运动方向。

轨迹生成模块:手机所有团块的位置,建立轨迹列表,进行相关性处理。

轨迹后处理模块:进行运动物体标定时取出位置和运动趋势的抖动,对轨迹进行平滑处理。

3.添加自定义团块完成跟踪程序的团块关联及实现自定义团块程序:#include "cvaux.h"#include "highgui.h"#include <stdio.h>#include "myfgdetector.h"void MyFGDetector::Create(double newalpha, double newthreshold){frameNum = 0; //视频帧计数alpha = newalpha; //得到输入的背景图像的更新权值threshold = newthreshold; //得到二值化的阈值pFrame = 0; //当前帧指针置为NULLpFGMask = 0; //输出的前景检测图像指针置为NULLpFrameMat = 0; //当前帧转换成的位浮点单通道矩阵指针置NULLpFGMat = 0; //前景图位浮点单通道矩阵指针置为NULLpBkMat = 0; //背景图位浮点单通道矩阵指针置为NULL }MyFGDetector::MyFGDetector(){Create(0.150, 60.0);}MyFGDetector::MyFGDetector(double alpha, double threshold){Create(alpha, threshold);}void MyFGDetector::Process(IplImage* pFrame){if (frameNum == 0){/*视频的第一帧,利用这个帧图像的宽高信息来初始化内部的成员变量*/ pFGMask = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_8U, 1);pBkMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);pFGMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);pFrameMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);if (!pFGMask||!pBkMat||!pFrameMat){/*内部成员有一个初始化不成功的处理*/fprintf(stderr, "Can not alloc memory.\n");return ;}//将彩色的当前帧图像pFrame转换到单通道灰度图像pFGMaskcvCvtColor(pFrame, pFGMask, CV_BGR2GRAY);//当前帧位单通道图pFGMask映射到位浮点单通道矩阵pFrameMatcvConvert(pFGMask, pFrameMat);//前景位浮点单通道矩阵pFrameMatcvConvert(pFGMask, pFGMat);//背景位浮点单通道矩阵pBkMat初始化cvConvert(pFGMask, pBkMat); //用第一帧作背景}//转化成单信道图像再处理cvCvtColor(pFrame, pFGMask, CV_BGR2GRAY);cvConvert(pFGMask, pFrameMat);//先高斯低通滤波去除噪声平滑图像cvSmooth(pFrameMat, pFrameMat,CV_GAUSSIAN, 3, 0, 0);// 当前帧跟背景图相减cvAbsDiff(pFrameMat, pBkMat, pFGMat);//二值化前景图cvThreshold(pFGMat, pFGMask, threshold, 255.0, CV_THRESH_BINARY);//进行形态学滤波,去掉孤立噪点cvErode(pFGMask, pFGMask, 0, 1);//腐蚀,迭代次数cvDilate(pFGMask, pFGMask, 0, 1);//再膨胀,迭代次数//背景累计差分:pBkMat = alpha*pFrameMat+(1-alpha)*pBkMatcvRunningAvg(pFrameMat, pBkMat, alpha, 0);frameNum++; //帧计数}//返回前景检测图像pFGMaskIplImage* MyFGDetector::GetMask(){return pFGMask;}void MyFGDetector::Release(){frameNum = 0;if (pFrame) cvReleaseImage(&pFrame);if (pFGMask) cvReleaseImage(&pFGMask);if (pFrameMat) cvReleaseMat(&pFrameMat);if (pFGMat) cvReleaseMat(&pFGMat);if (pBkMat) cvReleaseMat(&pBkMat);}MyFGDetector::~MyFGDetector(){Release();}4.使用blobtrack源程序将自定义的模块插入到opencv的框架中5.编译连接,生成可执行程序6.程序调试7.程序演示运行生成的可执行程序从自动跟踪画面中截取图像远处人的运动跟踪同时跟踪两个运动目标近处运动物体跟踪六、实验中出现的问题由于差分法的不完善及自定义团块中对于图像阈值转换运算编程的不完善,跟踪时会出现目标跟踪分离及运动物体判断错误的情况运动目标跟踪分离运动目标跟踪偏离七、实验心得组员刘嘉伟:本次实验中对opencv进行了充分的了解,并利用opencv进行了运动物体跟踪监测的程序编译,初步了解了该视频处理环境的具体功能以及调用方法,并了解了视频跟踪中所涉及的一些算法以及图像处理的技巧,通过本次实验基本掌握了图像跟踪各模块的具体应用方式,在这次实验中受益颇深组员赵秀娇:通过这次实验基本掌握了运动目标检测及跟踪的多种算法,深入了解了将图像的灰度、阈值及二值化计算应用于运动目标跟踪的方法,并通过背景差分法、帧差分法实现了运动图像的判断及跟踪。

相关文档
最新文档