当前位置:文档之家› 基于opencv的运动目标检测和跟踪

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

本科毕业论文(科研训练、毕业设计)题目: opencv的运动目标检测姓名:汤超学院:信息科学与技术学院系:电子工程系专业:电子信息工程年级:2005学号:22220055204057指导教师(校内):杨涛职称:教授2009年 5 月25 日基于opencv的运动目标检测和跟踪摘要Opencv(Open Source Computer Vision Library)是一种用于数字图像处理和计算机视觉的函数库,由Intel微处理器研究实验室(Intel’s MicroprocessorResearch Lab)的视觉交互组(The Visual Interaetivity Group)开发。

采用的开发语言是C++,可以在window:系统及Linux系统下使用,该函数库是开放源代码的,能够从Intel公司的网站免费下载得到。

opencv提供了针对各种形式的图像和视频源文件(如:bitmap图像,video文件和实时摄像机)的帧提取函数和很多标准的图像处理算法,这些函数都可以直接用在具体的视频程序开发项目中。

针对在背景中检测出运动目标并实施警戒等特定提示,本文利用opencv的运动物体检测的数据结构、函数以及基本框架,建立了一个由人机交互界面模式。

实施对物体的检测。

该方面在安防方面已经很受重视。

相信在不久的将来将会成为一种监督秩序的方式。

关键字视频,运动目标检测,帧差分Abstract Opencv is a function library for digital image processing and computer vision,developed by Intel’s MicroprocessorResearch Lab and The Visual Interaetivity ed in the development of language is C + +,It can be used in the Window system and the Linux system,The library is open source,It's for free download from the Intel Web site.Opencv provide for various forms of image and video source files (eg: bitmap images, vidco documents and real-time camera) frame extraction function and a lot of standard image processing algorithms.These functions can be directly used for specific development projects in video.For in the background to detect moving targets and implementation of security in a specific tips.This article made use of the moving object detection opencv data , function and function of the basic frameworkstructure to establish a model of human-computer interaction interface,to implement of object detection.The security aspect has been very popular in the importance.I believe in the near future it will become a way of supervision order.Key words video, moving target detection, frame difference目录引言 (1)第一章绪论 (2)O PENCV简介 (2)第二章 OPENCV的编程环境 (4)2.1O PEN CV环境介绍 (4)2.1.1O PEN CV的安装 (4)2.1.2配置W INDOWS环境变量 (6)2.2配置V ISUAL C++6.0 (9)项目设置 (10)第三章视频处理 (11)3.1用H IGH GUI对视频进行读写处理 (11)3.1.1获取摄像头,显示图像 (11)3.2对AVI文件的处理 (11)第四章OPENCV的体系结构 (14)4.1O PEN CV中的常用数据结构体系 (14)4.2 OPENCV中常用类体系 (15)4.3 OPENCV常用的函数 (15)第五章运动目标检测 (18)5.1运动目标检测的基本方法 (18)5.2本文的检测算法 (19)5.3开运算和闭运算 (21)5.4程序运行演示 (21)结论 (23)致谢词 (24)[参考文献] (25)附录 (26)引言计算机视觉和数字图像处理技术可以广泛地应用于工业、医疗保健、航空航天、军事等各领域,其中针对视频连续图像中运动物体的分析是其中应用前景最为广泛的一个方向,在机器人导航、智能视觉监控系统、医学图像分析、工业检测、视频图像分析以及军事雷达视频信号的处理上都有占有重要地位。

其中基于视频图像的运动目标分析也是计算机视觉和数字图像处理技术最为复杂的一个方向。

它是一个庞大的工程,既要对视频信号进行采集,又要对采集的图像进行处理,还要针对具体的应用编写程序进行开发。

对于要完成某项应用的工程人员来说,如果所有底层的算法都要自己编码实现,所有的图像处理函数都要从头编写,既造成时间和精力上的浪费,又难以保证稳定性、实用性和通用性。

视频序列图像运动目标分析的基本内容是从连续的视频序列图像中提出运动目标,同时对提取出的运动目标进行识别和跟踪,并对其行为进行解和描述。

运动检测、目标识别和跟踪属于低层次的处理,属于图像处理范畴;图像分析和理解属于高层次的处理,属于人工智能的范畴。

