当前位置:文档之家› 基于Matlab图像匹配——模板匹配

基于Matlab图像匹配——模板匹配

课程名称数字图像处理
实验序号实验8
实验名称图像匹配——模板匹配
实验地点综B207
实验学时 2 实验类型验证性
2017年10 月16 日
一、实验目的及要求
在机器识别物体的过程,常需把不同传感器或同一传感器在不同时间,不同成像条件下对同
一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应的模
式,这就叫做匹配。

模板匹配是一种最原始、最基本的模式识别方法。

利用模板匹配可以在一幅图像中找到已知的物体。

这里的模板指的是一幅待匹配的图
像,相当于模式识别的模式。

基本要求如下:
(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)匹配的最佳位置,若从该位置开始在源图像中取出与模板大小相同的一个区域,便可得到匹配图像。

三、实验软硬件环境
1.计算机
2.Matlab软件
四、实验过程(实验步骤、记录、数据、分析)
1.图像模板匹配
实验代码如下:
a=imread('b.jpg');
a1=imcrop(a);
imwrite(a1,'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
这是在原图上截取一部分作为模板,经过比较长的运算,终于可以在原图像上匹配到的区域
五、测试/调试及实验结果分析
通过代码,可以看到在原图像找到了匹配区域,并且可以画上了对应的框。

六、实验结论与体会
结论:通过本次实验学会了如何在原图像上截取部分作为匹配模板。

由于本次读入的图像
大概为250k,相对有点大,所以经过了比较长的时间才将匹配区域找到。

因此我觉得,提
高效率的有连个,一是先把图像经过压缩再进行匹配,二是优化算法,提高代码的执行率。

相关主题