摘要模板匹配就是把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应模式的处理方法。
模板匹配是数字图像处理的重要组成部分之一。
简单而言,模板就是一幅已知的小图像。
模板匹配就是在一幅大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其坐标位置。
本文主要主要介绍了灰度相关的匹配方法,灰度相关的图像匹配算法是图像匹配算法中比较经典的一种,很多匹配技术都以它为基础进行延伸和扩展。
它是从待拼接图像的灰度值出发,对待匹配图像中一块区域与参考图像中的相同尺寸的区域使用最小二乘法或者其它数学方法计算其灰度值的差异,对此差异比较后来判断待拼接图像重叠区域的相似程度,由此得到待拼接图像重叠区域的范围和位置,从而使用MATLAB软件实现图像匹配。
当以两块区域像素点灰度值的差别作为判别标准时,最简单的一种方法是直接把各点灰度的差值累计起来。
另一种方法是计算两块区域的对应像素点灰度值的相关系数,相关系数越大,则两块图像的匹配程度越高。
该方法的匹配效果要更好,匹配成功率有所提高。
关键词:图像匹配;MATLAB;灰度相关目录1 需求分析 (1)1.1 问题描述 (1)1.2 基本要求 (1)2 设计方案 (2)2.1 相关概念 (2)2.2 算法设计 (2)3 仿真内容 (5)3.1 相关函数说明 (5)3.2 模版匹配源代码 (8)4 仿真结果及分析 (9)结束语 (11)参考文献 (12)1 需求分析1.1 问题描述计算机模式识别所要解决的问题,就是用计算机代替人去认识图像和找出一幅图像中人们感兴趣的目标物。
在机器识别物体的过程,常需把不同传感器或同一传感器在不同时间,不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应的模式,这就叫做匹配。
模板匹配是一种最原始、最基本的模式识别方法。
研究某一特定对象物位于图像的位置,进而识别对象,这就是匹配的问题。
利用模板匹配可以在一幅图像中找到已知的物体。
这里的模板指的是一幅待匹配的图像,相当于模式识别的模式。
基本要求如下:(1).进行匹配的两幅图像为JPG格式或BMP格式。
(2).能够进行对两幅数字图像的匹配。
(3).采用交互式程序对图像进行匹配。
1.2 基本要求通过分析题目的基本要求,我将此使用两种方法实现匹配:一个是基于灰度的模板匹配,另一个是基于灰度的快速匹配。
在以上两种方法中,用户可以对两张图像进行匹配并显示匹配结果。
2 设计方案2.1 相关概念①数字图像:数字图像是由被称做像素的小块区域组成的二维像素矩阵。
一般把图像分成3种形式:单色图像,灰度图像和彩色图像。
②像素:表示图像颜色的最小单位③灰度图像:灰度图是指只含亮度信息,不含色彩信息的图像,就像平时看到的黑白照片:亮度由暗到明,变化是连续的。
灰度图的每个像素的亮度用一个数值来表示,通常数值范围在0—255之间,即可用一个字节来表示,0表示黑,255表示白,而其他表示灰度。
④点阵图:显示器的屏幕由可以发光的像素点组成. 并且从几何位置看, 所用这些像素点构成一个矩形的阵列.利用计算机控制各像素点按我们指定的要求发光,就构成了我们需要的图形.这种方式构成的图形我们可称之为点阵图形.⑤点阵图形的坐标系统:各像素点有一个坐标唯一指定了它的位置.如果点阵图形的大小是N×M, 那么它的点阵共有M行N 列, 每个像素点的位置就由它所在的行和列的位置所唯一确定. 这个行和列的位置就给出了点阵图形的坐标系统. 按照前面的顺序, 第m行, 第n列的像素点顺序数就是m+(n-1)N.反之, 顺序数为s的像素点在第s Mod N行, 第Int(s/N ) + 1列, 这里的s Mod N是s除以N后的余数, Int( s/N ) 是s/N的整数部分.需要注意的是第m行, 第n列的像素点的坐标可能不是(m; n), 而是(m-1; n-1). 这是因为有时为了在计算机中处理的方便, 像素点的行列的排序不是从1, 而是从0开始的。
我们常用的显示器的像素坐标就是如此。
2.2 算法设计由于各种各样的原因如(成象条件的差异)图象预处理,引入的误差等,参与图象匹配的模板与潜在的匹配子图象间通常存在着程度不同的不一致,因此根据模板在一幅陌生图象中检测出潜在的匹配对象并得出它在图象中的位置是一件复杂的工作。
模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是否存在与该模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。
模板匹配常用的一种测度为模手术台与源图像对应区域的误差平方和。
设f(x,y)为M×N 的源图像,t(j,k)为J×K(J≤M,K≤N)的模板图像,则误差平方和测度定义为:11200(,)[(,)(,)]J K j k D x y f x j y k t j k --===++-∑∑ (2.1) 由上式展开可得: 111111220000(,)[(,)]2(,)(,)[(,)]J K J K J K j k j k j k D x y f x j y k t j k f x j y k t j k ------=====++-⋅+++∑∑∑∑∑∑ (2.2) 令11200(,)[(,)]J K j k DS x y f x j y k --===++∑∑ (2.3)1100(,)2[(,)(,)]J K j k DST x y t j k f x j y k --===⋅++∑∑ (2.4)11200(,)[(,)]J K j k DT x y t j k --===∑∑ (2.5)DS(x,y)称为源图像中与模板对应区域的能量,它与像素位置(x,y )有关,但随像素位置(x,y )的变化,DS(x,y)变化缓慢。
DST(x,y)模板与源图像对应区域的互相关,它随像素位置(x,y )的变化而变化,当模板t(j,k)和源图像中对应区域相匹配时取最大值。
DT(x,y)称为模板的能量,它与图像像素位置(x,y)无关,只用一次计算便可。
显然,计算误差平方和测度可以减少计算量。
基于上述分析,若设DS(x,y)也为常数,则用DST(x,y)便可进行图像匹配,当DST(x,y)取最大值时,便可认为模板与图像是匹配的。
但假设DS(x,y)为常数会产生误差,严重时将无法下确匹配,因此可用归一化互相关作为误差平方和测度,其定义为:11(,)(,)(,)J K t j k f x j y k R x y --⋅++=∑∑ (2.6)模板匹配的示意图如图图2.1所示,其中假设源图像f(x,y)和模板图像t(k,l)的原点都在左上角。
对任何一个f(x,y)中的(x,y),根据上式都可以算得一个R(x,y).当x和y变化时,t(j,k)在源图像区域中移动并得出R(x,y)所有值。
R(x,y)的最大值指出了与t(j,k)匹配的最佳位置,若从该位置开始在源图像中取出与模板大小相同的一个区域,便可得到匹配图像。
图2.1 模板匹配示意图3 仿真内容3.1 相关函数说明1、imread函数功能:从图像文件(BMP,HDF,JPEG,PCX,TIFF,XWD等格式)中读入图像数据。
格式:A=imread(文件名,’图像文件格式’)说明:文件名为指定图像文件名称的字符串。
’图像文件格式’为图像文件格式的字符串。
文件名必须在当前目录或MATLAB路径中,如果找不到则录找’文件名.图像文件格式’.A为无符号8位整数(uint8)。
如果文件灰度图像(详细解释见“算法设计”中的“概念解释”),则A为一个二维数组;如果文件是一个真彩色RGB图像,则A是一个三维数组(m×n×3)。
举例:A=imread(‘E:\temp_pictur e.jpg’);%读取存放在E盘下的名为temp_picture.jpg 的图像,并将其整个点阵数据传给A。
注:在MATLAB中申请一个变量时不需要指定类型,其具体类型由系统自动判别。
2、imwrite函数功能:交图像写入图像文件(以BMP,HDF,JPEG,PCX,TIFF,XWD等格式)。
格式:imwrite(A,文件名,‘图像文件格式’)说明:文件名为指定图像文件名称的字符串。
‘图像文件格式’是指定图像文件的保存格式的字符串。
如果A是一个无符号8位整数表示的灰度图像或真彩色图像,imwrite 直接交数组A中的值写入文件。
如果A为双精度浮点数,imwrite首先使用uint8(round(255*A))自动将数组中的值变换为无符号8位整数,即交[0,1]范围内的浮点数变换为[0,255]范围内8位整数,然后写入文件。
3、imshow函数功能:图像显示。
格式:imshow(I)说明:在图形窗口显示I,其中I为用imread函数赋值的变量,是一个图形矩阵。
4、rgb2gray函数功能:转换RGB图像或颜色映像表为灰度图像。
格式:I = rgb2gray(RGB)说明:RGB为用imread函数赋值的变量,是一个图形矩阵;I为一个表示灰度图像的二维数组。
5、imcrop函数功能:图像剪裁。
格式:Ⅰ:I2=imcrop(I)Ⅱ:I2=imcrop(I,RECT)说明:格式Ⅰ为交互方式,imcrop显示输入图像,等待用户用鼠标定义要剪裁的矩形。
格式Ⅱ为非交互方式,对灰度图像进行非交互方式的剪裁操作,通过四元素向量RECT=[xmin ymin width height]指定剪裁矩阵,这些值是定义在坐标系中的,xmin 和ymin是图像矩阵I的一处坐标,width是以此坐标为准向右的延伸的长度,height是以此坐标为准向下延伸的长度,由此构成要剪裁的矩形区域。
6、size函数功能:用来求出某一个变量的的大小参数。
格式:[x,y]=size(I)说明:I用imread函数赋值的变量,是一个图形矩阵且为灰度图像,x用来保存I的高度值,y用来保存I的宽度值。
7、mean2函数功能:求图像均值格式:m=mean2(A)说明:mean2函数可用来计算图像矩阵A的均值m,m是双精度标量。
举例:I=imread(‘temp_picture.jpg’);m=mean2(I)运行结果:m=107.67558、corr2函数功能:求图像间相关系数。
格式:r=cor2(A,B)说明:corr2函数计算图像矩阵A 与B 的相关系数,矩阵A 与B 的大小相同,如均为:m×n 。
计算公式如下:()()mn mn A A B B r --=∑∑ (3.1) 其中,A =mean2(A), B =mean2(B)。