您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 采用相关分析进行图像的快速匹配定位
实验四采用相关分析进行图像的快速匹配定位实验目的1.掌握图像信号处理的基本概念和一般方法,学会读入图像信息。2.学习图像匹配的一般方法,了解相关估计在图像匹配和检测中的应用。3.熟悉图像匹配与校准定位的基本方法,学习二维图像信号的快速相关估计的基本算法,学会用FFT作快速相关估计。实验原理图像可看成矩阵mnAR其元素0,255ija。考虑到所匹配的图像匹配部分的大小和方向是严格相等的,那么使两幅图像匹配,即是找到图像所对应的矩阵A的子矩阵ijA与B矩阵相似或者相等。对于一般情况,即存在若干个ijA与B相似,则在A中所有与B维度相同的子矩阵ijA,一定满足有若干个满足,1122,1111,,,,,MNijmnMNMNijmnmnSmnTmnRijSmnTmn-------------------------------(1.1)其中M和N分别为矩阵B的维度。而是我们人为设定的关于相似度的数值。当完全匹配时1实验方法情况1:在大图像上能够找到多处于小图像相似的部分,但是该部分与小图像的矩阵并不完全相同,即相关系数不为1.思路:从大图像左上角第一点开始,逐行逐列遍历所有大小与小图像相等的子矩阵ijA,与小图像矩阵B用(1.1)式进行求解,凡事遇到,Rij大于时,则将大图像上该部分进行变暗处理。总结:这种方法适用于所有情况,但是计算步骤最多,耗时最久。情况2:在大图像上仅能找到一处与小图像相似的部分,但是该部分与小图像的矩阵并不完全相同,即相关系数不为1.思路:与情况1相同,但是只要找到ijA与B满足,Rij大于时,则将大图像上该部分进行变暗处理,跳出循环。总结:这种情况适用于仅有一处匹配情况,耗时相对第一中快。情况3:小图像中若干像素能够代替小图像进行匹配。思路:取消图像上若干像素构建矩阵B,其余情况与情况1相同。总结:这种方式速度提高较多,适用于小图像尺寸较大的情况。情况4:小图像与大图像能够完全匹配,即,Rij。思路:1.取小图像上第一点,在大图像上找到与之相同的点,将这些相同的点组成新的列向量。2.在将小图像上第二点,与之前构成的列向量还原到大图像上的下一点相匹配,在构成新的列向量。3.重复以上步骤。4.设定匹配像素个数后,再对该位置的对象图像进行相关处理,验证,Rij。5.变暗输出。总结:速度较之前的方法快很多,但是只适用于完全相等的匹配。实验结果图1普适匹配图2一处匹配,完全匹配实验代码普适代码:能够识别多处匹配,以及模糊匹配;选择templet1_2.bmp总时间20.505s,选择templet1_1.bmp图片总时间48.855sfigure1=imread('pic1_3.bmp');figure2=imread('templet1_2.bmp');[h1,l1]=size(figure1);[h2,l2]=size(figure2);figure3=zeros(h2,l2);figure3(1:h2,1:l2)=figure2(1:h2,1:l2);%构建与figure2相同的矩阵格式(数值能够大于255)figure4=zeros(h2,l2);%构建与figure2大小相同的矩阵格式(数值能够大于255)s1=sqrt(sum(sum(figure3.^2)));%匹配图像能量%flag=0;%循环初始条件figure5=figure1;fori=1:h1-h2+1%匹配单元的行循环区间forj=1:l1-l2+1%匹配单元的列循环区间figure4(1:h2,1:l2)=figure1(i:i+h2-1,j:j+l2-1);%从被扫描图像中选出需要匹配部分s2=sum(sum(figure3.*figure4));%匹配图像与被扫描图像的互相关s3=sqrt(sum(sum(figure4.*figure4)));%被扫描图像能量r=s2/(s1*s3);%匹配判据图像if(r0.97)%根据接受的模糊程度设定r的范围figure5(i:i+h2-1,j:j+l2-1)=figure1(i:i+h2-1,j:j+l2-1)./2;%重叠部分变暗imshow(figure5)%输出重叠部分图像%flag=1;%终止循环条件%break%跳出j循环endend%ifflag==1%break%跳出i循环%endend适用于一处匹配,模糊匹配选择templet1_1.bmp图片总时间18.876sfigure1=imread('pic1_3.bmp');figure2=imread('templet1_2.bmp');[h1,l1]=size(figure1);[h2,l2]=size(figure2);figure3=zeros(h2,l2);figure3(1:h2,1:l2)=figure2(1:h2,1:l2);%构建与figure2相同的矩阵格式(数值能够大于255)figure4=zeros(h2,l2);%构建与figure2大小相同的矩阵格式(数值能够大于255)s1=sqrt(sum(sum(figure3.^2)));%匹配图像能量flag=0;%循环初始条件figure5=figure1;fori=1:h1-h2+1%匹配单元的行循环区间forj=1:l1-l2+1%匹配单元的列循环区间figure4(1:h2,1:l2)=figure1(i:i+h2-1,j:j+l2-1);%从被扫描图像中选出需要匹配部分s2=sum(sum(figure3.*figure4));%匹配图像与被扫描图像的互相关s3=sqrt(sum(sum(figure4.*figure4)));%被扫描图像能量r=s2/(s1*s3);%匹配判据图像if(r0.97)%根据接受的模糊程度设定r的范围figure5(i:i+h2-1,j:j+l2-1)=figure1(i:i+h2-1,j:j+l2-1)./2;%重叠部分变暗imshow(figure5)%输出重叠部分图像flag=1;%终止循环条件break%跳出j循环endendifflag==1break%跳出i循环endend匹配图像中局部像素能顾代替整体进行匹配,一处匹配,模糊匹配选择templet1_1.bmp图片,用第1行前50个像素进行匹配,总时间4.566sfigure1=imread('pic1_1.bmp');figure2=imread('templet1_1.bmp');figure3=zeros(1,50);%构建匹配最小单元figure4=zeros(1,50);%构建匹配最小单元figure5=figure1;%创建输出图像figure3(1,1:50)=figure2(41,1:50)%从匹配图像中选出一部分s1=sqrt(sum(sum(figure3.^2)));%匹配图像能量flag=0;%循环初始条件fori=41:431%实际匹配单元的行循环区间forj=1:487%实际匹配单元的列循环区间figure4(1,1:50)=figure1(i,j:j+49);%从被扫描图像中选出需要匹配部分s2=sum(sum(figure3.*figure4));%匹配图像与被扫描图像的互相关s3=sqrt(sum(sum(figure4.^2)));%被扫描图像能量r=s2/(s1*s3)%匹配判据图像if(r0.995)figure1(i-40:i+49,j:j+153)=figure1(i-40:i+49,j:j+153)./2;%匹配部分变暗imshow(figure1)%输出重叠部分图像flag=1;%终止循环条件break%跳出j循环endendifflag==1break%跳出i循环endend一处匹配,精确匹配选择逐点进行匹配选择templet1_1.bmp图片,用时0.312sfigure1=imread('pic1_1.bmp');figure2=imread('templet1_1.bmp');[h1,l1]=size(figure1);[h2,l2]=size(figure2);figure3(1:h1-h2+1,1:l1-l2+1)=figure1(1:h1-h2+1,1:l1-l2+1);%进行第一点匹配时矩阵范围a=figure2(1,1);%读取匹配第一点数值[r,c]=find(figure3==a);%提取匹配成功的点在figure1中的位置fori=2:l2m=length(r);figure4=zeros(m,1);%将匹配成功的点生出新的列向量figure4(1:m)=figure1(r+(c+i-2)*h1);%将匹配成功的点生出新的列向量a=figure2(1,i);%读取第i个匹配点数值[r1]=find(figure4==a);%提取匹配成功的点在figure4中的位置r=r(r1);%还原figure4中的位置到figure1c=c(r1);%还原figure4中的位置到figure1ifm==1%判断匹配是否成功breakendendfigure1(r:r+h2-1,c:c+l2-1)=figure1(r:r+h2-1,c:c+l2-1)./2;imshow(figure1)
本文标题:采用相关分析进行图像的快速匹配定位
链接地址:https://www.777doc.com/doc-4802842 .html