【PHP开源代码栏目提醒】:本文主要为网学会员提供“基于OpenCV的运动目标检测与跟踪 - 产品手册”,希望对需要基于OpenCV的运动目标检测与跟踪 - 产品手册网友有所帮助,学习一下!
浙江大学信息科学与工程学院 硕士学位
论文基于OpenCV的运动目标检测与跟踪 级别:硕士 专业:电路与系统 指导教师:章专 20080501 浙江大学硕士学位
论文 摘 要 计算机视觉和数字图像处理技术可以广泛地应用于工业、医疗保健、航空航天、军事等各个领域,其中针对视频连续图像中运动物体的分析是其中应用前景最为广泛的一个方向,在机器人导航、智能视觉监控系统、医学图像分析、工业检测、视频图像分析以及军事雷达视频信号的处理上都有占有重要地位。
其中基于视频图像的运动目标分析也是计算机视觉和数字图像处理技术最为复杂的一个方向。
它是一个庞大的工程,既要对视频信号进行采集,又要对采集的图像进行处理,还要针对具体的应用编写程序进行开发。
对于要完成某项应用的工程人员来说,如果所有底层的算法都要自己编码实现,所有的图像处理函数都要从头编写,既造成时间和精力上的浪费,又难以保证稳定性、实用性和通用性。
OpenCV(Open Source Compmer Vision Library)是一种用于数字图像处理和计算机视觉的函数库,由Intel微处理器研究实验室(Intel’S MicroprocessorResearch Lab)的视觉交互组(The Visual Interactivity Group)开发。
采用的开发语言是C抖,可以在Windows系统及Linux系统下使用,该函数库是开放源
代码的,能够从Intel公司的网站免费下载得到。
OpenCV提供了针对各种形式的图像和视频源文件(如:bitmap图像,video文件和实时摄像机)的帧提取函数和很多标准的图像处理算法,这些函数都可以直接用在具体的视频程序开发项目中。
针对在复杂背景中检测出多批特定运动目标并实施分配批号实行标记跟踪,本文利用OpenCV的运动物体跟踪的数据结构、函数以及基本框架,建立了一个由人机交互界面模块;运动物体的前景检测模块;运动物体的团块特征检测模块;运动物体的团块跟踪模块轨迹生成模块;轨迹后处理模块组成的视频图像运动目标分析系统。
在本文的最后阶段,使用此视频图像运动目标分析系统进行了大量实验,并全面分析了实验现象和数据。
通过这些现象和数据可以得出结论:本文基于OpenCV设计的视频图像运动目标分析系统具有良好的实时性,能够正确 浙江大学硕士学位
论文的进行运动物体的实时检测和跟踪,并具有良好的鲁棒性。
由于该系统在windows下开发,如何将该系统移植到其他的系统或者是嵌入式平台并进一步提高系统的通用性和鲁棒性就成了今后研究工作的重点。
关键字:视频,运动目标检测,背景差分,运动目标跟踪,图像分割,卡尔曼滤波,CamShift,OpenCV
论文类型:实际应用研究 Il 浙江大学硕士学位
论文 Abstract Detection and tracking of moving object in image sequence is one importantarea in the domain of digital image processing and computer vision.It’Sapplications include fields like robot navigation,vision-based supervision,ecuritysurveillance,medical image analysis,industrial automation,video processing, Detection and tracking of moving object in image sequence is also the mostcomplicated direction of computer vision and digital image processing techniques.It is a ample project that including video collection,digital image processing andapplication development.It’S too complex for a engineer to accomplish all theseworks,at the same time the stability,practicability and general availability isdifficult to guaranteed. OpenCV(Open Source Computer Vifion Library)is a library for digitalimage processing and computer vision.It is developed by the visual interactivitygroup in Intel’S microprocessor research Lab with C抖language.It can be used inwindow system and Linux system.The library is open SOurCe and carl be freedownload from Intel’S Web site.OpenCV provides various functions to extractframe from image sequence and video SOurCe(such嬲:bitmap images,video filesand real-time video camera)and many of the standard image processingalgorithms,these functions can be directly used in the video program for specificdevelopment projects. Aim at detecting,tracking and marking multipule specific targets in complexbackground.We use the basic framework of object tracking of OpenCV toestablish a multi—modules system.The system is composed of Human—computerinteraction interface module,foreground of moving objects detection module,blocks feature of moving objects detection module,blocks tracking module andtrack analysis module. We use this system doing a lot of experiment under various contexts,and tht 111 浙江大学硕士学位
论文experiments results are well wxamined.The results demonstrate that the systemcan do automatic motion detection and tracking with high real-time performanceand moderate robustness.Since we develop this system under windows platform,how to migrate to other systems or embedded platform and further improve theversatility and robustness has become the focus of future research work. Key words:Video,Detection and Tracking,Background Difference,Segmentation of Image;Kalman Filter,CamShift,OpenCV 浙江大学硕士学位
论文 第一章绪论1.1引言 图像信息是人类认识世界的重要知识来源,国外学者做过统计,人类所获得的外界信息有70%以上是来自眼睛摄取的图像。
在许多场合,没有其他形式比图像所传送的信息更为丰富和真切【l】。
既然视觉是人类获取外界信息的主要载体,计算机要实现智能化,就必须能够处理图像信息。
自然界的一切图像都是连续变化的模拟图像,这些图像中的运动目标也往往是我们最关心的,基于视频序列图像的运动目标分析这个研究方向也就应运而生。
视频序列图像运动目标分析的基本内容是从连续的视频序列图像中提取出运动目标,同时对提取出的运动目标进行识别和跟踪,并对其行为进行理解和描述。
运动检测、目标识别和跟踪属于低层次的处理,属于图像处理的范畴;图像分析和理解属于高层次的处理,属于人工智能的范畴【2】。
视频图像的运动分析以数字图像处理为基础,内容涉及数字图像处理【50】【52】、模式识别、计算机视觉、人工智能等诸多领域和学科。
同时,目前开发视频序列图像运动目标分析系统不但在实时性、鲁棒性上有很高的要求,也逐步重视其“通用性和可移植性。
这些都给视频运动分析带来了挑战。
本文旨在利用现有的理论、算法和工具,以工程应用为目的,基于OpenCVl20】这个开放的计算机视觉程序库,研究如何从序列图像中检测并跟踪运动目标。
1.2国内外研究与应用现状 计算机视觉156J是研究用计算机来模拟生物外显或宏观视觉功能的科学和技术。
作为计算机视觉研究的一个分支——运动目标的检测与跟踪,就是对视场内的运动目标,如人或车辆15ll等,进行实时的观测,并在此基础上对被观测对象进行分类,然后分析它们的行为。
近年来,计算机视觉的研究重点已经从对静态图像的研究过渡到对动态图像序列的研究上面,这方面的典型应用包括自动化的视频监控系统、视频MPEG编解码技术【4】【5l、人机交互的 浙江大学硕士学位
论文感知接口【6】【7l、军事上的制导、雷达视频图像中的目标分析。
运动目标检测和跟踪算法的主要问题和难点有: 各个目标之间的相互遮挡,造成目标信息的不完整,给目标识别带来困难。
不同视角和光照变化带来目标形状变化使得实时识别和跟踪非常困难,如何选择和提取具有不变性的特征具有挑战性。
在复杂背景下,如何对目标进行精确图像分割,如何提高算法鲁棒性和实时性。
由于图像序列有丰富的原始数据,相邻帧之间有很强的相关性,如何利用好时间域上的相关性,提高运动目标检测、识别和跟踪效率具有实际意义。
美国、英国等国家已经展开了大量相关项目的研究。
许多著名公司和研究机构,如IBM,Microsot鼋,Somoff,ObjectVideo,EMITALL,MIT,CMU等近年来都投入大量的人力物力进行智能监控系统的研究,并已经将部分研究成果成功的转化为产品投入市场。
民用产品如IBM公司Watson研究中心开发的Smart Surveillance system(S3)1241,objectvideo公司的己经发行了5个商业版本的Object videoVEWl251系列产品,美国马里兰大学研究的w4126】系统和美国FDI(Futuretel Digital Imaging)公司2003年推出的智能视频监控系统SmartSysteml6〕等。
军用产品如CMU和somoff于1999年联合开发的战场监控系统VASM等。
目前在国内的研究机构中,中国科学院北京自动化研究所下属的模式识别国家重点实验室视觉监控研究处于领先地位。
他们对交通场景的视觉监控 (基于三维线性模型定位、基于扩展卡尔曼滤波器的车辆跟踪算法)、人的运动视觉监控(基于步态的远距离身份识别)和行为模式识别(提出了对目标运动轨迹和行为特征的学习的模糊自组织神经学习算法)进行了深入研究,取得了一定的成果‘引,而且他们总结了英国雷丁大学VIEWS的车辆交通监控原型系统的研究经验,在以往的理论研究的基础上,自行设计并初步实现了一个拥有完全自主知识产权的交通监控原型系统vstart(Visual Surveillance Star)。
除此之外,国内还有一些高校也进行了这方面的研究,如上海交通大学、北京航空航天大学、北京理工大学等。
2 浙江大学硕士学位
论文1.3 OpenCV简介 OpenCV是Intel回
开源计算机视觉库。
它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。
其重要重要特性包括: 拥有包括300多个C函数的跨平台的中、高层API。
它不依赖于其它的外部库——尽管也可以使用某些外部库。
对非商业应用和商业应用都是免费(FREE)的。
(细节参考license)。
为Intel@Integrated Performance Primitives(IPP)提供了透明接口。
这意味着如果有为特定处理器优化的的IPP库,OpenCV将在运行时自动加载这些库。
在过去的十年,随着处理器速度和内存容量以摩尔定律增长,计算机视觉的研究和应用也得到了迅速的发展。
以往传统的开发方法要求工程人员在完成的硬件设计的同时,自己编码实现所有底层的算法,所有的图像处理函数都要从头编写,既造成时间和精力上的浪费,又难以保证稳定性、实用性和通用性,越来越难以满足现实的需求。
为了解决理论到应用的难题,出现了众多的计算机视觉和图像处理软件包。
大多数软件包是用C/C++编写的。
例如,TargetJr及其后续版本VXLl2u(the Vision something Libraries)就是这样一个C++库的集合,在满足的小型、快速和稳固的系统的开发要求的同时提供了多平台移植性。
Gandalf提供了计算机视觉和数值计算库,适合于可移植平台的视觉应用软件的开发。
Delft科学图像处理库DIPlib是另一个科学图像处理C程序库.包含了许多图像数据多维分析和处理函数。
同时许多商用图像处理和计算机视觉软件包也得到相应开发。
MVTec公司开发的HALCON是其中之一,它包含了C/C++
代码的图像处理库。
LabView在Nl图像处理硬件的支持下能加速图像处理。
由微软公司开发的SDK是一个底层的图像操作分析的C++库。
在Matlab中的图像处理工具包以及在Mathematica中的数字图像处理软件包都是较为强大的图像处理工具,同时这两个软件包兼有许多高级数学计算功能。
由Aurora公司开发的LEADTOOLS是一套商用化计算机视觉包,它包括了图像处理服务器开发工具。
允许用户创建各种基于网络的图像处理服务程序。
这些软件包为计算机图像分析和机器视觉提供了极大的便利。
但也存在 3 浙江大学硕士学位
论文不足之处: 大多数软件包没有高级数学计算函数。
并且这些软件包都不包括如目标跟踪、摄像机标定、姿态识别、脸谱识别和三维重建等高层函数。
Matlab是功能较为强大的科学计算和分析平台,它提供了图像处理工具包,也提供了较为丰富的数学计算函数,但在Matlab环境下的运行速度令人担忧。
虽然Matlab可以通过编译器将m文件转化为C
代码。
但是转换后的C
代码的执行效率和可读性存在较大问题。
除Matlab和LEADTOOLS。
大部分软件包不支持网络服务器结构的应用程序的开发;Matlab的网络接口机制较为复杂,且同样存在运行效率的问题。
绝大多数软件包不支持可嵌人性。
本文选取OpenCV进行视频序列图像运动分析,与上述软件包相比,OpenCV的优势在于: 纯C
代码,源
代码开放。
开放源
代码(open source)是信息技术界从20世纪80年代开始兴起的新名词。
源
代码是由软件命令电脑执行指定动作的程序语句,是一个软件的核心所在,最著名的
开源软件当属芬兰人林努斯·托尔瓦兹提出的Linux。
开源软件之所以能够风靡世界,首先是其
开源的免费特性;此外,由于有全球众多编程者的参与,
开源软件一般具有简约精炼、资源占用少、功能集中和安全性好的优点。
不同于以往各种由业余爱好者凭兴趣或是根据自己的项目要求而制作的源
代码开发包,OpenCV是由Intel资助的
开源项目,其
代码规范而且具备良好的后继开发和改进能力。
丰富的函数功能,强大的图像和矩阵运算能力: OpenCV提供了数组、序列、矩阵、树等基本结构,也包含了差分方程求解、傅立叶分析、积分运算、特殊函数等众多高级数学计算函数,以及各种图像处理操作和目标跟踪、摄像机校准、三维重建等高级视觉函数。
平台无关性:基于OpenCV开发的程序可以直接在Windows、Unix、Linux、MacOS X、Solaris、HP等平台之间相互移植,无需对
代码进行任何修改。
程序运行的实时性: 完成调试的
代码可以编译连接成二进制可执行文件。
从而得到较快的运算速度,满足实时性运算的要求。
方便灵活的用户接13。
OpenCV作为一个开放的计算机视觉函数库在使 4 浙江大学硕士学位
论文用上必然没有Matlab那样解释执行来得方便,而SoflIntegration将CH和OpenCV绑定起来推出的CH OpenCV〔221〔641,解决了这一使用上的瓶颈。
CH本身是一种嵌入式跨平台的C/C++脚本解释器,有自己的外壳程序,可以应用于2D/3D绘图、数值计算、分布式网络运算。
CH OpenCV具有以下特性: 交互性:如同Matlab,Ch OpenCV是交互式的。
代码不需要编译就能解释执行。
适合于快速建模和应用程序开发。
同时为游动
代码的计算机视觉提供了可能。
强大的扩展功能:通过Ch SDK。
可以使现在所有的C/C++动态库、静态库和模块成为Ch函数库的一部分.因此Ch函数库的扩充潜能几乎是无限的。
先前提及的所有计算机视觉软件包都能成为Ch OpenCV补充部分。
Web实现性:类似于ASP和Java服务程序。
Ch提供了CGI通用网关接 口。
为Ch OpenCV提供了基于Web的计算机视觉服务器的开发手段。
可嵌入性:与C,c-卜}编译器不同。
Ch能嵌在C/C++应用程序和硬件的机器脚本中。
它为用户减轻了开发维护应用程序庞大机器
代码的沉重负担。
统一的结构和功能定义,基于Intel处理器指令集开发的优化
代码。
可见,作为一个基本的图像处理、计算机视觉和模式识别的
开源项目,OpenCV可以直接应用于很多领域,作为二次开发的理想工具。
目前OpenCV的最新版本为1.0。
在OpenCV中,主要使用的图像格式为IplImage,其结构的定义如下:typedef struct——Ipllmage{ int nSize; //Ipllmage大小 int ID; //版本(=0) int nChannels; //通道数,大多数OpenCV函数支持1,2,3或4个通道 int alphaChannel; //被OpenCV忽略 int depth; //像素位深度,IPL DEPTH 8U.IPL DEPTH 32F等 char colorModel〔4〕; //被OpenCV忽略 char ehannelSeq〔4〕; 臌OpenCV忽略 int dataOrder; //0.交叉存取颜色通道 int origin; //0.顶一左结构,1.底一左结构 int align; //对齐方式(4或8)被Opener忽略 int width; //图像宽像素数 int height; //图像高像素数 struct|plROl*roi; //图像感兴趣区域。
非空时只对该区域处理 struct—Ipllmage+maskROl;脑OpenCV中必须为NULL void幸imageld; /厂在OpenCV中必须为NULL 5 浙江大学硕士学位
论文 struct_IplTilelnfo事tilelnfo: 脏OpenCV中必须为NULL int imageSize; //图像数据大小,单位字节(=height*widthStep) char宰imageData; //指向排列的图像数据 int widthStep; ,/排列图像的行大小,单位字节 int BorderMode〔4〕; //边际结束模式,被OpenCV忽略 int BorderConst〔4〕; //边际结束模式,被OpenCV忽略 char·imageDataOrigin; //为纠正图像内存分配}lplImage; lpllmage结构来自于Intel Image Processing Library(是其本身所具有的),OpenCV只支持其中的一个子集,有关Ipllmage更详细的信息可以参考OpenCV的技术手册。
本文进行图像处理的内部格式就是于Ipllmage。
1.4本文的研究内容与创新点 本文选取视频运动分析中的运动目标检测和运动目标跟踪作为研究重点。
利用OpenCV和Visual C++组建实验平台,针对数字图像特定噪声的去除、运动物体的正确识别与分割、物体之间的遮挡和重叠、处理的实时性要求等难点进行了研究。
本文主要工作总结如下: 在对图像噪声的处理方面:综合使用各种方法去除图像噪声,通过实验比较了这些方法所适用的场合,深入分析了其中的均值和中值滤波算法,兼顾质量和实时性的要求,将两者结合起来,提出并实现了一种改进的实时滑窗递归中值算法。
在运动目标检测方面:重点研究了目前在实际应用中普遍采用的帧间差分法和以背景差分算法,综合帧间差分法和背景差分法各自的特点,提出了一种自适应累积背景的背景差分法,使得背景更新算法使之能够排除目标的干扰,自适应地获取背景图像;为了适应背景图像的亮度变化,改进了基于直方图统计和最小二乘法的OTSU算法实时计算阈值提取运动目标。
在运动目标的跟踪上:通过图像分割获取目标团块信息;采用Kalman滤波和运动模板的方法跟踪运动目标;对彩色图像采用CamShifl算法完成目标跟踪,较好地解决目标的遮挡和重叠问题,最后,将检测和跟踪模块纳入OpenCV提供的运动目标分析框架,形成一个比较完整的目标检测和跟踪系统。
6 浙江大学硕士学位
论文1.5开发平台的搭建 本文的硬件平台为普通的笔记本电脑,CPU是主频1.6GHz的64位双核Pentimn4,内存容量为2G。
视频输入有一个130万像素的Web摄像头。
软件开发平台为WindowsXP、OpenCV以及MS Visual C++2005.NET(以下简称VC.net)。
其中OpenCV配置的过程如下【231: 安装下载得到的OpenCV应用程序, 下载地址为:http://sourceforge.net/l:Iroject/showfiles.
php?group__id=22870 编译所要的静态和动态链接库文件 在VC.Net下的配置步骤如下: ·打开MS Visual C++2005.NET应用程序,在菜单项里选择: Tools->Options ◆ 在列表中,选择Projects.>VC++Directories ·首先,从“Show Directories for”的list box中选择“Library files” ·单击“Insert New’’图标,定位安装OpenCV的文件夹 假设它安装于“C:LProgram Files\OpenCV” ·在库文件列表中,定位并添加: ”C:Wrogram Files\OpenCV\lib” ● 然后在list box中选择include文件,定位并添加以下路径: CAProgram Files\OpenCV\cv\include C:Wrogram Files\OpenCV、cxcorekinclude CAProgram Files\OpenCV\otherlibs\llighgui CAProgram Files\OpenCV\cvaux、Linclude C:\Program Files\OpenCV\otherlibs\cvcam\include ·接下来,选择list box中的source文件,定位并添加以下路径: CAProgram Files\OpenCV\cv\src C:Wrogram Files\OpenCV\cxcore\src C AProgram Files\OpenCV\cvauxLsrc C:Wrogram Files\OpenCV\otherlibs\highgui C:Wrogram Files\0lpenCV\0therlibs\cVc锄\src\、Ⅳindows 7 浙江大学硕士学位
论文 单击选项对话框的“OK” 现在就正确配置好了全局设置。
在VC.net中建立新工程以后,在工程设置里添加需要的OpenCV库,并在程序文件中包含OpenCV的头文件,就可以在Windows下面利用VC.net进行基于OpenCV的图像程序开发了。
在Linux和Debian/Ubuntu-F面如何进行安装和配置参考http://www.opencv.org.cn的介绍。
1.6本章小结 本章简要介绍了数字图像处理以及计算机视觉中的视频运动目标分析的应用范围、研究内容、研究目的和现状;介绍了由OpenCV这个
开源的计算机视觉软件开发包。
阐述了本文的研究目的、研究内容、创新点、研究方法和技术手段。
8 浙江大学硕士学位
论文 第二章图像预处理 数字图像处理是用计算机来处理所获取的视觉信息的技术【2J。
图像处理技术随着计算机的出现而诞生,近几十年来随着计算机技术的蓬勃发展,图像处理技术也得到了空前的发展和应用。
目前,图像处理技术已经广泛应用于工业、军事、医学、交通以及农业等各个领域。
主要包括: 办公室中的图像处理:例如对文本图像上文字的自动判别以及手写文字的直接识别等。
生物医学中的图像处理:在生物医学领域,很早就开始处理X射线照片和显微镜图片等大量图像。
染色体分析与细胞的自动分类研究,是图像处理最先进的领域。
另外,由于今年来科学技术的飞快发展,出现了可以把原来无法看到的物体图像化的方法,比如MRI和CT图像。
遥感:处理从人造卫星拍摄的图像,使资源信息和气象信息图像化,主要应用于农业、环境调查和城市规划等方面。
电视和电影中的图像处理:比如影视中的抠像、合成、校色以及特效处.
上一篇:
PHP读取MP3文件ID3标签信息
下一篇:
关于大学英语教学