基于模板匹配的目标跟踪技术研究与实现论文_第1页
基于模板匹配的目标跟踪技术研究与实现论文_第2页
基于模板匹配的目标跟踪技术研究与实现论文_第3页
基于模板匹配的目标跟踪技术研究与实现论文_第4页
基于模板匹配的目标跟踪技术研究与实现论文_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机科学与技术学院毕业设计(论文)论文题目基于模板匹配的目标跟踪技术研究与实现 指导教师职 称讲师学生姓名学 号专 业网络工程班 级系 主 任院 长起止时间2013年10月11日至2014年5月23日 2014年5月23日目 录第一章 绪论11.1研究背景与意义11.1.1 研究背景11.1.2 研究意义21.2 发展和研究现状31.2.1 基于灰度信息的模板匹配算法31.2.2基于几何特征的模板匹配算法41.3 本章小结5第二章 OpenCV视觉库简介62.1 OpenCV简介62.2 OpenCV关键技术介绍62.2.1 OpenCV 命名规则72.2.2 OpenCV 的基本数据类型8

2、2.3 OpenCV图像/视频处理流程102.3.1 OpenCV 图像处理流程102.3.2 OpenCV 视频处理流程122.4 本章小结13第三章 模板匹配143.1模板匹配143.2模板匹配算法介绍143.2.1 模板匹配算法简要框图153.2.2 相似性度量163.3.3搜索策略173.3本章小结19第四章 基于模板匹配的目标跟踪204.1模板匹配跟踪算法204.2 评判算法的标准224.3 模板匹配跟踪算法缺陷234.4改进的模板匹配算法244.4.1 算法加速244.4.2 角度匹配254.4.3 位置角度匹配算法264.5 操作界面介绍以及实验结果分析274.5.1操作界面介绍

3、274.5.2结果对比分析314.6本章小结32总结33参考文献34谢 辞36基于模板匹配的目标跟踪技术研究与实现 摘要:视频目标跟踪是计算机视觉领域中一个非常活跃的研究领域,近年来已经逐渐成为学者们研究的热点。本文主要对模板匹配算法在目标跟踪领域中的应用进行研究,并对跟模板匹配目标跟踪相关的一些技术问题进行了深入的探讨。在Visual studio 2008开发环境下结合MFC和开源计算机视觉库(Open Computer Vision,OpenCV)用程序语言实现基于模板匹配的目标跟踪算法,并在图像序列上对模板匹配跟踪算法在降低复杂度和抗目标旋转方面的有效性进行了验证。 关键词:Visua

4、l studio 2008;OpenCV;模板匹配;角度旋转匹配;目标跟踪 Design and Implementation of Template matching and tracking by using OPENCVAbstract: Video object tracking is a very active field of research in the field of computer vision, in recent years has gradually become the focus of the researchers. This paper mainly st

5、udies the matching algorithm in the field of target tracking on the template, and the template matching target tracking with some related technology problems are discussed. The combination of MFC and open-source computer vision library in Visual studio2008 development environment (Open Computer Visi

6、on, OpenCV) tracking algorithm for template matching based object language, and matching tracking algorithm is verified effective in lowering the complexity and anti rotation target template in image sequences.Key words: Visual studio 2008; OpenCV; template matching; rotation matching;Object trackin

7、g第一章 绪论1.1研究背景与意义1.1.1 研究背景伴随着信息技术的发展,军事、航空、工程、航天等与计算机息息相关的领域也有了巨大的发展和进步,谈到这些领域,自然就会想到图像目标跟踪技术计算机图像处理技术与计算机视觉技术的重要组成部分之一。一般情况下,目标表示和目标定位、信息的过滤和数据关联两个部分就能够构成一个典型的目标跟踪系统。显然,这两个部分是分工合作的,目标表示和目标定位自下而上处理表面变化,而信息的过滤和数据关联自上而下处理目标动态变化。系统的稳定和有效性跟这两个独立的部分直接相关。每种跟踪系统的侧重点都是不同的,有些侧重于对象表示而非目标的动态变化,比如公共场所的面部跟踪;有些目

8、标的运动和摄像机本身的运动,比如空中视频监控系统。怎样在现实中很多更复杂的场景中让两者结合更好的结合是我们需要研究的重要课题。而其关键在于精确的分割、提取和识别。同时,完成算法所需要的时间也是需要纳入考虑因素中的。错综复杂的数据的模糊性和不确定性是对目标跟踪技术的要求越来越高的原因。基于运动分析方法与基于图像匹配方法是目前目标跟踪方法的两大类。两种方法各有优势。运算速度快、易于硬件实现是基于运动分析方法的优点。另一方面,在处理目标平移运动性能、对图像噪声处理以及结果与旋转尺度的相关性方面,基于图像匹配方法处理的更好,它的劣势是复杂背景时目标遮挡处理不够理想。模板匹配,顾名思义,是获得固定或者变

