数字图像处理实验八图像匹配-------模板匹配
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称数字图像处理
实验序号实验八
实验项目图像匹配-------模板匹配实验地点实验学时实验类型
指导教师实验员
专业班级
学号姓名
年月日
成绩:
教
师
评
语
一、实验目的及要求
在机器识别物体的过程,常需把不同传感器或同一传感器在不同时间,不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应的模式,这就叫做匹配。模板匹配是一种最原始、最基本的模式识别方法。
利用模板匹配可以在一幅图像中找到已知的物体。这里的模板指的是一幅待匹配的图像,相当于模式识别的模式。基本要求如下:
(1).进行匹配的两幅图像为JPG格式或BMP格式。
(2).能够进行对两幅数字图像的匹配。
(3)采用交互式程序对图像进行匹配。
二、实验原理与内容
模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是
否存在与该模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。
模板匹配常用的一种测度为模手术台与源图像对应区域的误差平方和。设f(x,y)为M×N的源图像,t(j,k)为J×K(J≤M,K≤N)的模板图像,则误差平方和测度定义为:
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)为常数会产生误差,严重时将无法下确匹配,因此可用归一化互相关作为误差平方和测度,其定义为:
模板匹配的示意图如图图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)匹配的最佳位置,若从该位置开始在源图像中取出与模板大小相同的一个区域,便可得到匹配图像。
有关函数注释:
1imwrite函数
功能:交图像写入图像文件(以BMP,HDF,JPEG,PCX,TIFF,XWD等格式)。格式:imwrite(A,文件名,…图像文件格式‟)
说明:文件名为指定图像文件名称的字符串。…图像文件格式‟是指定图像文件的保存格式的字符串。如果A是一个无符号8位整数表示的灰度图像或真彩色图像,imwrite直接交数组A中的值写入文件。如果A为双精度浮点数,imwrite首先使用uint8(round(255*A))自动将数组中的值变换为无符号8位整数,即交[0,1]范围内的浮点数变换为[0,255]范围内8位整数,然后写入文件。
2imcrop函数
功能:图像剪裁。格式:Ⅰ:I2=imcrop(I)Ⅱ:I2=imcrop(I,RECT)
说明:格式Ⅰ为交互方式,imcrop显示输入图像,等待用户用鼠标定义要剪裁的矩形。格式Ⅱ为非交互方式,对灰度图像进行非交互方式的剪裁操作,通过四元素向量RECT=[xmin ymin width height]指定剪裁矩阵,这些值是定义在坐标系中的,xmin和ymin是图像矩阵I的一处坐标,width是以此坐标为准向右的延伸的长度,height是以此坐标为准向下延伸的长度,由此构成要剪裁的矩形区域。3mean2函数
功能:求图像均值格式:m=mean2(A)
说明:mean2函数可用来计算图像矩阵A的均值m,m是双精度标量。
举例:I=imread(…temp_picture.jpg‟);
m=mean2(I)
运行结果:m=107.6755
4orr2函数
功能:求图像间相关系数。格式:r=cor2(A,B)
说明:corr2函数计算图像矩阵A与B的相关系数,矩阵A与B的大小相同,如均为:m×n。
计算公式如下:
相关系数是表示矩阵A与B的线性联系密切程度的一个统计量,相关系数值是小于等于1的正数。值为1时,表示矩阵A与B的线性联系最为密切,值为0时,表示矩阵A与B不相关,线性联系最最弱。
举例:
I=imread(…temp_picture.jpg‟);C=corr2(I,I);运行结果如下:
5plot函数
功能:在线性坐标系中绘制二维数据
格式:plot(x,y,‟颜色‟)
说明:x,y可以为任意一个矢量。举例:
plot(1:100,4,'r');%在纵坐标为4处画一条平行于x轴,长度为100的红色的线段%其中1:100表示从1到100以默认值为1的速度递增,‟r‟表示红色.
6hold命令
功能:可以将图形添加到现有的图形中,从而实现图形的叠加。如果把hold设置为ON,则MATLAB 在绘图时把不再清除已经存在的图形,而是把新的数据直接加到当前图形中。当新的数据落在原来
的坐标范围之外时,MATLAB把自动进行坐标比例的调整.
三、实验软硬件环境
装有MATLAB软件的电脑
四、实验过程(实验步骤、记录、数据、分析)
1、运行下面代码
yuantu=imread('22.jpg');
a=imcrop(yuantu);
imwrite(a,'moban.jpg','jpg');%构建一个模板
pipeitu=imread('moban.jpg');%读取模板图像
yuantu2gray=rgb2gray(yuantu);%将原图灰度化
pipeitu2gray=rgb2gray(pipeitu);%将模板图灰度化
[pipei_height,pipei_width]=size(pipeitu2gray);
[yuantu_height,yuantu_width]=size(yuantu2gray);
imshow(yuantu);%显示原图像
hold on;
for i=1:yuantu_height-pipei_height
for j=1:yuantu_width-pipei_width
temp_picture=imcrop(yuantu2gray,[j,i,pipei_width-1,pipei_height-1]);
r=corr2(temp_picture,pipeitu2gray);%取得相关系数
if r>0.95%规定值为0.95
%下面用plot函数在原图的坐标系上画出匹配区域
plot(j:j+pipei_width,i,'b');
plot(j:j+pipei_width,i+pipei_height,'b');
plot(j,i:i+pipei_height,'b');
plot(j+pipei_width,i:i+pipei_height,'b');
end
end
end
2、运行结果: