【VC++开源代码栏目提醒】:网学会员鉴于大家对VC++开源代码十分关注,论文会员在此为大家搜集整理了“基于OpenCV的运动物体跟踪算法【毕业论文,绝对精品】 - 毕业设计”一文,供大家参考学习
运动物体跟踪算法摘要:运动目标的检测与跟踪是计算机视觉和图像编码领域的重要研究之一,在军事、医学和科研等领域都有广泛的应用。
运动目标检测与跟踪算法的设计直接影响跟踪效果的准确性和稳定性,研究设计鲁棒性好、精确度高的跟踪算法一直是计算机视觉领域的研究热点之一。
本文主要设计实现基于 OpenCV 的运动物体跟踪算法。
论文首先概述了系统开发环境和运动物体跟踪算法;然后论文详细描述了基于 OpenCV 实现运动物体跟踪算法的数据结构;其次重点讨论了如何设计实现判断每一个像素是前景还是背景的前景检测模块、使用前景检测的结果检测新进入场景的新团块检测模块、团块跟踪模块、轨迹生成、轨迹后处理以及物体跟踪流程模块等;最后论文对运动物体跟踪算法进行了初步理论分析。
关键词:图像处理;运动跟踪;目标检测;Kalman 滤波器Design and Implementation of the Motion Object Tracking AlgorithmsAbstract: Motion object detection and tracking is the main research fieldin computer vision and image coding which has been widely applied in military,medicine and scientific research etc. The accuracy and stability of trackingeffect depend on the design of algorithms to a great extent. It is still oneof research hot point to research design an accurate and robust algorithm incomputer vision. This article main design realizes based on the OpenCV mobile track algorithm.The paper has first outlined the system development environment and the mobiletrack algorithm Then the paper described in detail has realized the mobile trackalgorithm construction of data based on OpenCV How did next discuss has designedrealizes judges each picture element is with emphasis the prospect or thebackground prospect examination module the use prospect examination resultexamination enters the scene newly the new briquetting examination module thebriquetting track module the path production the path post-processing as wellas the object track flow module and so on Finally the paper has carried on thepreliminary theoretical analysis to the mobile track algorithm.Key
words: Image Processing,Motion Tracking,Object Detection,Kalman Filter 目录序言 .......................................................... 1第 1 章 系统开发环境概述 ....................................... 21.1 VISUAL C............................................................ 21.1.1 Visual C的特点.................................................... 21.1.2
VC的组成.......................................................... 21.2 OPENCV................................................................ 31.2.1 OpenCV 的特点 ....................................................... 31.2.2 OpenCV 的功能 ....................................................... 41.2.3 OpenCV 模块 ......................................................... 4第 2 章 运动物体跟踪算法概述 ................................... 52.1 运动物体跟踪算法研究的背景和发展现状.................................. 52.1.1 论文的背景及意义.................................................... 52.1.2 运动物体跟踪算法的研究和发展现状.................................... 52.2 运动跟踪系统的技术概述................................................ 7第 3 章 运动物体跟踪算法具体描述 ............................... 83.1 背景统计量的累积...................................................... 83.2 运动模板.............................................................. 93.3 对像跟踪............................................................. 11 I3.4 光流................................................................. 143.5 预估器............................................................... 16第 4 章 运动物体跟踪算法正确性测试............................. 204.1 基本结构............................................................. 204.1.1 团块............................................................... 204.1.2 团块列表........................................................... 214.1.3 团块跟踪参数....................................................... 214.2 模块描述............................................................. 224.2.1 前景检测模块....................................................... 224.2.2 新团块检测模块..................................................... 234.2.3 团块跟踪模块....................................................... 244.2.4 轨迹生成模块....................................................... 264.2.5 轨迹后处理模块..................................................... 274.2.6 跟踪流程模块....................................................... 294.3 程序运行结果与分析................................................... 30第 5 章 运动物体跟踪性能初步理论分析........................... 315.1 打印帮助............................................................. 315.2 分析输入参数......................................................... 315.3 打开视频............................................................. 325.4 打印参数............................................................. 325.5 创建所需要的模块..................................................... 335.6 处理视频............................................................. 34 II结束语 ....................................................... 35参考文献 ..................................................... 36致谢 ......................................................... 38 III 江苏技术师范学院毕业设计说明书(论文) 运动物体跟踪算法 序言 随着计算机技术、
通信技术、图像处理技术的不断发展,计算机视觉的应用领域已经迅速拓宽,视频图像中运动物体的检测与跟踪已经成为该领域一个非常活跃的课题。
无论在民用还是军用方面,运动物体跟踪系统都获得了广泛的应用,例如在交通监控、天文观测、医学研究、军事
导航、运动分析等领域都有很高的实用价值。
尤其在军事应用中,运动物体跟踪技术已被成功地用于武器的成像制导、侦察和监视方面。
运动目标检测与跟踪处于整个视觉监视系统的最底层,是各种后续高级处理如目标分类、行为理解等的基础。
运动目标检测是指从视频流中实时提取目标,一般是确定目标所在区域和颜色特征等。
目标检测的结果是一种“静态”目标——前景目标,由一些静态特征所描述。
运动目标跟踪则指对目标进行连续的跟踪以确定其运动轨迹。
受跟踪的目标是一种“动态”目标——运动目标,与前景目标相比,描述它的特征中多了动态特征(如运动参数等)。
运动物体跟踪算法是为了实现对视频中运动物体的跟踪。
算法主要通过提取视频中的图像帧序列,运用数字图像分析技术,识别出运动物体,进而对运动物体进行跟踪,最终得到运动物体的轨迹。
运动物体跟踪算法是智能视频监控的重要组成部分,
设计实现该算法具有一定的实用价值。
第 1 页 共 38 页 江苏技术师范学院毕业设计说明书(论文) 第 1 章 系统开发环境概述 在 Windows 平台上使用
VC 开发环境,综合运用数字图像处理技术,基于 OpenCV 设计实现运动物体跟踪算法。
1.1 Visual C1.1.1 Visual C的特点 Visual C是 Microsoft 公司推出的开发 Win32 环境程序,面向对象的可视化集成编程系统。
从功能上来看,它除了继承了 MFC1.0 的全部功能外,还增加了以下新的特性: 1)全面支持文件的 Open、Save 和 Save As 等菜单项,并且采用了最近才使用的文件
列表形式。
2)可以方便地进行打印和打印预显。
3)支持滚动窗口和切分窗口(Splitter Window)。
4)支持工具条(Toolbar)和状态条(Status bar)。
5)能够处理 Microsoft Visual Basic 控制。
6)能够方便地实现上下文相关帮助(Context Sensitive Help)。
7)能够自动处理进入对话框中的数据。
8)实现 OLE 的接口更加简单、方便。
因此,它现在已经成为开发 Win32 环境程序,包括图像处理程序的主要开发工具。
1.1.2
VC的组成 Visual C包含了两套完整的 Windows 应用开发系统。
由以下的部分组成: 1)Visual 工作平台和创建过程:这是一个运行于 Windows 上的交互式开发环境,它是直接从 Microsoft QuickC for Windows 演化而来的。
App 2) Studio 资源编辑器:堪称是 Windows 应用,同时它本身就是通过使用 VisualC工具及类库编写而成的,可以对自身的资源进行编辑。
3)C/C编译器:Visual C的编译器可以处理 C 和 C源
代码,它通过源
代码文 第 2 页 共 38 页 江苏技术师范学院
毕业设计说明书(论文)件后缀来识别
代码本身所使用的语言。
4)连接器:为了生成 EXE 文件,Visual C的连接器需要对编译器所生成的 OBJ文件进行处理。
5)资源编译器:在编译状态和联编状态都要用到资源编译器。
6)调试器:为了能够对程序进行调试,在创建
程序时必须设置编译器和连接器相应的选项以便产生相应的可调试信息。
7)AppWizard:它会按照用户通过对话框指定的特性、类名及源
代码文件名来产生Windows 应用的
工作构架。
8)ClassWizard:能够给出原型、函数体以及将消息同应用框架相联系的相应
代码。
9)源程序浏览器:能够使人们从类或函数的角度来了解程序。
10)联机帮助:有关 WindowsSDK 参考手册及类库参考手册的全部内容都包含在Visual C的联机帮助中。
11)Windows 诊断工具:用于对手工编制的 make 文件进行处理的 NMAKE 程序。
1.2 OpenCV OpenCV这一名称包含了Open和Computer Vision两者的意思。
实际上,Open指Open Source(
开源,即开放源
代码),Computer Vision则指
计算机视觉。
OpenCV是Intel资助的
开源计算机视觉库。
它由一系列C函数和少量C类构成,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV拥有包括300多个C/C函数的跨平台的中、高层 API。
它不依赖与其它的外部库,尽管也可以使用某些外部库。
1.2.1 OpenCV 的特点 OpenCV 作为开放的数字图像处理和计算机视觉
软件平台,有以下特点: 1)开放 C 源码。
2)基于 Intel 处理器指令集开发的优化
代码。
3)统一的结构和功能定义。
4)强大的图像和矩阵运算能力。
5)方便灵活的用户接口。
第 3 页 共 38 页 江苏技术师范学院
毕业设计说明书(论文) 6)同时支持 MS-Windows 和 Linux 平台。
1.2.2 OpenCV 的功能 1)对图像数据的操作,包括分配、释放、复制、设置和转换数据。
2)对图像和视频的输入输出,指文件和摄像头作为输入,图像和视频文件作为输出。
3)具有对矩阵和向量的操作以及线性代数的算法程序,包括矩阵积、解方程、特征值以及奇异值等。
4)可对各种动态数据结构,如列表、队列、集合、树和图等进行操作。
5)具有基本的数字图像处理能力,如可进行滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图和图像金字塔等操作。
6)可对各种结构进行分析,包括连接部件分析、轮廓处理、距离变换、各种距的计算、模板匹配、Hough 变换、多边形逼近、直线拟合、椭圆拟合和 Delaunay 三角划分等。
7)对摄像头的定标,包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计和立体对应。
8)对运动的分析,如对光流、运动分割和跟踪的分析。
9)对目标的识别,可采用特征法和隐马尔可夫模型(HMM)法。
10)具有基本的 GUI 功能,包括图像与视频显示、键盘和鼠标事件处理及滚动条等。
11)可对图像进行标注,如对线、二次曲线和多边形进行标注,还可以书写文字。
1.2.3 OpenCV 模块 OpenCV 包括以下几个模块,其具体功能是: 1)CV:主要的 OpenCV 函数。
2)CVAUX:辅助的(实验性的)OpenCV 函数。
3)CXCORE:数据结构与线性代数支持。
4)HIGHGUI:图像界面函数。
5)ML:机器
学习,包括模式分类和回归分析等。
6)CVCAM:负责读取摄像头数据的模块。
第 4 页 共 38 页 江苏技术师范学院毕业设计说明书(论文) 第 2 章 运动物体跟踪算法概述2.1 运动物体跟踪算法研究的背景和发展现状2.1.1 论文的背景及意义 近年来,计算机视觉的研究重点已逐渐从对静态图像的研究过渡到对动态图像序列的研究上面,多媒体技术和通讯技术一直将运动目标,例如人和车辆,作为一项重要的考虑因素。
视频数据库、虚拟现实、智能房间、智能桌椅以及安全监控等技术的应用都需要对运动目标进行检测和跟踪,并对运动目标的行为做出解释。
因此,对运动目标的检测与跟踪也成了视觉研究中的一个重要
问题。
运动物体跟踪算法是为了实现对视频中运动物体的跟踪。
算法主要通过提取视频中的图像帧序列,运用数字图像分析技术,识别出运动物体,进而对运动物体进行跟踪,最终得到运动物体的轨迹。
2.1.2 运动物体跟踪算法的研究和发展现状 运动目标检测与跟踪处于整个视觉监视系统的最底层,是各种后续高级处理如目标分类、行为理解等的基础。
运动目标检测是指从视频流中实时提取目标,一般是确定目标所在区域和颜色特征等。
目标检测的结果是一种“静态”目标——前景目标,由一些静态特征所描述。
运动目标跟踪则指对目标进行连续的跟踪以确定其运动轨迹。
受跟踪的目标是一种“动态”目标——运动目标,与前景目标相比,描述它的特征中多了动态特征(如运动参数等。
1、运动目标检测 运动目标跟踪是对摄像机得到的图像序列进行视觉上的分析处理,其主要的目的是实时地观测被监视场景的运动目标,并分析描述它们的行为。
运动目标的提取主要包括运动检测以及目标提取两个步骤,其中运动检测处于整个视觉监视
系统的最底层,是各种后续高级处理如目标分类,行为理解等的基础。
运动检测可以分为静止背景下的运动检测和运动背景下的运动检测。
对于静止背景下序列图像的变化检测,主要有三种方法: 第 5 页 共 38 页 江苏技术师范学院毕业设计说明书(论文)连续帧间差分法、背景差分法和光流场法。
连续帧间差分法对于动态环境有很好的适应性,在运动目标和背景有明显区别的时候且目标运动较快的时候比较有效,算法简单,计算复杂度低,但不能完全提取出目标的所有相关点。
背景差分法能够较完整地提取目标点,对于背景较为稳定的情况,检测效果好。
对于背景变化的场景,例如光照、背景的抖动、背景中新物体的加入等情况比较敏感。
光流场法,基于光流的变化检测采用了运动目标随时间变化的光流特性,虽然能够直接用于摄像机运动下的目标检测,但大多数光流方法运算量较大,若没有特定的硬件支持一般很难满足实时处理的要求。
在实时跟踪系统中,人们更热衷于使用帧差法或背景减法来获得期望的结果。
2、运动目标跟踪 所谓运动目标跟踪,就是在运动目标检测的基础上,利用目标有效特征,选择使用适当的匹配算法,在序列图像中寻找与目标模板最相似的图像的位置,简单的说就是给目标定位。
在实际应用中,运动目标跟踪不仅可以提供目标的运动轨迹和准确定位目标,为下一步的目标行为分析与理解提供了可靠的数据来源,而且也可以为运动目标检测提供帮助。
首先,从算法过程上看,运动目标的跟踪方法主要分为基于图像帧内信息的跟踪和基于帧内——帧间信息的跟踪两种。
基于图像帧内信息的跟踪方法是对每帧图像信号进行单独处理,利用目标信号在二维空间中的特征将目标从背景中分割出来,完成对目标的定位,其优点是仅对当前帧进行计算,因此不会造成跟踪过程中的误差累积。
根据实现过程的不同,该方法又可以分为两类:形心跟踪和模板匹配跟踪。
形心跟踪是利用目标检测方法将目标从背景中分割出来,计算目标的形心(重心)在图像中的位置,以达到目标定位的目的。
形心跟踪法的优点是过程简单,计算效率高,但对于复杂背景中的目标的检测识别困难较大。
模板匹配跟踪法首先确定目标模板,然后将该模板在图像中逐点滑动进行相关匹配,得到相关曲线,使得相关曲线达到最大值,即相关性最大的区域就是目标的当前区域。
模板匹配法的优点是可靠性较高,但是计算量较大,而且要对目标模板进行定期更新。
基于帧内——帧间相关性的跟踪方法除了利用目标信号在帧内的空间特征外,还利用了它在时间域上的运动特性,即帧与帧之间的相关性,对目标在后继帧中的位置和运动状态信息进行预测和更新。
第 6 页 共 38 页 江苏技术师范学院毕业设计说明书(论文)2.2 运动跟踪系统的技术概述 一个完整的运动目标跟踪系统及过程可分为下面几步:图像预处理、目标检测与分割、目标特征提取与识别、目标运动状态分析与跟踪。
图 2-1 所示是一个运动目标跟踪系统框图。
目标运动 视频帧 图像预处 目标检测 目标特征提取 结果 状态分析 理 与分割 与识别 与跟踪 图 2-1 运动目标跟踪系统框图 现对这几部分分别介绍如下: 1图像预处理。
图像的预处理是将成像系统所得到的图像进行适当的处理,使得处理后的图像更易于进行检测和分割。
预处理通常是为了降低图像噪声、干扰和增强目标、背景的对比度。
针对不同的成像方法得到的图像,处理方法也不尽相同。
2目标检测与分割。
目标检测和分割一直是图像处理领域中的重点和难点。
目标检测是对可能是目标的区域定位;目标分割是将目标从背景中分离出来。
在绝大多数检测和分割技术中,两者是不可分离的。
在目标识别和跟踪系统中,对图像分割的质量也有很大的依赖性。
3目标特征提取与识别。
目标识别是目标跟踪中的重要一环,而特征提取是目标识别中的关键技术。
特征提取的优劣直接影响到目标识别以及跟踪系统的性能。
目标的特征可分为形状、灰度、边缘、区域、纹理等。
不同的特征,对应不同的提取方法。
一般地,特征提取方法必须满足一些必要准则:不变性、唯一性和稳定性。
4目标运动状态分析与跟踪。
经过目标识别环节后,就可以得到感兴趣的目标区域,进而计算出图像中目标的形心位置。
对序列图像而言,就可以描绘出目标大致的运动轨迹,估算出运动速度和方向等参数信息。
根据这些运动参数以及帧间的相关性,预测下一帧或几帧中目标的位置,完成跟踪过程。
现有的跟踪算法多种多样,但最基本的两个要求是跟踪的可靠性和实时性。
在应用中,人们往往根据不同的目标特性和实际需求,选择不同的跟踪算法。
第 7 页 共 38 页 江苏技术师范学院毕业设计说明书(论文) 第 3 章 运动物体跟踪算法具体描述3.1 背景统计量的累积1、Acc功能:将帧叠加到累积器(accumulator)中。
格式:void cvAccconst CvArr image,CvArr sum,const CvArr maskNULL ;说明:函数cvAcc将整个.