9、化的模板之后,经过一定的公式计算相似度,然后对比相似度的大小,在所搜寻的场景或者图像中找到物体的方位以及旋转角度。换句话说就是通过匹配的程度来跟踪已知特征的物体。作为一个当代信息社会的关键计算机图像处理技术,模板匹配可以应用的领域很多,所以自然会成为这些年来学者们所研究的热点。而根据该技术在应用过程中本身所获取的信息的异同,可以分为两种情况:一种是比较两幅图像的异同,这两幅图像可能是来自不同的图像摄入源也可能是来自通一个图像摄入源头的不同过的拍摄角度,通过比较确定它们之间存在的联系,为技术处理的下一步做相应的就绪准备;第二种是已有信息是给定的模板,在相对于模板来说更大的范围中即为搜索图像中找到

10、模板中物体的方位。目前这项技术已经在医学、军事等领域有了关键应用。比如,巡航导弹制导中,飞行器就是通过已经储存在它的计算机中的目标位置的模板,在其搜索图像中,也就是飞行器在飞行过程中所摄取的地面图像中,利用模板匹配技术,找到目标位置,然后进行摧毁。1.1.2 研究意义目标跟踪,就是运用各种手段实现主体对其关注的运动客体之状态建模、估计以及跟踪等的过程。而能够在图像信号中自动识别出目标,并且提取目标位置等信息,然后能自动跟踪目标运动的技术,称为目标跟踪技术。虽然很早学者们就提出了基于模板匹配的图像搜索,但由于机器的落后,数据处理的速度以及方法的问题等等,一直到七八十年代该技术才开始步入正轨。大致

11、来说,根据所依赖的特征的不同,该算法分为两大类,基于灰度以及基于几何。基于灰度的算法是以模板与搜索图像的灰度的相关系数作为判定标准,来判断模板中的物体是否在所搜索的图像中,同时确定该物体的位置。理论上来说就是在搜索区域移动一个固定大小的窗口,平移的过程就是记录窗口中所包含的图像内容的过程,每平移一次,就计算一次窗口当前包含的内容与模板的相似度并记录,然后比较得出最大的那个相似度,然后得到所需要的结果。这种方法在实现过程不受较大干扰的时候,结果是比较精确的。而且所需要的图像特征并不需要通过图像预处理,也就不需要承担这个过程所带来的误差。但是这类算法的缺点也是显而易见的,对外界的干扰,如光照、噪声

12、等没有什么抵抗能力,同时对于缩放、旋转了的图像,处理起来也没有让人满意的结果。有明确的数据表示,当被搜索区域的图像旋转大于5°时,此算法的运行结果就会有很大的误差。第二种是基于几何特征的。这种算法首先会要进行图像的预处理,比如提取图像的边缘信息等,然后把提取出的数据作为待匹配的向量,计算模板与所搜索区域的图像的相似度。该算法由于提取了一些偏向于数据化的特征并统计出来,因而对于物理上的一些特征的稳定性要求就不会那么高,如灰度变化,噪声等。甚至存在被搜索图像有被遮挡的地方的情况下,还是可以的到数据结果。该算法还有一个显而易见的优点就是,可以处理缩放和旋转这样的复杂情况。但是可以处理复杂情

13、况的算法相对于上一种算法来说,复杂度大,难度也大,耗费的时间也更长。所以,如何研究出精确可靠但同时又拥有着快速高效的特点的该类算法,是研究者们所面临的一个急需要攻克的一个课题。时代在不断进步,人们对于机器视觉的需求也在增加,而图像数据像一个无边无际的海洋,庞大到限制了模板匹配的发展,因而开发出一种高精度并且能够满足现代人们快速达到需求的高速的模板匹配算法具有很重要的现实意义。1.2 发展和研究现状作为图像信号处理中经常用到的技术,模板匹配应用到了很多工业生产应用中的检测和监控上。模板匹配算法由以下四个要素组成:第一,特征空间,即为用于进行匹配时从模板中提取出的作为标准的信息。第二,被搜索空间,

14、即为相对于模板来说更大的图像信息的集合。第三,搜索策略,即为在被搜索空间中如何选择下一次匹配的过程。第四,相似度矩阵,即为匹配后计算所得相似度所组成的矩阵。现在已经存在的模板匹配算法有很多种,主要都旨在提高算法的准确度和速度。下面对之前所述的两类匹配算法的简单总结。1.2.1 基于灰度信息的模板匹配算法 基于灰度的模板匹配算法是在上个世纪的70年代在军事领域中最先发展起来的,最先运用于军用的飞行器的导航系统中,由于发展的时间相对来说比较长,相关理论研究和技术已经发展的比较纯熟,学者们提出的算法也很多,其中有三个比较经典,MAD 算法 、SSDA 序贯相似性算法以及NCC归一化相关算法。后两种算

15、法是由 Silverman 和 Barnea DI 两位学者一起在不同的时间提出的,第一种是由Leese 提出的。然而这些算法在理论上来说虽然已经发展的比较成熟,实际应用中却不然,由于精度和复杂度上的一些问题,很少被实际应用。在这两个缺点上,有研究者提出了一些改进的方法来提高计算的效率,缩短匹配需要消耗的时间,主要的两种方法分别为精简搜索空间中需要匹配的对象和减少算法中所运用的相似函数的运算量。其中有显著成效的是由Farhan Ullah 提出的将图像的灰度信息进行编码然后再进入到匹配过程的算法,该算法在计算速度上有了很大的提升,但是缺点也很明显,只可以在矩形图像中运用,而且对于外界自然因素的

16、干扰没有什么抵抗力如光照,因而也很少在实际中应用到。1.2.2基于几何特征的模板匹配算法由于模板和在被搜索图像的目标之间不仅仅存在灰度的差异问题,缩放比例和旋转角度也是图像对比中经常存在的差异数据的来源,基于几何的匹配算法因而诞生。此类算法多种多样,与数学数量的变换息息相关,如傅里叶变换,直方图统计,K-L变换,图像距等。由于1996年B. Srinivasa Reddy 和 B.N. Chatterji 提出的数极坐标的相关变换,把在一定条件下的图像缩放和旋转转化成了数极的平移,傅里叶变换,从本来只可以处理图像的平移问题进而进步到处理旋转角度和缩放比例,计算之后调整模板,然后在利用调整之后的

17、模板在搜索图像中定位。2000年的时候罗成平提出的K-L 变换算法,主要利用多位正交变化函数上投影,获得图像统计性的特征。另外还有一种方法是用角度直方图相关的计算方法来衡量相似性的,这种方法可以在相对旋转角度比较大的情况下,对旋转的角度进行估计,之后对模板进行相应的角度变化,再开始平移匹配。角点信息是基于几何的匹配中应用相对来说较为频繁的一种,该信息所属方法的基本依据是在模板和被搜索图像中提取出角点,得到两组角点集合,将其分别命名为,之后对中的角点两两进行距离匹配,若,有 并且,则认为两个角点匹配,否则匹配失败 。角点匹配结束后,还要去掉那些未出现在正确匹配区域中的匹配点,实现该步骤过程中用的

18、比较多的方法是 RANSAC 算法。相对其它讨论的比较少的方法来说,对于角度检测以及匹配方面研究者们现如今已有了全面的研究和讨论,此类方法最明显的劣势就是太费时间,不太适用于要求高效率的实时匹配。 提高运算速度依然是研究者们对于该类方法研究的重点和难点,相对来说,精确度方面该方法已经有了保证,如何提高实时性,是目前所要攻克的一大难题。 而如何运用高效且精确的模板匹配进行目标跟踪,也是计算机图像技术现如今研究的重点。1.3 本章小结本章节重点介绍了模板匹配算法以及目标跟踪技术的研究意义以及发展状况,并阐述了基于模板匹配的目标跟踪的重要意义。随着时代的进步,算法和技术都有了很大的提升,而根据所依赖

19、的特征的不同,本章简单的介绍了模板匹配算法的两大类,第一,基于灰度信息的模板匹配算法;第二,基于几何特征的模板匹配算法。正是对这些的了解,为以后的实验过程提供了良好的理论基础。第二章 OpenCV视觉库简介本文主要在Visual Studio 2008 环境下基于MFC和开源计算机视觉库(OpenCV)来实现并改进的基于模板匹配的目标跟踪算法,因此我们要简单的介绍一下OpenCV视觉库。2.1 OpenCV简介OpenCV 是一个开源计算机视觉库, Intel 在1999 年将其建立,目的是建造这样一个简单而且容易使用过的关于计算机视觉的代码框架,用来帮助这方面的开发人员在此框架的基础上写出更

20、复杂的能够运用到实际应用中的计算机视觉相关的应用程序。作为一个开放源代码的应用平台 ,加上计算机视觉涉及到众多领域并且受到众多科研人员和学者的偏爱,OpenCV,得以迅速发展,衍生了很多的技术特点。OpenCV 是一个由其开发公司支持的开源的计算机视觉库、有300 多个 C 函数的跨平台中层和高层 API包含其中。OpenCV 不但包括了数组、矩阵等基本结构,而且也包含了很多的相对来说比较繁杂的视觉函数。OpenCV的平台无关性。OpenCV 开发程序能够在多平台之间移植,不需要修改代码。例如 HP、 Unix 、Windows、Linux、solaris、MacOSX平台。程序运行的实时性。

21、程序调试后编译成为二进制的可执行文件,提高程序的运算速度,满足程序的实时性要求。OpenCV 的程序兼容性。OpenCV 提供 MATLAB、Python、Ruby等语言接口,实现不同软件之间的兼容,完善计算机视觉和图像处理方面的很多算法。总而言之, OpenCV的应用领域广泛,在目标检测与跟踪、图像处理和模式识别中特别突出。2.2 OpenCV关键技术介绍OpenCV 的主体分为了五个模块,核心函数库 Cv、数据结构与线性代数库 CxCore、辅助函数库 CvAux、函数库 HighGUI、机器学习函数库 ML,四个模块如下图所示。Cv 模块包含了基本图像处理函数和高级计算机视觉的算法。Hi

