《本科毕业论文-基于模板匹配的目标跟踪技术研究与实现.doc》由会员分享,可在线阅读,更多相关《本科毕业论文-基于模板匹配的目标跟踪技术研究与实现.doc(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 南华大学计算机科学与技术学院毕业设计(论文)计算机科学与技术学院毕业设计(论文)论文题目基于模板匹配的目标跟踪技术研究与实现 指导教师职 称讲师学生姓名学 号专 业网络工程班 级系 主 任院 长起止时间目 录第一章 绪论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 的基本数据类型82.3 OpenCV
2、图像/视频处理流程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操作界面介绍274.5.2结果对
3、比分析314.6本章小结32总结33参考文献34谢 辞36基于模板匹配的目标跟踪技术研究与实现 摘要:视频目标跟踪是计算机视觉领域中一个非常活跃的研究领域,近年来已经逐渐成为学者们研究的热点。本文主要对模板匹配算法在目标跟踪领域中的应用进行研究,并对跟模板匹配目标跟踪相关的一些技术问题进行了深入的探讨。在Visual studio 2008开发环境下结合MFC和开源计算机视觉库(Open Computer Vision,OpenCV)用程序语言实现基于模板匹配的目标跟踪算法,并在图像序列上对模板匹配跟踪算法在降低复杂度和抗目标旋转方面的有效性进行了验证。 关键词:Visual studio 2
4、008;OpenCV;模板匹配;角度旋转匹配;目标跟踪I 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 studies the
5、 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 Vision, OpenC
6、V) 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 trackingII第一章 绪论
7、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归一化相关算法。后两种算法是由 Silverman
15、 和 Barnea DI 两位学者一起在不同的时间提出的,第一种是由Leese 提出的。然而这些算法在理论上来说虽然已经发展的比较成熟,实际应用中却不然,由于精度和复杂度上的一些问题,很少被实际应用。在这两个缺点上,有研究者提出了一些改进的方法来提高计算的效率,缩短匹配需要消耗的时间,主要的两种方法分别为精简搜索空间中需要匹配的对象和减少算法中所运用的相似函数的运算量。其中有显著成效的是由Farhan Ullah 提出的将图像的灰度信息进行编码然后再进入到匹配过程的算法,该算法在计算速度上有了很大的提升,但是缺点也很明显,只可以在矩形图像中运用,而且对于外界自然因素的干扰没有什么抵抗力如光照,
16、因而也很少在实际中应用到。1.2.2基于几何特征的模板匹配算法由于模板和在被搜索图像的目标之间不仅仅存在灰度的差异问题,缩放比例和旋转角度也是图像对比中经常存在的差异数据的来源,基于几何的匹配算法因而诞生。此类算法多种多样,与数学数量的变换息息相关,如傅里叶变换,直方图统计,K-L变换,图像距等。由于1996年B. Srinivasa Reddy 和 B.N. Chatterji 提出的数极坐标的相关变换,把在一定条件下的图像缩放和旋转转化成了数极的平移,傅里叶变换,从本来只可以处理图像的平移问题进而进步到处理旋转角度和缩放比例,计算之后调整模板,然后在利用调整之后的模板在搜索图像中定位。20
17、00年的时候罗成平提出的K-L 变换算法,主要利用多位正交变化函数上投影,获得图像统计性的特征。另外还有一种方法是用角度直方图相关的计算方法来衡量相似性的,这种方法可以在相对旋转角度比较大的情况下,对旋转的角度进行估计,之后对模板进行相应的角度变化,再开始平移匹配。角点信息是基于几何的匹配中应用相对来说较为频繁的一种,该信息所属方法的基本依据是在模板和被搜索图像中提取出角点,得到两组角点集合,将其分别命名为,之后对中的角点两两进行距离匹配,若,有 并且,则认为两个角点匹配,否则匹配失败 。角点匹配结束后,还要去掉那些未出现在正确匹配区域中的匹配点,实现该步骤过程中用的比较多的方法是 RANSA
18、C 算法。相对其它讨论的比较少的方法来说,对于角度检测以及匹配方面研究者们现如今已有了全面的研究和讨论,此类方法最明显的劣势就是太费时间,不太适用于要求高效率的实时匹配。 提高运算速度依然是研究者们对于该类方法研究的重点和难点,相对来说,精确度方面该方法已经有了保证,如何提高实时性,是目前所要攻克的一大难题。 而如何运用高效且精确的模板匹配进行目标跟踪,也是计算机图像技术现如今研究的重点。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 模块包含了基本图像处理函数和高级计算机视觉的算法。HighGUI 这个模块包含有
22、图像和图像的集合视频的输入输出的函数,为使用此模块的用户提供图形用户接口。ML 是机器学习库。CxCore 提供了所有 OpenCV 运行时的最基本的数据结构和基本函数。CvAux 模块不包含在图 2.1 的基本结构体系中,该模块存放即将被淘汰或新出现的算法、函数。图 2.1 OpenCV 的基本结构2.2.1 OpenCV 命名规则1、函数名 通用函数名 cvActionTargetMod( ) Action是核心功能(core functionality)、Target是目标图像区域(target image area) 、Mod为可选的调整语(optional modifiers)。 常
23、遇到的状况有 cvActionTarget()、cvTarget()、cvMethod()、cvActionMethod()四种。 cvActionTarget()类型如 cvCreateImage(),cvNamedWindow()。 cvTarget()类型的非常常见,如 cvMat(),cvSize(),cvPoint()。 cvMethod()类型比较常用的是算法或某方法,如 cvDCT()离散余弦变换算法。 cvActionMethod()的类型如 cvFindContours()轮廓搜寻算法 。 此外也有例外,如:DoubleClickedMouse()。2、矩阵数据类型结构如下:
24、CV_(S|U|F)C,其中S为符号整型,U为无符号整型,F则为浮点型。比如: CV_16UC1指的就是16 位的无符号的整型的单通道矩阵;CV_64FC2 指的就是64 位的浮点型的双通道矩阵。3、 图像数据类型结构如下: IPL_DEPTH_(S|U|F),其中S 为符号整型,U 为无符号整型,F 为浮点型。比如:IPL_DEPTH_16U 图像像素数据值得就是16位的无符号的整型。2.2.2 OpenCV 的基本数据类型1、基本数据类型OpenCV 视觉库提供了多种基本数据类型。如 CvPoint、CvSize、CvRect 和CvScalar。而在以上提到的这些数据类型当中,CvPoi
25、nt 这个数据类型最为简单。CvPoint是一个包含 了int 整型成员 x、y 的简单的结构体。另一个数据类型与 CvPoint 非常相似,即为CvSize 这个包含 int 型成员 width和 height 的简单结构体。CvRect 类型则是派生于 CvPoint 和 CvSize 类型的复合类型,包含 了4 个数据成员:width 和 height、还有x和y。下一个 是CvScalar ,CvScalar类型拥有着一个单独成员 val 和 4 个都为整型成员,其中的单独成员是一个指向着4 个双精度的浮点数组成的数组的指针。2、CvMat 数据结构图 2.2 CvArr、CvMat
26、和 IplImage 之间派生关系OpenCV 虽是用C 语言实现的,但是它的结构还是遵循面向对象的思想设计。如上图 2.2,IplImage 由 CvMat 派生,而 CvArr 派生了CvMat 。CvArr*是 一种独特结构。而CvMat 是OpenCV 在运用过程中常用的矩阵。IplImage 为 OpenCV 所有的图像编码的基本结构。CvMat 矩阵结构简单,由类型(type)、行数据长度(step)、宽度(width)、高度(height)和一个指向着数据的指针构成。作为OpenCV中的重要的矩阵变换函数,CvMat使用方法是CvMat* cvCreateMat ( int ro
27、ws, int cols, int type ); 预定义类型的结构如下:CV_ (S|U|F)C。矩阵的元素能够是32位的浮点型的数据(CV_32FC1),或是无符号 8位的三元组整型的数据(CV_8UC3), 异或是无数其他类型元素。一个CvMat元素它不一定非得是一个单一的数字。在矩阵中可以由单一输入来表示多个数值,这样的话我们就能够在一个三原色的图像上描绘多重的色彩通道。CvMat 结构:typedef struct CvMatint type; int step; /类型,行数据长度int* refcount; /仅供内部使用int hdr_refcount;unionuchar*
28、ptr; short* s; int* i;float* fl; double* db; data;unionint rows; int height; /排、高度;unionint cols; int width; /列、宽度; CvMat;3、IpLImage 数据结构OpenCV 中所有图像都采用了同一结构,事实上,IplImage 是借鉴了 Intel公司在早期公布的 IPP 图像处理开发包中对于相关结构的定义。因为OpenCV主要针对计算机视觉方面的处理,所以,在这个函数库中,IplImage结构是最为关键重要的结构体。IplImage结构源自Intel的另一函数库Intel Ima
29、ge Processing Library (IPL)。IplImage结构定义如下:typedef struct _IplImageint nSize; /* 大小 */int ID; /* 版本 */int nChannels; /* 通道 */int alphaChannel; int depth; /* 像素的位深度 */char colorModel4; char channelSeq4; int dataOrder; int origin; /*原点位置*/int align; /*行排列方式 */int width; /* 宽像素数 */int height; /* 高像素数*/
30、struct _IplROI * roi; /* 图像感兴趣区域*/struct _IplImage * maskROI; /* NULL */void * imageId; /* NULL */struct _IplTileInfo * tileInfo; /* NULL */int imageSize; /* 数据大小*/char * imageData; /* 指向排列的图像数据 */int widthStep;/* 排列的图像行大小*/int BorderMode4; int BorderConst4;char *imageDataOrigin; IplImage;IplImage是整
31、个OpenCV函数库的基础,在定义该结构变量时会用到函数cvCreatImage。2.3 OpenCV图像/视频处理流程2.3.1 OpenCV 图像处理流程使用OpenCV来处理数字图像其流程包括如图2.3所示的四个基本过程:(1)加载需要处理的图像,这可以使用函数cvLoadImage实现;(2)使用图像处理算法对图像进行处理,OpenCV提供了很多图像处理算法,比如边缘检测、图像旋转等等,但有些算法需要自己编写;(3)对图像处理的结果进行可视化显示或保存,可使用cvShowImage函数对处理结果进行显示和使用cvSaveImage函数将结果图像保存到相应位置;(4)卸载加载的图像,这可
32、以用函数cvReleaseImage进行实现。如下的示例代码是使用OpenCV读取保存在指定位置的图片,把它转化成灰度图像后对处理结果进行显示和保存。从这个实例我们可以看出:使用OpenCV可以很简单的实现对图像数据的读取操作和显示保存操作。图 2.3 OpenCV图像处理基本流程IplImage* colorImg = NULL; /定义IplImage型变量IplImage* grayImg = NULL;colorImg = cvLoad(“D:test.jpg”); /加载图像grayImg=cvCreateImage(cvGetSize(colorImg),colorImg-dept
33、h,1); /创建灰度图像cvCvtColor(colorImg, grayImg, CV_RGB2GRAY); /转化为灰度图像cvNamedWindow (“处理结果”, 1); /定义窗口用于显示结果cvShowImage(“处理结果”, grayImg); /在窗体上显示处理结果cvSaveImge(“D:gray.jpg”, grayImg); /将显示结果进行保存cvReleaseImg(&grayImg); /卸载图像2.3.2 OpenCV 视频处理流程视频是由一帧帧的图像构成的,对于视频的处理可以转化成对于一系列图像的处理,一般可按如图2.4所示的基本过程来实现:(1)加载需
34、要处理的视频文件,对于avi视频文件可使用函数cvCaptureFromFile来加载,如果要从摄像头实时捕获视频则要用函数cvCreateCameraCapture来创建摄像头;(2)使用cvQueryFrame从前面已经创建的Capture中抓取一帧图像,如果抓取不成功则说明视频处理完备,此时要用函数cvReleaseCapture卸载视频文件,否则对所抓取的图像进行所要求的处理;(3)对图像处理的结果进行可视化显示或保存,可使用cvShowImage函数对处理结果进行显示和使用cvSaveImage函数将结果图像保存到相应位置,此外还可以使用cvWriteFrame函数把所有处理的结果保
35、存成一个AVI视频文件;(4)卸载加载的图像,这可以用函数cvReleaseImage进行实现。图 2.4 OpenCV视频处理基本流程如下的示例代码是使用OpenCV从摄像头或者视频文件捕获视频流数据,把它转化成灰度图像后对处理结果进行显示和保存。从这个实例我们可以看出:使用OpenCV可以很简单的实现对视频数据的读取操作和显示保存操作。CvCapture* pCapture = NULL;/定义cvCapture结构pCapture = cvCreateCameraCapture(0); /从摄像头获取视频流/pCapture = cvCaptureFromFile(“D:xiexin.a
36、vi”); /从AVI视频文件获取视频流IplImage* colorImg = NULL; /定义IplImage型变量IplImage* grayImg = NULL;CvVideoWriter* pVideoWriter = NULL;int N = 0;while(1) N+; colorImg = cvQueryFrame(pCapture); /抓取一帧图像if(N=1) pVideoWriter =cvCreateVideoWriter(camera.avi, CV_FOURCC(X, V, I, D), 25,cvSize(colorImg-width,colorImg-hei
37、ght); if (colorImg = NULL) break; /抓取失败就退出grayImg=cvCreateImage(cvGetSize(colorImg),colorImg-depth,1); cvCvtColor(colorImg, grayImg, CV_RGB2GRAY); /转化为灰度图像cvNamedWindow (“处理结果”, 1); /定义窗口用于显示结果cvShowImage(“处理结果”, grayImg); /在窗体上显示处理结果cvSaveImge(“D:gray.jpg”, grayImg); /将显示结果进行保存cvWriteVideo(pVideoWr
38、iter, grayImg); /保存成视频文件cvReleaseImg(&grayImg); /卸载图像cvReleaseCapture(&pCapture); /卸载视频cvReleaseVideoWriter(&pVideoWriter); /卸载VideoWriter2.4 本章小结本章对于OpenCV 这个开源视觉库进行了较为简单的介绍,对OpenCV 较之其他视频处理软件的突出优点做出分析,也对其中一些重要的数据函数的结构做了一定的介绍,重点对使用OpenCV进行图像/视频数据的读取操作基本的流程进行了简单的介绍。36第三章 模板匹配3.1模板匹配认知是一个把未知与已知联系起来的过
39、程。对一个复杂的视觉系统来说,他的内部常同时存在着多种输入和其他知识共存的表达形式。感知是把视觉输入与事先已有表达结合的过程,而识别与需要建立或发现各种内部表达式之间的联系。匹配就是建立这些联系的技术和过程。建立联系的目的是为了用已知解释未知。匹配,就是机器在辨别接收的输入的信息的时候,将两幅或以上的图像在空间的基础上进行对准的过程,而这些进行对准的图像可以源自同一个传感器,也可以来自不同的传感器,获取图像的时间也可以不尽相同,但是要保证图像的来源是在同一景象中。也可以这么说,根据机器所已知的模式在另一相对来说更大的图像中寻找对应的模式的过程就叫匹配。那么,遥感图像处理则是基于不同波段的传感器
40、在景物多光谱图像中按照像点这个标准进行对照获取数据,然后根据其性质分类。而在同一景象中获取的两个图片,差别也许只是获取的时间不一样,那么通过对准后就会找到两幅图片中发生了变化的特征像点,这些像点就作为数据来描述景象中那些变化了的构成部分;而深度信息,简单来说就是距离,而这个间距就是是两个机器对同一个物体进行拍摄所得到的两张图片时放置的同样的距离,它是通过找出来的这两个图片中对应点来准确计算出来的。普通的图像匹配技术是利用已知模板以及某种算法对要进行识别的图像进行匹配计算从而获得图像中是不是包含有对应模板的信息和坐标的。3.2模板匹配算法介绍作为数字图像处理的关键组成部分,模板匹配的概念就是机器
41、在辨别接收的输入的信息的时候,将两幅或以上的图像在空间的基础上进行对准的过程,而这些进行对准的图像可以源自同一个传感器,也可以来自不同的传感器,获取图像的时间也可以不尽相同,但是要保证图像的来源是在同一景象中。也可以这么说,根据机器所已知的模式在另一相对来说更大的图像中寻找对应的模式的过程就叫模板匹配。简单的来说,模板在算法中就是作为机器所已知的一幅小图像。而模板匹配就是在相对于这个小图像来说的一幅大的图像中寻找目标,而搜索过程中所已知的信息是,这幅大图像中有我们要找的那个目标,而且这个目标和模板有着相似度极高的信息,通过各种算法在大图中找到要找的目标,然后通过坐标来描述找到的目标目前所在的位
42、置。 图 3.1 模板匹配算法简要框图3.2.1 模板匹配算法简要框图 图3.1给出了模板匹配算法的简要框图,其最终的目的就是构造一堆候选对象,然后从所构造的候选对象中寻求相似度最大的对象作为最终的匹配对象。从此简要框图,我们可以得到跟模板匹配算法联系紧密的几个问题:(1)候选目标池的确定,这个跟搜索策略有关,它涉及到搜索范围的确定、采样间隔的确定,,是逐像素扫描还是隔几个像素进行扫描;(2)相似度量的选择;(3)目标描述所采用的特征的选择。下面我们主要对相似性度量和搜索策略进行阐述。3.2.2 相似性度量在模板匹配中比较常用的相似性度量有以下四种:(1)、平方差度量假设原始图像和模板图像,如
43、图3.2所示:图 3.2 搜索图像I与模板图像T则平方差度量公式为: 使用平方差度量来进行匹配,最好的匹配匹配值为0,匹配值越小越好。平方差公式的一个变种就是标准化的平方差公式: (2)相关度量 对于这种度量,较大的值有较大的匹配度,反之亦然。相关度量的一个变种就是标准化的相关度量:(3)相关系数度量此相似性度量将模板对其均值的相对值与图像对其均值的相对值进行匹配,1表示最好的匹配,-1表示最坏的匹配,0表示二者没有任何相关性。标准化的相关系数度量公式为:3.3.3搜索策略搜索策略,即为在被搜索空间中如何选择下一次匹配的过程。优化搜索策略,有两种方法,第一,减少需要进行搜索的搜索点,第二,缩小
44、搜索的范围。具体来说也有以下几种搜索方法:(1) 二维对数搜索。图a显示的是对数搜索,当p的数值为7的情况下的矩形的搜索区域范围为,那么,我们就设该矩形中心的点的坐标为(0,0)。第一步在矩形中心与在矩形 (p/2取整)边界8个点计算它们的交叉相关性。这8个点之间的间隔是=4个像素,也就是和k= (取整运算)。通过如图所示的例子来证明。我们设在(-4,0)这点处有最大交叉相关值,然后把这个点作为即为-2,2-2,2这个矩形的中心计算其边界的对应的8个点的相关性。重复地执行这个搜索过程,到最后在矩形-1,1-1,1边界的8个点对其进行相应计算,而矩形中心位于最优阴影圆的中点。可以得出这8个点的间
45、距为l。在阴影点和相应点使得交叉相关值最大的时候,处理的过程会被停止。结果计算次数减少到了MN (8k+1),比穷尽搜索的计算量小。图a寻找最大交叉相关点的对数搜索(2)分层搜索分层搜索主要由如下的步骤构成:步骤1:参考模块的大小为1616,矩形 为搜寻区域,()为中心点,图像从0级开始。经过了低通滤波以及二次采样,有了1级图像。那么,1级图像中的像素个数已降为1/4。再通过低通过滤以及二次抽样,就有了2级图像。通常情况下此过程都能够继续下去。步骤2:目标是在2级图像的参考模块的44的低通图像之中搜索到最大值,所测试得到的2级低通图像其搜索的区域的大小是这个矩形,()为其中心。可以用全面搜索,对数搜索也是可以的。步骤3:用参考模块在1级图像中的88图像做完最大值搜索,搜索区域的大小是-l,1-1,1矩形, 为其中心。那么就意味着,一共就有了9个像素。原因是二次抽样的时候这个区域的边界8个像素并没有包含于2级图像。为了有一个较为合理的比较,区域中就必须有中心点。相对于 这个点来说最大值就位于点()。步骤4:使用最开始的参考模式在0级图像中开始进行搜索,搜索区域为图像大小是-1,1-1,1的矩形,() 为其中心。结果值就是最大值,与此同时处理过程就此结束。此种方法在计算度的减少是依赖着最高级采用的
限制150内