资源描述:
《采用相关分析进行图像的快速匹配定位.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四:采用相关分析进行图像的快速匹配定位1.实验目的:a.掌握图像信号处理的基本概念和一般方法,学会读入图像信息。b.学习图像匹配的一般方法,了解相关估计在图像匹配和检测中的应用。c.熟悉图像匹配与校准定位的基本方法,学习二维图像信号的快速相关估计的基本算法,学会用FFT作快速相关估计。2.实验内容:a.读入图像数据。b.编写图像匹配的程序,从一幅图像中任取一幅子图(模板T),然后在另外一幅图像中寻找能和该子图匹配的目标(Si,j)的位置。c.设计程序界面,将匹配结果直观地显示出来。d.探讨快速算法。3.算法讨论及分析算法1:设模板T在被搜索图S中平
2、移,模板覆盖下的那块子图像我们记做Si,j,(i,j)为这块子图像的左上角象素点在S中的坐标,从图1中,我们可以看出i和j的取值范围为:1
3、i,j匹配时,式(2)的第二项的取值最大。因此,我们可以用以下相关函数作相似性测度:(3)易知,并且仅当为常数时,取极大值,这时T和Si,j匹配。方法一:方法一采用的是完全按照相关系数的定义,使用循环函数,完成对相关系数的求解,程序流程图如下。方法二:(4)为子块与模板图像t相关系数,可通过FFT快速计算,根据FFT的性质有式中为基准图像的傅里叶变换,为模板图像T的傅里叶变换的共轭,因此可通过一次FFT变换和IFFT变化求出整个被搜索图像与模板图像相关系数。根据公式(3),需要计算基准图像的能量值S2。分析得之,可以看出,相邻点的计算含有大量的重复操作
4、。经分析可得,(5)(6)利用之前的结果,可以节省一定的计算时间。4.实验结果及分析该实验使用图片pic1_2.bmp,使用模板templet1_2.bmp。在matlab中,读入的图像数据为图像每一个像素的灰度值,将模板的灰度值存在一个向量中,与原图进行匹配,如果相关系数达到极大值,则说明匹配良好,找到搜索的结果。(a)被搜索的图片pic1_2.bmp(b)被搜索的图片templet1_2.bmp(c)搜索的结果图4-2实验所使用的图片表1两种方法计算时间对比序号方法计算时间1方法一110s2方法二5.2s5.原程序清单方法一:clearallS1=
5、imread('pic1_2.bmp');%读入被搜索的图片pic1_2.bmpS=double(S1);%读入的图片数据类型是uint8,转换类型为doubleg1=imread('templet1_2.bmp');%读入模板图片templet1_2.bmpg=double(g1);%读入的图片数据类型是uint8,转换类型为doublex=size(g,1);%获取g的行数m=size(S,1);%S的X坐标y=size(g,2);%获取g的列数n=size(S,2);%S的Y坐标Sxy=0*g;%定义临时变量tempg=0;tempg=doubl
6、e(tempg);gvector=ones(x*y,1);%定义临时变量,将g矩阵存储为列向量的形式Svector=0*gvector;%定义临时变量,将S矩阵的分块存储为列向量的形式fori1=1:1:x%使用循环,将g矩阵存储为列向量的形式fori2=1:1:ygvector((i1-1)*y+i2,1)=g(i1,i2);endendfornumy=1:1:n-y+1%使用循环,将S矩阵分块存储为列向量的形式fornumx=1:1:m-x+1fori1=1:1:xfori2=1:1:ySxy(i1,i2)=S(i1+numx-1,i2+numy-
7、1);endendfori1=1:1:xfori2=1:1:ySvector((i1-1)*y+i2,1)=Sxy(i1,i2);endendR=corrcoef(gvector,Svector);%求得S分块与模板g的相关系数ifR(1,2)>0.95%找出图片中与模板相匹配的位置,并标记imshow(S1)fori=1:1:ytext(numy+i-1,numx,'o','Color','red');endfori=1:1:xtext(numy,numx+i-1,'o','Color','red');endfori=1:1:xtext(numy
8、+y-1,numx+i-1,'o','Color','red');endfori=1:1:y