首页 模板匹配MATLAB实现及算法优化

模板匹配MATLAB实现及算法优化

举报
开通vip

模板匹配MATLAB实现及算法优化模板匹配MATLAB实现及算法优化模板匹配MATLAB实现及算法优化PAGE模板匹配MATLAB实现及算法优化模板匹配MATLAB实现及算法优化引言现代社会已进入信息时代,随着计算机技术、通信技术和数学的发展,图像信息处理能力和水平也不断提高,相应的也得到和更多关注、研究和更加广泛的应用。图像匹配是图像处理的一项关键技术,可广泛用于目标识别与跟踪、立体视觉、变化检测、车场车牌识别、人脸识别、机器人导航、测绘、等领域,已成为一门新兴的分支学科。由于拍摄时间、拍摄角度、自然环境的变化、多种传感器的使用和传感器本身...

模板匹配MATLAB实现及算法优化
模板 个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载 匹配MATLAB实现及算法优化模板匹配MATLAB实现及算法优化PAGE模板匹配MATLAB实现及算法优化模板匹配MATLAB实现及算法优化引言现代社会已进入信息时代,随着计算机技术、通信技术和数学的发展,图像信息处理能力和水平也不断提高,相应的也得到和更多关注、研究和更加广泛的应用。图像匹配是图像处理的一项关键技术,可广泛用于目标识别与跟踪、立体视觉、变化检测、车场车牌识别、人脸识别、机器人导航、测绘、等领域,已成为一门新兴的分支学科。由于拍摄时间、拍摄角度、自然环境的变化、多种传感器的使用和传感器本身的缺陷,使拍摄的图像不仅受噪声的影响,而且存在严重的灰度失真和几何畸变。在这种条件下,如何有效地进行图像匹配一直是人们研究的热点和难点。要研究模板匹配,首先必须明确模板匹配的定义:模板匹配是指通过一定的匹配算法在两幅或多幅图像之间识别同名点,如二维图像匹配中通过比较目标区和搜索区中相同大小的窗口的相关系数,取搜索区中相关系数最大所对应的窗口中心点作为同名点。其实质是在基元相似性的条件下,运用匹配准则的最佳搜索问题。简单的讲就是,要判读一幅大图像中是否存在某种已知的图案,则以一幅与该图案有着相同尺寸和方向的小图像为模板,通过一定的算法可以在图中找到目标,确定其坐标位置。那么如何实现模板与原图像的匹配呢?下面将结合一个具体例子说明模板匹配的实现过程。问题描述及解决 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 问题描述现有模板如下图:原图如下图:问题:如何在原图中找到模板所处的位置,并把该位置标记出来。解决方法首先必须建立判断模板与原图相应位置相似程度的准则。对于彩色图像,是基于图像的特征匹配;而灰度图像,则是基于相关函数。本实验的处理对象主要是灰度图片。相关函数又分成两类:差值测度。计算公式如下:相关测度。计算公式如下:显然,上式中的p(x,y)取值范围是0到1。越接近于0, 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示两图像相差越大;越接近于1,表示两图像越相似。有了描述相似程度的数学模型,接下来就可以用MATLAB编程实现模板匹配,从而解决上述问题了。MATLAB实现要实现这个程序,必须有三个重要组成部分:模板循环功能:实现模板扫过原图的每一个像素点。语句:fori=1:M-mforj=1:N-nendend描述:以模板左上角第一个点为标志点,使其依次从左到右、从上到下扫过原图每一个像素点。相似性判断功能:在每一次循环时,计算模板与覆盖的原图区域的相似程度,并判断两图像是否相似。语句:temp=imcrop(im,[j,i,n-1,m-1]);r=corr2(temp,T);%È¡µÃÏà¹ØϵÊýifr>%¹æ¶¨ÖµÎªend描述:imcrop是MATLAB自带库函数,实现的是图像裁剪的功能,这里使用此函数,可以得到原图上被模板覆盖区域,与模板同尺寸的矩阵。corr2也是MATLAB自带库函数,是用来计算两个矩阵的相关测度的。是置信阈值,当相关测度大于时,就认为模板匹配成功。标识原图上匹配成功的区域功能:用框圈出或高亮显示原图上与模板匹配成功的区域位置。语句:plot(j:j+n,i,'w');plot(j:j+n,i+m,'w');plot(j,i:i+m,'w');plot(j+n,i:i+m,'w');描述:此语句实现用方框圈出匹配成功区域。实验结果如图:算法优化模板匹配在实际应用中经常用于制导导引头、传感器等,这类设备计算能力、内存有限,且要求在较短时间内得到处理结果。因此,以减少处理计算量、加快处理速度为目的的算法优化必不可少。我个人将优化的方式分为三种:循环次数优化,具体有粗精匹配相结合、乱序匹配等;相似性计算优化,这是我们此次实验的着眼点,将做具体介绍;以及以上两种思路的结合优化。通过上文列举的相似性计算准则可知,不同数学模型的计算量明显不同,而多种相似性计算公式的存在也为算法优化提供了可能。1.差值测度优化思路:相比相关测度计算,差值测度只计算减法,所以在计算量上将大大降低。语句:temp=imcrop(im,[j,i,n-1,m-1]);a=temp-T;b=abs(a);e=max(a);ife<50;end结果:未优化运行时间:T=采用差值测度优化后运行时间:T=优化思路:TMP法首先认为原图与模板具有相同的直流分量,那么只要检测除直流分量能量外的能量水平,就可以判断相似性。语句:Nimage=im(i:i+r2-1,j:j+c2-1);Nimage=Nimage-mean(mean(Nimage));corr=sum(sum(Nimage.*image22));M(i,j)=corr/sqrt(sum(sum(Nimage.^2)));结果:采用TMP优化算法后运行时间:T=优化思路:TMC法原理与TMP法相同,只是在计算时省略了归一化过程。语句:Nimage=im(i:i+r2-1,j:j+c2-1);Nimage=Nimage-mean(mean(Nimage));corr=sum(sum(Nimage.*image22));corrMat(i,j)=corr;结果:采用TMC优化算法后运行时间:T=边缘检测优化思路:以上所有算法的处理对象都是模板及原图包含的所有信息,但是区别一个物体最直观的方式是区分他的轮廓,所以如果先提取原图与模板轮廓,然后再进行匹配计算,则在保证精度的基础上可以大大减少信息处理量。语句:tedge=edge(tt);wedge=edge(ww);out=filter2(tedge,wedge);o=max(max(out));output=(1/o)*out;结果:采用边缘检测优化算法后运行时间:T=结论:以上4种优化算法相比原未优化算法,在处理相同模板匹配问题的前提下,都显著提升了运行速度。这几种算法中,边缘检测优化算法更具优势。主要程序1.未优化原程序clcclearclosealltic;im=imread('D:\60ÕÔ´«\t-m\');%¶ÁȡԭͼÏñT=imread('D:\60ÕÔ´«\t-m\');%¶ÁÈ¡Æ¥ÅäͼÏñimshow(im);im=rgb2gray(im);%½«Ô­Í¼»Ò¶È»¯T=rgb2gray(T);%½«Æ¥Åäͼ»Ò¶È»¯im=double(im);T=double(T);[m,n]=size(T);%»ñÈ¡Æ¥ÅäͼÏóµÄ´óС³ß[M,N]=size(im);%»ñȡԭͼÏóµÄ´óС³ß´çholdonfori=1:M-mforj=1:N-ntemp=imcrop(im,[j,i,n-1,m-1]);r=corr2(temp,T);%È¡µÃÏà¹ØϵÊýifr>%¹æ¶¨ÖµÎª%ÏÂÃæÓÃplotº¯ÊýÔÚԭͼµÄ×ø±êϵÉÏ»­³öÆ¥ÅäÇøÓòplot(j:j+n,i,'w');plot(j:j+n,i+m,'w');plot(j,i:i+m,'w');plot(j+n,i:i+m,'w');endendendtime=toc;2.差值测度优化clcclearclosealltic;im=imread('D:\60ÕÔ´«\t-m\');%¶ÁȡԭͼÏñT=imread('D:\60ÕÔ´«\t-m\');%¶ÁÈ¡Æ¥ÅäͼÏñimshow(im);im=rgb2gray(im);%½«Ô­Í¼»Ò¶È»¯T=rgb2gray(T);%½«Æ¥Åäͼ»Ò¶È»¯im=double(im);T=double(T);[m,n]=size(T);%»ñÈ¡Æ¥ÅäͼÏóµÄ´óС³ß[M,N]=size(im);%»ñȡԭͼÏóµÄ´óС³ß´çholdonfori=1:M-mforj=1:N-ntemp=imcrop(im,[j,i,n-1,m-1]);a=temp-T;b=abs(a);e=max(a);ife<50;%ÈÏΪ×î´óÎó²îСÓÚ50¼´Æ¥Åä³É¹¦%ÏÂÃæÓÃplotº¯ÊýÔÚԭͼµÄ×ø±êϵÉÏ»­³öÆ¥ÅäÇøÓòplot(j:j+n,i,'w');plot(j:j+n,i+m,'w');plot(j,i:i+m,'w');plot(j+n,i:i+m,'w');endendendtime=toc;3.TMP优化clcclearclosealltic;im=imread('D:\60ÕÔ´«\t-m\');%¶ÁȡԭͼÏñT=imread('D:\60ÕÔ´«\t-m\');%¶ÁÈ¡Æ¥ÅäͼÏñim=rgb2gray(im);%½«Ô­Í¼»Ò¶È»¯T=rgb2gray(T);%½«Æ¥Åäͼ»Ò¶È»¯im=double(im);T=double(T);[r1,c1]=size(im);[r2,c2]=size(T);image22=T-mean(mean(T));%»ùÓÚÄÜÁ¿·¨µÄÏà¹ØÐÔ¼ì²âM=[];fori=1:(r1-r2+1)forj=1:(c1-c2+1)Nimage=im(i:i+r2-1,j:j+c2-1);Nimage=Nimage-mean(mean(Nimage));%ÓëÄ£°åÖغϲ¿·ÖԭͼÏñµÄ¾ùÖµ²îcorr=sum(sum(Nimage.*image22));M(i,j)=corr/sqrt(sum(sum(Nimage.^2)));endend%plotboxonthetargetimageresult=plotbox(im,T,M);imshow(uint8(result));title('MatchingResultusingtmp');%figure,%subplot(2,2,1),imshow(uint8(T));title('Template');%subplot(2,2,2),imshow(uint8(im));title('Target');%subplot(2,2,3),imshow(uint8(result));title('MatchingResultusingtmp');time=toc;优化clcclearclosealltic;im=imread('D:\60ÕÔ´«\t-m\');%¶ÁȡԭͼÏñT=imread('D:\60ÕÔ´«\t-m\');%¶ÁÈ¡Æ¥ÅäͼÏñim=rgb2gray(im);%½«Ô­Í¼»Ò¶È»¯T=rgb2gray(T);%½«Æ¥Åäͼ»Ò¶È»¯im=double(im);T=double(T);[r1,c1]=size(im);[r2,c2]=size(T);%Ä£°åµÄ¾ùÖµ²îimage22=T-mean(mean(T));corrMat=[];%»ùÓÚ¾ùÖµ²îµÄÏà¹ØÐÔ¼ìÑéfori=1:(r1-r2+1)forj=1:(c1-c2+1)Nimage=im(i:i+r2-1,j:j+c2-1);Nimage=Nimage-mean(mean(Nimage));%ÓëÄ£°åÖغϲ¿·ÖµÄͼÏñ¾ùÖµ²îcorr=sum(sum(Nimage.*image22));corrMat(i,j)=corr;endend%plotboxonthetargetimageresult=plotbox(im,T,corrMat);imshow(uint8(result));title('MatchingResultusingtmc');%figure,%subplot(2,2,1),imshow(uint8(T));title('Template');%subplot(2,2,2),imshow(uint8(im));title('Target');%subplot(2,2,3),imshow(uint8(result));title('MatchingResultusingtmc');time=toc;5.边缘检测优化clcclearclosealltic;%¶ÁÈëͼÏñSw=imread('D:\60ÕÔ´«\t-m\');w=im2double(w);sizw=size(w);%figure%imshow(w)%title('InputImage')%¶ÁÈëÄ£°åTt=imread('D:\60ÕÔ´«\t-m\');t=im2double(t);sizt=size(t);%figure%imshow(t)%title('TargetImage')ww=rgb2gray(w);tt=rgb2gray(t);%ÓÅ»¯-ÓñßÔµ½øÐÐÏà¹Ø¼ì²âtedge=edge(tt);wedge=edge(ww);%²ÉÓþí»ýÅжÏÏà¹ØÐÔ£¬ÈôÏàͬ£¬¾í»ý×î´óout=filter2(tedge,wedge);o=max(max(out));output=(1/o)*out;%ÕÒµ½Ä£°åλÖ㬲¢¸ßÁÁÏÔʾģ°åÇøÓòpixel=find(output==1);pcolumn=fix(pixel/sizw(1));prow=mod(pixel,sizw(1));rdis=fix(sizt(1)/2);cdis=fix(sizt(2)/2);cmin=pcolumn-cdis;cmax=pcolumn+cdis;rmin=prow-rdis;rmax=prow+rdis;c=[cmincmincmaxcmax];r=[rminrmaxrmaxrmin];m=roipoly(ww,c,r);m=im2double(m);%figure,imshow(m);m=*(m+1);mask(:,:,1)=m;mask(:,:,2)=m;mask(:,:,3)=m;final=mask.*w;figureimshow(final)title('ResultImage')time=toc;子程序functionresult=plotbox(im,T,M);[r1,c1]=size(im);[r2,c2]=size(T);[r,c]=max(M);[r3,c3]=max(max(M));i=c(c3);j=c3;result=im;forx=i:i+r2-1fory=jresult(x,y)=255;endendforx=i:i+r2-1fory=j+c2-1result(x,y)=255;endendforx=ifory=j:j+c2-1result(x,y)=255;endendforx=i+r2-1fory=j:j+c2-1result(x,y)=255;endend
本文档为【模板匹配MATLAB实现及算法优化】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_870701
暂无简介~
格式:doc
大小:74KB
软件:Word
页数:12
分类:
上传时间:2021-11-24
浏览量:0