基于OpenCV的计算机视觉技术研究与实现本科毕业论文(51页).doc
-基于OpenCV的计算机视觉技术研究与实现本科毕业论文-第 39 页毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日目 录摘 要IIIAbstractIV引 言1第一章 绪 论21.1 系统开发背景21.2 计算机视觉技术发展的历程21.3 计算机视觉图像分析技术31.4 计算机视觉国内外研究现状31.5 系统开发环境4第二章 定位与跟踪视线范围内运动状态物体方法62.1 定位视线内运动状态物体的方法62.1.1 常见的传统检测方法62.1.2 高斯混合背景建模法72.1.3 codebook算法82.2 跟踪视线内运动状态物体的方法82.2.1 基于光流跟踪算法82.2.2 卡尔曼跟踪算法92.2.3 粒子滤波跟踪算法102.2.4 长时间跟踪TLD算法122.2.5 压缩感知跟踪(CT跟踪)12第三章 软件平台143.1 OpenCV简介143.2 OpenCV中常用数据结构体系15第四章 图像处理174.1 彩色图像灰度化处理174.2 中值滤波处理184.2.1 中值滤波原理184.2.2 中值滤波特性184.3 二值化处理194.4 腐蚀与膨胀处理204.5 开运算和闭运算处理22第五章 混合高斯模型与压缩感知跟踪算法原理详解245.1 混合高斯模型原理245.1.1 混合高斯模型的建立245.1.2 混合高斯背景模型的更新265.1.3混合高斯背景模型算法的优缺点265.2 压缩感知跟踪(Compressive Tracker)275.2.1 压缩感知跟踪概述275.2.2 压缩感知跟踪的相关理论推导275.2.3 压缩跟踪算法31第六章 系统实现与结果326.1 视线检测的实现与结果326.2 视线追踪的实现与结果34结束语37参考文献38致 谢39附 录40摘 要计算机视觉技术就是利用了摄像机以及电脑拥有人类双眼所具有的分类、识别、追踪、判别决策等视觉功能。计算机视觉系统就是创建了能够在平面图像或者三维立体图像的数据中,以获取需要的信息的一个完整的人工智能系统。本文在研究了计算机视觉技术的基础上,针对于运动目标检测与跟踪在未来的发展,提出了一套基于OpenCV视觉库的检测、跟踪视线范围内动态物体的检测系统,以达到模拟人眼的识别、追踪、分类功能。动态目标检测与跟踪作为计算机视觉领域的一个重要部分,在工业、医疗保健、航空航天、军事等各个领域具有广泛的应用前景,一直受到广泛的关注,并成为计算机视觉领域的研究热点。本文在现有研究成果的基础上,对静态和动态场景下的运动目标检测与跟踪进行了深入的讨论。本文总结了计算机视觉技术的国内外发展的现状,深入研究了计算机视觉技术、图像分析处理技术、动态检测技术等相关资料。详细阐述了基于OpenCV的计算机视觉技术的动态物体检测系统的设计方案、工作原理、以及实现。其中着重讨论混合高斯背景模型与压缩感知算法的C+代码设计(结合OpenCV库)的实现,并通过采样视频给出了程序的运行结果以及说明算法的可行性。关键词:计算机视觉,目标检测,OpenCV,混合高斯背景模型AbstractComputer vision technology is the use of cameras and computer withclassification, human eyes have identification, tracking, visual function ofdecision. A computer vision system is created in the graphic or three-dimensional image data, to a complete artificial intelligence system to obtain required information. Based on the study of the computer vision technology, for moving target detection and tracking in the future development, and put forward a set ofdetection, detection system based on the OpenCV library visual tracking dynamicobjects within sight of, recognition, in order to simulate human tracking,classification function. Dynamic target detection and tracking is an important partin the field of computer vision, which has wide application prospect in the fields of industrial, medical, aerospace, military, has received the widespread attention,and becomes a hotspot in the field of computer vision. In this paper, based on the existing research results, the static and dynamic scenes of moving targetdetection and tracking is deeply discussed.This paper summarizes the current situation of the development of computervision technology at home and abroad, in-depth study of the computer vision technology, image processing technology, the dynamic detection technology and other relevant information.Expounds design, dynamic object detection system of computer vision technology OpenCV's working principle, and the realization based on. With the emphasis on the C+ code design of mixed Gauss background model and compressed sensing algorithm (with OpenCV Library) implementation, and by sampling the video gives running result of program and the feasibility that algorithm.Keywords: computer vision, moving object detection, OpenCV, mixed Gauss background model引 言随着计算机设备逐渐融入到社会生活的各个方面,利用计算机进行视觉和数字图像处理技术也日趋成熟,并在各个尖端的技术领域中早已崭露锋芒。计算机视觉(Computer Vision, CV)是一门研究如何让计算机达到人类那样“看”的学科。也就是用计算机来实现对客观世界的识别与理解,理解是指对被观察对象的形状、尺寸、离开观察点的距离、质地、运动特征(包括方向和速度) 等的理解,更准确点说,它是利用摄像机和电脑代替人眼使得计算机拥有类似于人类的那种对目标进行分割、分类、识别、跟踪、判别决策的功能。作为一个新兴学科,计算机视觉是通过对相关的理论和技术进行研究,从而试图建立从图像或多维数据中获取“信息”的人工智能系统。它是一门综合性的科学技术,主要包括计算机科学与工程、信号处理、物理学、应用数学与统计、神经生理学和认知科学等。随着日益发展成熟的计算机自身的视觉技术,以及日益显现的计算机视觉技术的光明未来,综合应用与计算机视觉技术的处理软件程序相继的研发,能够预期到期在现代以及未来的各个尖端的技术领域中将开拓出越来越大的应用市场。目前,计算机视觉技术已经应用在制造业、工业检验、文档分析、医疗诊断、军事目标跟踪、自主导航等系统当中。第一章 绪 论1.1 系统开发背景长期以来,计算机就像文盲一样,总是被动地接受键盘的输入信息,而不能主动的从现实世界中获取信息并智能的处理。人们为了让计算机实现看到这个世界并主动从这个世界寻找信息,因此发展了计算机视觉;为了让计算机实现自主处理和判断所得到的信息,因此发展了人工智能科学。可以说所有人都有这么一个期盼,人机之间的交流可以像人与人之间的交流一样畅通和友好。迄今为止,计算机视觉的发展已经历了一个漫长的过程。经过研究人员不懈努力,全新的信息技术和媒体手段的出现,使得更加有效和友好的人机交互方式得到了发展,新型的人机交互将不再依赖传统输入设备。计算性价比的提高与视频获取成本的降低,使计算机视觉系统能够向桌面级和嵌入式系统发展,这就意味着计算机视觉系统能够安装在一切电子系统之中。相信在不久的将来,拥有高级视觉系统的智能电子产品会给人们的生活带来更大的方便。 计算机视觉要处理的一个重要内容,就是对视线范围内物体运动的检测与跟踪。视频中的目标检测与跟踪是指计算机代替人眼进行对外界物体运动的感知和理解分析,从而利用这样的只能系统为人类生活工作提供便利。目前,运动目标检测与跟踪在医学研究、交通监视、客流量统计、天文观测等领域有着非常重要的实用价值,有着广阔的发展前景。因为它不但可以提供目标的运动轨迹,也为场景中运动目标的运动分析、场景分析提供了可靠的数据来源。1.2 计算机视觉技术发展的历程计算机视觉技术是在20世纪50年代从统计模式识别开始的。当时的工作主要集中在二维图像分析和识别上,如光学字符识别。工件表面、显微图片和航空图片的分析和解释等。60年代,Roberts(1965)通过计算机程序从数字图像中提取出诸如立方体、楔形体、棱柱体等多面体的三维结构,并对物体形状及物体的空间关系进行描述。到了70年代,已经出现了一些视觉应用系统。70年代中期,麻省理工学院(MIT)人工智能(AI)实验室正式开设“机器视觉”课程,由国际著名学者BKPHom教授讲授。80年代以来,计算机视觉的研究已经历从实验室走向实际应用的发展阶段。而计算机工业水平的飞速提高以及人工智能、并行处理和神经元网络等学科的发展,更促进了计算机视觉系统的实用化和涉足许多复杂视觉过程的研究。目前,计算机视觉技术正在广泛的应用于计算几何、计算机图形学、图像处理、机器人学等多个领域中。1.3 计算机视觉图像分析技术对于信息化的时代,人们早已经越来越注重于信息的处理与获取。图像分析和关于人的视觉的分析研究有着密切的关系,为了提高计算机视觉能力,就需要对人的视觉机制中的有些可辨识模块进行较为深入的分析研究。生活中,人们所看到的一切连续活动的场景,实际上就是一系列连续变化的模拟图像组成的。对于图像的分析其实质就是关注这些图像中的运动目标。因此,对于运动物体的研究方向也就慢慢衍生为检测、分析视频的序列图像中的运动物体。在数字图像处理技术和计算机视觉技术中,基于序列图像形成的视频图像的运动物体的分析研究是最为复杂的一个方向。其研究方向的实质是:针对连续的图像中,一帧帧图像的差分比较,提取出不同的部分,根据图像的分割技术,就可以提取出每帧图像的不同部分,即运动的物体,同时根据数学算法和函数就可以针对于运动目标进行识别和跟踪了。综上述以数字图像处理为基础,从而分析视频图像的运动的整个处理过程,涉及到了一些不同领域与科学。图像分析一般划分为四个主要的过程:1、传感设备的输入;2、目标物体的分割;3、目标物体的识别;4、解释识别所得到的信息。1.4 计算机视觉国内外研究现状计算机视觉技术属于人工智能领域中的一个分支,是一门通过对图像或者视频的处理从而是使得计算机具备人眼“看”的能力的学科。为了有效的完善计算机对数据处理已经应用的能力,人们开始研究计算机视觉技术,从最初的人工智能的子方向,计算机视觉技术作为一个完整的研究领域已经活跃了长达40年之久。近几年来研究人员已经渐渐将研究的重点从图像中的静态目标慢慢过渡到了复杂环境中的动态目标序列上面。对于这方面的研究和发展,已经广泛的应用于控制系统中的视频检测系统、视频编解码技术、军事上的制导、雷达视频图像中的目标分析等等。在当今对于图像处理,视频中动态物体的检测技术中,存在的主要问题有:(1) 在采集到的图像信息中,对于想要检测的目标物总不能避免地出现相互遮挡的现象,从而导致了获取到不完整的目标信息,这样的结果就给只能通过结合图像信息来识别世界的人工智能技术带来了一定困扰。(2) 在简单场景下,分析目标物体是相对比较简单的。但是在复杂的背景下,需要提高检测目标物体的精确性,以及检测的数学算法的鲁棒性、实时性。(3) 对于实时采集到的图像信息,所具有的原始数据极其丰富,因为采集的时间间隔非常小,所以图像相邻帧之间有很强的相关性,利用好这个关键点,对于提高整个检测、跟踪系统的效率极其具有实际意义。(4) 随着图像处理技术的提高,将采集到的图像信息创建成3D场景,复原真是的场景,对于目标物体的分析、处理、跟踪技术都将会有很大的帮助。针对于计算机视觉技术广阔的发展前景,很多发达国家都早已瞄准了这个应用市场,并且开展了大量的相关技术项目的开发和研究。Microsoft,IBM,EMITALL,CMU等尖端公司包括知名技术性的实验室近年来都投入了大量的人力和物力致力于研发人工智能的监控系统,并且开始造福于人类。国内的研发机构与人员也开展了对于计算机视觉技术的研究。目前处于领先地位的是中国科学院北京自动化研究所下属的模式识别国家重点实验室。研究的主要方向为复杂环境中的运动物体的跟踪算法以及模型定位。1.5 系统开发环境本系统是在Windows 平台上使用VS2010,综合运用计算机视觉技术、数字图像处理技术,基于OpenCV 设计实现运动物体检测与跟踪系统。Visual C+是Microsoft 公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。OpenCV(Open Source Computer Vision Library)由Intel公司在背后提供支持(本系统使用的是OpenCV-2.4.8版本)。它包含了超过500个函数来实现用于图形处理和计算机视觉方面的通用算法。OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。OpenCV包括以下几个模块,具体功能是:1、CV:主要的OpenCV函数;2、CVAUX:辅助的(实验性的)OpenCV函数。3、CXCORE:数据结构与线性代数支持;4、HIGHGUI:图像界面函数;5、ML:机器学习,包括模式分类和回归分析等;6、CVCAM :负责读取摄像头数据的模块(在新版本中,当HIGHGUI模块中加入DirectShow 支持后,此模块将别废除)。HALCON源自学术界,它有别于市面一般的商用软件包。事实上,这是一套image processing library,由一千多个各自独立的函数,以及底层的数据管理核心构成。其中包含了各类滤波,色彩以及几何,数学转换,型态学计算分析,校正,分类辨识,形状搜寻等等基本的几何以及影像计算功能,由于这些功能大多并非针对特定工作设计的,因此只要用得到图像处理的地方,就可以用HALCON强大的计算 分析能力来完成工作。应用范围几乎没有限制,涵盖医学,遥感探测,监控,到工业上的各类自动化检测。MATLAB: MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。第二章 定位与跟踪视线范围内运动状态物体方法定位与追踪视线范围内运动状态物体顾名思义是让计算机模拟人类眼睛视觉对物体的观察、定位并追踪的能力。这种情况下一般使用单个固定的摄像机对场景进行拍摄。定位运动状态物体即对于视线范围中运动物体的检测,主要措施分为两种:宏观检测法以及微观检测法。时下应用较为广泛的是背景差法、帧间差分法以及综合法。2.1 定位视线内运动状态物体的方法2.1.1 常见的传统检测方法(1) 背景差分法:原理是实时输入的图像与背景进行比较,能完整快速地分割出运动图像。其不足之处是易受光线变化影响,背景的更新是关键。不适用于摄像头运动的情况。(2) 连续帧间差分法:受光线变化影响较小,简单快速,但不能分割出完整的运动对象,需进一步运用目标分割算法。还有一些改进的算法,主要致力于减少光照影响和检测慢速物体变化。(3) 光流法:光流法的概念:图像中模型运动的速度,拟定其一种2D的瞬时速度场。其实2D速度矢量就是可见的3D速度矢量在平面上的一个投影,给图像中的每个像素一个速度的矢量,从而形成一个图像的运动场,每时每刻图形上的点都与3D立体物体上的点一一对应,即投影关系就是2D转换到3D的两者间的关系,根据速度矢量的特征,从而分析动态情况。在整个图像中,光流失量其实是连续变化的,一但返现速度矢量出现了不连续,有断裂的情况,那么就可以得出运动物体的位置。2.1.2 高斯混合背景建模法高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。对图像背景建立高斯模型的原理及过程:图像灰度直方图反映的是图像中某个灰度值出现的频次,也可以认为是图像灰度概率密度的估计。如果图像所包含的目标区域和背景区域相比比较大,且背景区域和目标区域在灰度上有一定的差异,那么该图像的灰度直方图呈现双峰-谷形状,其中一个峰对应于目标,另一个峰对应于背景的中心灰度。对于复杂的图像,尤其是医学图像,一般是多峰的。通过将直方图的多峰特性看作是多个高斯分布的叠加,可以解决图像的分割问题。在智能监控系统中,对于运动目标的检测是中心内容,而在运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。而建模正是背景目标提取的一个重要环节。首先要提起背景和前景的概念,前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。即利用当前帧和视频序列中的当前背景帧进行加权平均来更新背景,但是由于光照突变以及其他外界环境的影响,一般的建模后的背景并非十分干净清晰,而高斯混合模型是是建模最为成功的方法之一。混合高斯模型使用K(基本为3到5个)个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后更新混合高斯模型,用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点,否则为前景点。通观整个高斯模型,主要是有方差和均值两个参数决定,对均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性。由于是对运动目标的背景提取建模,因此需要对高斯模型中方差和均值两个参数实时更新。为提高模型的学习能力,改进方法对均值和方差的更新采用不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立背景图像并实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。到这里为止,混合高斯模型的建模基本完成。最后归纳一下其中的流程,首先初始化预先定义的几个高斯模型,对高斯模型中的参数进行初始化,并求出之后将要用到的参数。其次,对于每一帧中的每一个像素进行处理,看其是否匹配某个模型,若匹配,则将其归入该模型中,并对该模型根据新的像素值进行更新,若不匹配,则以该像素建立一个高斯模型,初始化参数,代理原有模型中最不可能的模型。最后选择前面几个最有可能的模型作为背景模型,为背景目标提取做铺垫。2.1.3 codebook算法该算法为图像中每一个像素点建立一个码本,每个码本可以包括多个码元,每个码元有它的学习时最大最小阈值,检测时的最大最小阈值等成员。在背景建模期间,每当来了一幅新图片,对每个像素点进行码本匹配,也就是说如果该像素值在码本中某个码元的学习阈值内,则认为它离过去该对应点出现过的历史情况偏离不大,通过一定的像素值比较,如果满足条件,此时还可以更新对应点的学习阈值和检测阈值。如果新来的像素值对码本中每个码元都不匹配,则有可能是由于背景是动态的,所以我们需要为其建立一个新的码元,并且设置相应的码元成员变量。因此,在背景学习的过程中,每个像素点可以对应多个码元,这样就可以学到复杂的动态背景。2.2 跟踪视线内运动状态物体的方法2.2.1 基于光流跟踪算法流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。其计算方法可以分为三类:(1)基于区域或者基于特征的匹配方法;(2)基于频域的方法;(3)基于梯度的方法;简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。光流法的前提假设:(1) 相邻帧之间的亮度恒定;(2) 相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;(3) 保持空间一致性;即,同一子图像的像素点具有相同的运动。光流法用于目标跟踪的原理:(1) 对一个连续的视频帧序列进行处理;(2) 针对每一个视频序列,利用一定的目标检测方法,检测可能出现的前景目标;(3) 如果某一帧出现了前景目标,找到其具有代表性的关键特征点(可以随机产生,也可以利用角点来做特征点);(4) 对之后的任意两个相邻视频帧而言,寻找上一帧中出现的关键特征点在当前帧中的最佳位置,从而得到前景目标在当前帧中的位置坐标;(5) 如此迭代进行,便可实现目标的跟踪。2.2.2 卡尔曼跟踪算法Kalman滤波理论主要应用在现实世界中个,并不是理想环境。主要是来跟踪的某一个变量的值,跟踪的依据是首先根据系统的运动方程来对该值做预测,比如说知道一个物体的运动速度,那么下面时刻它的位置按照道理是可以预测出来的,不过该预测肯定有误差,只能作为跟踪的依据。另一个依据是可以用测量手段来测量那个变量的值,当然该测量也是有误差的,也只能作为依据,不过这两个依据的权重比例不同。最后Kalman滤波就是利用这两个依据进行一些列迭代进行目标跟踪的。在这个理论框架中,有两个公式一定要懂,即: (2.2.1) (2.2.2)第一个方程为系统的运动方程,第二个方程为系统的观测方程,学过自控原理中的现代控制理论的同学应该对这2个公式(2.2.1与2.2.2)很熟悉。下面来看看使用Kalman编程的主要步骤:(1)Kalman这个类需要初始化下面变量: 转移矩阵,测量矩阵,控制向量(没有的话,就是0),过程噪声协方差矩阵,测量噪声协方差矩阵,后验错误协方差矩阵,前一状态校正后的值,当前观察值。(2)调用Kalman这个类的predict方法得到状态的预测值矩阵,预测状态的计算公式如下:(2.2.3)其中x(k-1)为前一状态的校正值,第一个循环中在初始化过程中已经给定了,后面的循环中Kalman这个类内部会计算。A,B,u(k),也都是给定了的值。这样进过计算就得到了系统状态的预测值x'(k)了。(3)调用Kalman这个类的correct方法得到加入观察值校正后的状态变量值矩阵,其公式为: (2.2.4)其中x'(k)为步骤二算出的结果,z(k)为当前测量值,是我们外部测量后输入的向量。H为Kalman类初始化给定的测量矩阵。K(k)为Kalman增益,其计算公式为(2.2.5)计算该增益所依赖的变量要么初始化中给定,要么在Kalman理论中通过其它公式可以计算。经过步骤三后,我们又重新获得了这一时刻的校正值,后面就不断循环步骤二和步骤三即可完成Kalman滤波过程。2.2.3 粒子滤波跟踪算法粒子滤波的核心思想是随机采样与重要性重采样。首先肯定不知道目标在哪里,那就随机的撒粒子。撒完粒子后,根据特征相似度计算每个粒子的重要性,然后在重要的地方多撒粒子,不重要的地方少撒粒子。所以说粒子滤波较之蒙特卡洛滤波,计算量较小。这个思想和RANSAC算法真是不谋而合。RANSAC的思想也是(比如用在最简单的直线拟合上),既然不知道直线方程是什么,那就随机的取两个点先算个直线出来,然后再看有多少点符合这条直线。哪条直线能获得最多的点的支持,哪条直线就是目标直线。具体地流程如下:(1)初始化阶段-提取跟踪目标特征该阶段要人工指定跟踪目标,程序计算跟踪目标的特征,比如可以采用目标的颜色特征。具体到Rob Hess的代码,开始时需要人工用鼠标拖动出一个跟踪区域,然后程序自动计算该区域色调(Hue)空间的直方图,即为目标的特征。直方图可以用一个向量来表示,所以目标特征就是一个N*1的向量V。(2)搜索阶段-放小白鼠(为了方便模拟,所以以小白鼠作为粒子)已经掌握了目标的特征,下面放出很多只小白鼠,去搜索目标对象,这里的小白鼠就是粒子particle。小白鼠有很多种放法。比如,a)均匀的放:即在整个图像平面均匀的撒粒子(uniform distribution);b)在上一帧得到的目标附近按照高斯分布来放,可以理解成,靠近目标的地方多放,远离目标的地方少放。Rob Hess的代码用的是后一种方法。小白鼠放出去后,每只小白鼠怎么搜索目标呢?就是按照初始化阶段得到的目标特征(色调直方图,向量V)。每只小白鼠计算它所处的位置处图像的颜色特征,得到一个色调直方图,向量Vi,计算该直方图与目标直方图的相似性。相似性有多种度量,最简单的一种是计算sum(abs (Vi - V)。每只小白鼠算出相似度后再做一次归一化,使得所有的小白鼠得到的相似度加起来等于1.(