22、ghGUI 这个模块包含有图像和图像的集合视频的输入输出的函数,为使用此模块的用户提供图形用户接口。ML 是机器学习库。CxCore 提供了所有 OpenCV 运行时的最基本的数据结构和基本函数。CvAux 模块不包含在图 2.1 的基本结构体系中,该模块存放即将被淘汰或新出现的算法、函数。图 2.1 OpenCV 的基本结构2.2.1 OpenCV 命名规则1、函数名 通用函数名 cvActionTargetMod( ) Action是核心功能(core functionality)、Target是目标图像区域(target image area) 、Mod为可选的调整语(optional

23、modifiers)。 常遇到的状况有 cvActionTarget()、cvTarget()、cvMethod()、cvActionMethod()四种。 cvActionTarget()类型如 cvCreateImage(),cvNamedWindow()。 cvTarget()类型的非常常见,如 cvMat(),cvSize(),cvPoint()。 cvMethod()类型比较常用的是算法或某方法,如 cvDCT()离散余弦变换算法。 cvActionMethod()的类型如 cvFindContours()轮廓搜寻算法 。 此外也有例外,如:DoubleClickedMouse()。

24、2、矩阵数据类型结构如下:CV_<bit_depth>(S|U|F)C<number_of_channels>,其中S为符号整型,U为无符号整型,F则为浮点型。比如: CV_16UC1指的就是16 位的无符号的整型的单通道矩阵;CV_64FC2 指的就是64 位的浮点型的双通道矩阵。3、 图像数据类型结构如下: IPL_DEPTH_<bit_depth>(S|U|F),其中S 为符号整型,U 为无符号整型,F 为浮点型。比如:IPL_DEPTH_16U 图像像素数据值得就是16位的无符号的整型。2.2.2 OpenCV 的基本数据类型1、基本数据类型Open

25、CV 视觉库提供了多种基本数据类型。如 CvPoint、CvSize、CvRect 和CvScalar。而在以上提到的这些数据类型当中,CvPoint 这个数据类型最为简单。CvPoint是一个包含 了int 整型成员 x、y 的简单的结构体。另一个数据类型与 CvPoint 非常相似,即为CvSize 这个包含 int 型成员 width和 height 的简单结构体。CvRect 类型则是派生于 CvPoint 和 CvSize 类型的复合类型,包含 了4 个数据成员:width 和 height、还有x和y。下一个 是CvScalar ,CvScalar类型拥有着一个单独成员 val 和

26、 4 个都为整型成员,其中的单独成员是一个指向着4 个双精度的浮点数组成的数组的指针。2、CvMat 数据结构图 2.2 CvArr、CvMat 和 IplImage 之间派生关系OpenCV 虽是用C 语言实现的,但是它的结构还是遵循面向对象的思想设计。如上图 2.2,IplImage 由 CvMat 派生,而 CvArr 派生了CvMat 。CvArr*是 一种独特结构。而CvMat 是OpenCV 在运用过程中常用的矩阵。IplImage 为 OpenCV 所有的图像编码的基本结构。CvMat 矩阵结构简单,由类型(type)、行数据长度(step)、宽度(width)、高度(heigh

27、t)和一个指向着数据的指针构成。作为OpenCV中的重要的矩阵变换函数,CvMat使用方法是CvMat* cvCreateMat ( int rows, int cols, int type ); 预定义类型的结构如下:CV_<bit_depth> (S|U|F)C<number_of_channels>。矩阵的元素能够是32位的浮点型的数据(CV_32FC1),或是无符号 8位的三元组整型的数据(CV_8UC3), 异或是无数其他类型元素。一个CvMat元素它不一定非得是一个单一的数字。在矩阵中可以由单一输入来表示多个数值,这样的话我们就能够在一个三原色的图像上描绘多

28、重的色彩通道。CvMat 结构:typedef struct CvMatint type; int step; /类型,行数据长度int* refcount; /仅供内部使用int hdr_refcount;unionuchar* ptr; short* s; int* i;float* fl; double* db; data;unionint rows; int height; /排、高度;unionint cols; int width; /列、宽度; CvMat;3、IpLImage 数据结构OpenCV 中所有图像都采用了同一结构,事实上,IplImage 是借鉴了 Intel公司在

29、早期公布的 IPP 图像处理开发包中对于相关结构的定义。因为OpenCV主要针对计算机视觉方面的处理,所以,在这个函数库中,IplImage结构是最为关键重要的结构体。IplImage结构源自Intel的另一函数库Intel Image Processing Library (IPL)。IplImage结构定义如下:typedef struct _IplImageint nSize; /* 大小 */int ID; /* 版本 */int nChannels; /* 通道 */int alphaChannel; int depth; /* 像素的位深度 */char colorModel4;