视频图像的运动分析以数字图像处理为基础,内容涉及数字图像处理、模式别、计算机视觉、人工智能等诸多领域和学科。

同时,目前开发视频序列像运动目标分析系统不但在实时性、鲁棒性上有很高的要求,也逐步重视通用性和可移植性。

这些都给视频运动分析带来了挑战。

本文旨在利用现有的理论、算法和工具,以工程应用为目的,基opencv这个开放的计算机视觉程序库,研究如何从序列图像中检测。

第一章绪论Opencv简介opencv是inter开源计算机视觉库。

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

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

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

对非商业应用和商业应用都是免费(FREE)的。

为Intel Intergrated Perfomance Primitives(IPP)提供了透明接口。

这意味着如果有为特定处理器优化的的IPP库,OpenCv将在运行时自动加载这些库。

在过去的十年,随着处理器速度和内存容量以摩尔定律增长,计算机视觉的研究和应用也得到了迅速的发展。

以往传统的开发方法要求工程人员在完成的硬件设计的同时,自己编码实现所有底层的算法,所有的图像处理函数都要从头编写,既造成时间和精力上的浪费,又难以保证稳定性、实用性和通用性,越来越难以满足现实的需求。

为了解决理论到应用的难题,出现了众多的计算机视觉和图像处理软件包。

大多数软件包是用C/C++编写的。

例如,TargetJr及其后续版本VXL(the Vision something LIbrarise)就是这样一个C++库的集合,在满足的小型、快速和稳固的系统的开发要求的同时提供了多平台移植性。

Gandalf提供了计算机视觉和数值计算库,适合于可移植平台的视觉应用软件的开发。

Delft 科学图像处理库DIPlib是另一个科学图像处理C程序库.包含了许多图像数据多维分析和处理函数。

同时许多商用图像处理和计算机视觉软件包也得到相应开发。

MVTec公司开发的HALCON是其中之一,它包含了C/C++代码的图像处理库。

LabView在Nl图像处理硬件的支持下能加速图像处理。

由微软公司开发的SDK是一个底层的图像操作分析的C++库。

在Matlab中的图像处理工具包以及在Mathematica中的数字图像处理软件包都是较为强大的图像处理工具,同时这两个软件包兼有许多高级数学计算功能。

由Aurora公司开发的LEADTOOLS是一套商用化计算机视觉包,它包括了图像处理服务器开发工具。

允许用户创建各种基于网络的图像处理服务程序。

这些软件包为计算机图像分析和机器视觉提供了极大的便利。

但也存在不足之处: 大多数软件包没有高级数学计算函数。

并且这些软件包都不包括如目标跟踪、摄像机标定、姿态识别、脸谱识别和三维重建等高层函数。

Matlab是功能较为强大的科学计算和分析平台,它提供了图像处理工具包,也提供了较为丰富的数学计算函数,但在Matlab环境下的运行速度令人担忧。

虽然Matlab可以通过编译器将m文件转化为C代码。

但是转换后的C代码的执行效率和可读性存在较大问题。

除Matlab和LEADTOOLS。

大部分软件包不支持网络服务器结构的应用程序的开发;Matlab的网络接口机制较为复杂,且同样存在运行效率的问题。

绝大多数软件包不支持可嵌人性。

本文选取OpenCv进行视频序列图像运动分析,与上述软件包相比,openCv的优势在于: 纯c代码,源代码开放。

开放源代码(open source)是信息技术界从20世纪80年代开始兴起的新名词。

源代码是由软件命令电脑执行指定动作的程序语句,是一个软件的核心所在,最著名的开源软件当属芬兰人林努斯·托尔瓦兹提出的Linux。

开源软件之所以能够风靡世界,首先是其开源的免费特性;此外,由于有全球众多编程者的参与,开源软件一般具有简约精炼、资源占用少、功能集中和安全性好的优点。

不同于以往各种由业余爱好者凭兴趣或是根据自己的项目要求而制作的源代码开发包,OpenCV是由Intel资助的开源项目,其代码规范而且具备良好的后继开发和改进能力。

丰富的函数功能,强大的图像和矩阵运算能力:openCV提供了数组、序列、矩阵、树等基本结构,也包含了差分方程求解、傅立叶分析、积分运算、特殊函数等众多高级数学计算函数,以及各种图像处理操作和目标跟踪、摄像机校准、三维重建等高级视觉函数。

相关主题