30、char channelSeq4; int dataOrder; int origin; /*原点位置*/int align; /*行排列方式 */int width; /* 宽像素数 */int height; /* 高像素数*/struct _IplROI * roi; /* 图像感兴趣区域*/struct _IplImage * maskROI; /* NULL */void * imageId; /* NULL */struct _IplTileInfo * tileInfo; /* NULL */int imageSize; /* 数据大小*/char * imageData; /*

31、 指向排列的图像数据 */int widthStep;/* 排列的图像行大小*/int BorderMode4; int BorderConst4;char *imageDataOrigin; IplImage;IplImage是整个OpenCV函数库的基础,在定义该结构变量时会用到函数cvCreatImage。2.3 OpenCV图像/视频处理流程2.3.1 OpenCV 图像处理流程使用OpenCV来处理数字图像其流程包括如图2.3所示的四个基本过程:(1)加载需要处理的图像,这可以使用函数cvLoadImage实现;(2)使用图像处理算法对图像进行处理,OpenCV提供了很多图像处理算法

32、,比如边缘检测、图像旋转等等,但有些算法需要自己编写;(3)对图像处理的结果进行可视化显示或保存,可使用cvShowImage函数对处理结果进行显示和使用cvSaveImage函数将结果图像保存到相应位置;(4)卸载加载的图像,这可以用函数cvReleaseImage进行实现。如下的示例代码是使用OpenCV读取保存在指定位置的图片,把它转化成灰度图像后对处理结果进行显示和保存。从这个实例我们可以看出:使用OpenCV可以很简单的实现对图像数据的读取操作和显示保存操作。图 2.3 OpenCV图像处理基本流程IplImage* colorImg = NULL; /定义IplImage型变量Ip

33、lImage* grayImg = NULL;colorImg = cvLoad(“D:test.jpg”); /加载图像grayImg=cvCreateImage(cvGetSize(colorImg),colorImg->depth,1); /创建灰度图像cvCvtColor(colorImg, grayImg, CV_RGB2GRAY); /转化为灰度图像cvNamedWindow (“处理结果”, 1); /定义窗口用于显示结果cvShowImage(“处理结果”, grayImg); /在窗体上显示处理结果cvSaveImge(“D:gray.jpg”, grayImg); /

34、将显示结果进行保存cvReleaseImg(&grayImg); /卸载图像2.3.2 OpenCV 视频处理流程视频是由一帧帧的图像构成的,对于视频的处理可以转化成对于一系列图像的处理,一般可按如图2.4所示的基本过程来实现:(1)加载需要处理的视频文件,对于avi视频文件可使用函数cvCaptureFromFile来加载,如果要从摄像头实时捕获视频则要用函数cvCreateCameraCapture来创建摄像头;(2)使用cvQueryFrame从前面已经创建的Capture中抓取一帧图像,如果抓取不成功则说明视频处理完备,此时要用函数cvReleaseCapture卸载视频文件,

35、否则对所抓取的图像进行所要求的处理;(3)对图像处理的结果进行可视化显示或保存,可使用cvShowImage函数对处理结果进行显示和使用cvSaveImage函数将结果图像保存到相应位置,此外还可以使用cvWriteFrame函数把所有处理的结果保存成一个AVI视频文件;(4)卸载加载的图像,这可以用函数cvReleaseImage进行实现。图 2.4 OpenCV视频处理基本流程如下的示例代码是使用OpenCV从摄像头或者视频文件捕获视频流数据,把它转化成灰度图像后对处理结果进行显示和保存。从这个实例我们可以看出:使用OpenCV可以很简单的实现对视频数据的读取操作和显示保存操作。CvCap

36、ture* pCapture = NULL;/定义cvCapture结构pCapture = cvCreateCameraCapture(0); /从摄像头获取视频流/pCapture = cvCaptureFromFile(“D:xiexin.avi”); /从AVI视频文件获取视频流IplImage* colorImg = NULL; /定义IplImage型变量IplImage* grayImg = NULL;CvVideoWriter* pVideoWriter = NULL;int N = 0;while(1) N+; colorImg = cvQueryFrame(pCapture

37、); /抓取一帧图像if(N=1) pVideoWriter =cvCreateVideoWriter("camera.avi", CV_FOURCC('X', 'V', 'I', 'D'), 25,cvSize(colorImg->width,colorImg->height); if (colorImg = NULL) break; /抓取失败就退出grayImg=cvCreateImage(cvGetSize(colorImg),colorImg->depth,1); cvCvtColo

38、r(colorImg, grayImg, CV_RGB2GRAY); /转化为灰度图像cvNamedWindow (“处理结果”, 1); /定义窗口用于显示结果cvShowImage(“处理结果”, grayImg); /在窗体上显示处理结果cvSaveImge(“D:gray.jpg”, grayImg); /将显示结果进行保存cvWriteVideo(pVideoWriter, grayImg); /保存成视频文件cvReleaseImg(&grayImg); /卸载图像cvReleaseCapture(&pCapture); /卸载视频cvReleaseVideoWri

39、ter(&pVideoWriter); /卸载VideoWriter2.4 本章小结本章对于OpenCV 这个开源视觉库进行了较为简单的介绍,对OpenCV 较之其他视频处理软件的突出优点做出分析,也对其中一些重要的数据函数的结构做了一定的介绍,重点对使用OpenCV进行图像/视频数据的读取操作基本的流程进行了简单的介绍。第三章 模板匹配3.1模板匹配认知是一个把未知与已知联系起来的过程。对一个复杂的视觉系统来说,他的内部常同时存在着多种输入和其他知识共存的表达形式。感知是把视觉输入与事先已有表达结合的过程,而识别与需要建立或发现各种内部表达式之间的联系。匹配就是建立这些联系的技术和过

40、程。建立联系的目的是为了用已知解释未知。匹配,就是机器在辨别接收的输入的信息的时候,将两幅或以上的图像在空间的基础上进行对准的过程,而这些进行对准的图像可以源自同一个传感器,也可以来自不同的传感器,获取图像的时间也可以不尽相同,但是要保证图像的来源是在同一景象中。也可以这么说,根据机器所已知的模式在另一相对来说更大的图像中寻找对应的模式的过程就叫匹配。那么,遥感图像处理则是基于不同波段的传感器在景物多光谱图像中按照像点这个标准进行对照获取数据,然后根据其性质分类。而在同一景象中获取的两个图片,差别也许只是获取的时间不一样,那么通过对准后就会找到两幅图片中发生了变化的特征像点,这些像点就作为数据

41、来描述景象中那些变化了的构成部分;而深度信息,简单来说就是距离,而这个间距就是是两个机器对同一个物体进行拍摄所得到的两张图片时放置的同样的距离,它是通过找出来的这两个图片中对应点来准确计算出来的。普通的图像匹配技术是利用已知模板以及某种算法对要进行识别的图像进行匹配计算从而获得图像中是不是包含有对应模板的信息和坐标的。3.2模板匹配算法介绍作为数字图像处理的关键组成部分,模板匹配的概念就是机器在辨别接收的输入的信息的时候,将两幅或以上的图像在空间的基础上进行对准的过程,而这些进行对准的图像可以源自同一个传感器,也可以来自不同的传感器,获取图像的时间也可以不尽相同,但是要保证图像的来源是在同一景

42、象中。也可以这么说,根据机器所已知的模式在另一相对来说更大的图像中寻找对应的模式的过程就叫模板匹配。简单的来说,模板在算法中就是作为机器所已知的一幅小图像。而模板匹配就是在相对于这个小图像来说的一幅大的图像中寻找目标,而搜索过程中所已知的信息是,这幅大图像中有我们要找的那个目标,而且这个目标和模板有着相似度极高的信息,通过各种算法在大图中找到要找的目标,然后通过坐标来描述找到的目标目前所在的位置。 图 3.1 模板匹配算法简要框图3.2.1 模板匹配算法简要框图 图3.1给出了模板匹配算法的简要框图,其最终的目的就是构造一堆候选对象,然后从所构造的候选对象中寻求相似度最大的对象作为最终的匹配对

43、象。从此简要框图,我们可以得到跟模板匹配算法联系紧密的几个问题:(1)候选目标池的确定,这个跟搜索策略有关,它涉及到搜索范围的确定、采样间隔的确定,,是逐像素扫描还是隔几个像素进行扫描;(2)相似度量的选择;(3)目标描述所采用的特征的选择。下面我们主要对相似性度量和搜索策略进行阐述。3.2.2 相似性度量在模板匹配中比较常用的相似性度量有以下四种:(1)、平方差度量假设原始图像和模板图像,如图3.2所示:图 3.2 搜索图像I与模板图像T则平方差度量公式为: 使用平方差度量来进行匹配,最好的匹配匹配值为0,匹配值越小越好。平方差公式的一个变种就是标准化的平方差公式: (2)相关度量 对于这种

44、度量,较大的值有较大的匹配度,反之亦然。相关度量的一个变种就是标准化的相关度量:(3)相关系数度量此相似性度量将模板对其均值的相对值与图像对其均值的相对值进行匹配,1表示最好的匹配,-1表示最坏的匹配,0表示二者没有任何相关性。标准化的相关系数度量公式为:3.3.3搜索策略搜索策略,即为在被搜索空间中如何选择下一次匹配的过程。优化搜索策略,有两种方法,第一,减少需要进行搜索的搜索点,第二,缩小搜索的范围。具体来说也有以下几种搜索方法:(1) 二维对数搜索。图a显示的是对数搜索,当p的数值为7的情况下的矩形的搜索区域范围为,那么,我们就设该矩形中心的点的坐标为(0,0)。第一步在矩形中心与在矩形

45、 (p/2取整)边界8个点计算它们的交叉相关性。这8个点之间的间隔是=4个像素,也就是和k= (取整运算)。通过如图所示的例子来证明。我们设在(-4,0)这点处有最大交叉相关值,然后把这个点作为即为-2,2×-2,2这个矩形的中心计算其边界的对应的8个点的相关性。重复地执行这个搜索过程,到最后在矩形-1,1×-1,1边界的8个点对其进行相应计算,而矩形中心位于最优阴影圆的中点。可以得出这8个点的间距为l。在阴影点和相应点使得交叉相关值最大的时候,处理的过程会被停止。结果计算次数减少到了MN (8k+1),比穷尽搜索的计算量小。图a寻找最大交叉相关点的对数搜索(2)分层搜索分

46、层搜索主要由如下的步骤构成:步骤1:参考模块的大小为16×16,矩形 为搜寻区域,()为中心点,图像从0级开始。经过了低通滤波以及二次采样,有了1级图像。那么,1级图像中的像素个数已降为1/4。再通过低通过滤以及二次抽样,就有了2级图像。通常情况下此过程都能够继续下去。步骤2:目标是在2级图像的参考模块的4×4的低通图像之中搜索到最大值,所测试得到的2级低通图像其搜索的区域的大小是×这个矩形,()为其中心。可以用全面搜索,对数搜索也是可以的。步骤3:用参考模块在1级图像中的8×8图像做完最大值搜索,搜索区域的大小是-l,1×-1,1矩形, 为其

47、中心。那么就意味着,一共就有了9个像素。原因是二次抽样的时候这个区域的边界8个像素并没有包含于2级图像。为了有一个较为合理的比较,区域中就必须有中心点。相对于 这个点来说最大值就位于点()。步骤4:使用最开始的参考模式在0级图像中开始进行搜索,搜索区域为图像大小是-1,1×-1,1的矩形,() 为其中心。结果值就是最大值,与此同时处理过程就此结束。此种方法在计算度的减少是依赖着最高级采用的搜索方法和级数的。从计算度这个方面来说,分层搜索这个方法的效果是非常明显的。因为有多级图像需要保存,所以要计算度减小的话就得用更大的内存来换取。但是这个方法的劣势在于,当小的对象做模板时候,因为二次

48、抽样,对象可能会在最低分辨率的图像上消失;还有,该方法也不能保证会找到属于全局的最佳匹配。(3)顺序搜索方法。这种方法特别定义出了如下的公式: 所以,当1,2,且p M , N时,误差会在一个较小且连续地增加的窗口区域中进行计算。那么,在大于刚开始指定的阈值时候,计算就会停止。之后,会在不同方向上重新开始进行计算。这种方法在不好的位置进行的计算很少,因而节省了计算量。3.3本章小结本章对模板匹配的概念和基本流程进行了简要的阐述。主要详细讨论了模板匹配问题中几种常用的相似性度量及搜索策略,分析了他们各自的优势和劣势。第四章 基于模板匹配的目标跟踪目标跟踪是计算机视觉领域的一个重要分支。有许多学者

49、都从事这方面的研究,他们提出了各种各样的跟踪算法。在此,我们主要聚焦下比较简单的目标跟踪算法模板匹配目标跟踪算法。4.1模板匹配跟踪算法目标跟踪的目的就是要找出待跟踪的目标在整个图像序列每一帧中的状态(位置、尺度等),从而得到目标的运动轨迹,以用来做更高层次的计算机视觉问题(视频理解、异常行为分析等)。采用模板匹配来跟踪目标,就是把要跟踪的目标(模板)保存好,然后在每一帧来临的时候,在整个图像(搜索图像)中寻找与这个目标最相似的位置,其基本跟踪过程如图4.1所示。首先,第一帧时初始化要跟踪的目标,一个完整的跟踪系统应该采用自动化的方法进行目标的初始化,我们在此只考虑跟踪算法,所以采用手动化的方

50、法进行初始化,即第一帧时用户手动用鼠标在图像中框出要跟踪的目标。图4.1 模板匹配目标跟踪基本过程其次,对于后面的每帧图像,首先采用模板匹配算法找到目标在当前帧的位置(搜索图像中相似度最大的位置),然后利用匹配到的信息更新目标模板。进行目标模板更新的目的主要是考虑到目标所处的环境的变化(背景变化,光照变化等)。如果在整个过程中目标模板都保持跟踪时很容易丢失。用8 位图像作为例子,模板叠放在被搜索图向上平移,其中为×个像素、为×个像素。模板覆盖于被搜索图的那块区域叫做子图。是子图的左上角在被搜索图上的所在的坐标。那么搜索范围就是: 对比模板和子图的相似性来完成模板匹配。衡量它

51、们的匹配程度,可以使用第三章我们介绍的几种测量,也可以使用下面这种测度: 以上方法称为SAD,是最简单快速的方法,但这种方法的鲁邦性不好,为了提高该算法在这个方面的性能,也考虑到实时性,就有了相关系数法。相关系数作为一种数学距离可以衡量两个向量之间的相似程度。相关系数源于余弦定理:.若两个向量之间的夹角为0(对应也就是相关系数为1),这就意味着它们是完全相似的,若夹角是90度,那么相关系数为0,就意味着它们完全不相似,若夹角是180度,那么相关系数为-1,就意味着它们完全相反。将余弦定理用向量的形式表达即为: 即: 上式中分子是两向量的内积,分母是两向量的模相乘。而实际应用中,比较常用的是去均

52、值相关系数法,在余弦的向量表达的基础上在分子分母上减去了各个向量的均值:其中分别是的均值,即分别是模板的宽和高。另一方面决定模板大小与否往往与经验密切相关,紧帖着目标轮廓的模板和包含了太多的背景的模板所得到的效果往往不是很好,前者是因为模板过小,对于目标的变化会太过于敏感,从而会导致很容易丢失目标。后者模板太大,目标变化已经开始发生变化了但是算法却还没有什么反应。通常情况下,目标占模板比例为30%到50%是最好的。4.2 评判算法的标准为满足实时模板匹配的需要,匹配方法的好坏需从以下的四个方面来进行衡量:可靠性、稳定性、匹配耗时和匹配精度。 (1) 可靠性是指被搜索图像的目标区域被遮挡,或目标

53、出现部分缺失的情况下,算法能否找到所要寻找目标的相应能力。 (2) 稳定性指的是噪声、光照等外界环境的变化对检测的结果的影响。(3) 匹配精度是算法应该要着重考虑到的一个方面。多数情况下,匹配精度比以上所提到的两个方面在算法运用时更受关注,例如在导弹定位中,假如最后的匹配误差相对来说较大,可能就会造成相当严重的后果。很多的实际运用中,在算法性能无法再有提升的时候,管理者们都是通过提升机器的硬件来提高匹配精度的。(4) 最后是匹配耗时,也就是本文叙述的关键问题所在。当外界条件固定时,比较算法实时性的优劣。虽然随着时代的进步,计算机的性能和运算速度都在不断的提高,但是随着使用的范围越来越大,数据也

54、就越来越多,也就越来越难得达到良好的实时性。很多时候还是需要通过对算法进行优化,从而提高实时性。例如,工厂的原件检测时,原件用很快的速度在移动,所以算法就必须以毫秒级速度完成原件检测,这样才能够达到要求。4.3 模板匹配跟踪算法缺陷当识别的设计静态的物体的时候模板匹配会具有比较高的匹配精度。匹配值是由相似度量函数直接决定的,所以相似度量函数也就直接决定最优匹配的位置,进而对跟踪结果也有直接的影响。传统模板匹配算法主要运用三种函数:相关匹配度量、平方差度量和相关系数度量。这三种相似度量函数中相关系数度量的匹配准确度比较高,但是它的计算量大。而平方差度量的计算量相对来说小,但是匹配的准确度低了一些

55、。三种度量方法具有的共同优点是通用性强,是因为它们都只利用模板和目标图像两者的像素信息,但是这三种函数的运用都未考虑目标跟踪的特点,因而在目标跟踪技术的应用中,效果都不理想。上面的分析表面:采用相关系数来度量相似度进行模板匹配的精度最高,但是它的计算量相对于其他两种度量方法也相应的更大。那么我们能不能够采用相关系数度量来保证匹配精度,但想方设法降低它的复杂度,从而在精度和复杂度之间达到一个折中呢?这个是我们在下一小节中将要阐述的,也是本文的一个重点之一。图4.2 描述目标常用的两种方式图4.3 目标角度旋转示例另一方面,在目标跟踪算法中,我们一般用矩形或者椭圆来描述目标,如图4.2所示。并且匹

56、配的时候只是对于目标位置进行匹配,没有考虑目标的旋转。也就是说当目标旋转的时候,我们仍然使用矩形框来描述目标,这样会带来很大的误差,甚至导致目标跟踪失败。这一点我们不难从图4.3得到很好的解释。假设图中黄色的小方块是待跟踪的目标初始状态,我们红色的小矩形描述它。经过若干帧之后,黄色的目标发生了一定程度的旋转,如果此时我们仍然使用不带旋转角度的小矩形去描述它将会产生很多错误的信息:一部分不见包含进来了,同时一部分目标信息处于小矩形框的外面了。在这种情况下匹配的时候将产生很大的误差,甚至有可能导致目标跟踪失败。4.4改进的模板匹配算法本小节我们主要针对上面提到的两个缺陷进行改进。4.4.1 算法加速关于提速我们从两个方面进行。一方面我们将一次匹配的过程改成了两次匹

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论