人形模板匹配算法.docx
- 文档编号:27181080
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:9
- 大小:20.81KB
人形模板匹配算法.docx
《人形模板匹配算法.docx》由会员分享,可在线阅读,更多相关《人形模板匹配算法.docx(9页珍藏版)》请在冰豆网上搜索。
人形模板匹配算法
竭诚为您提供优质文档/双击可除
人形模板匹配算法
篇一:
matlab模板匹配算法程序
%£°¥
%function[maxheight,maxwidth,maxR]=
templatematcher(im_matched,im_template)
im_matched=imread(d:
\matchingalgorithm\matching\2.jpg);
%im_template=imread(d:
\matchingalgorithm\matching\1.jpg);
rect=[25617814567]
im_template=imcrop(im_matched,rect);
imshow(im_template);
ifisrgb(im_matched)
im_matched=rgb2gray(im_matched);
end
ifisrgb(im_template)
im_template=rgb2gray(im_template);
end
dim_matched=double(im_matched);
dim_template=double(im_template);
%·2
sigmast=0.0;
sigmas=0.0;
sigmat=0.0;
%àd2aè
%doubleR
%×′óàd2aè
maxR=0.0;
%×′óàd3
maxwidth=0;
maxheight=0;
%sigmat
tic
[tempheight,tempwidth]=size(im_template);
forn=1:
tempheight
form=1:
tempwidth
sigmat=sigmat+dim_template(n,m)^2;
end
end
sigmat=sqrt(sigmat);
%òμíd×′óàdμ3
[height,width]=size(im_matched);
%width=size(im_matched,2);
forj=1:
height-tempheight
fori=1:
width-tempwidth
sigmast=0;
sigmas=0;
forn=1:
tempheight
form=1:
tempwidth
sigmas=sigmas+dim_matched(j+n,i+m)^2;
sigmast=sigmast+dim_template(n,m)*dim_matched(j+n,i+m);end
end
%àd
sigmas=sqrt(sigmas);
R=sigmast/(sigmas*sigmat);
%ó×′óàd±è
if(R>maxR)
maxR=R;
maxwidth=i+1;
maxheight=j+1;
end
end
end
toc
recwidth=[maxwidthmaxwidth+tempwidth-1maxwidth+tempwidth-1maxwidthmaxwidth];
recheight=[maxheightmaxheightmaxheight+tempheight-1
maxheight+tempheight-1maxheight];
figure,imshow(im_matched);holdon,plot(recwidth,recheight,r-);
篇二:
模板匹配方法总结
很早就想总结一下前段时间学习halcon的心得,但由于其他的事情总是抽不出时间。
去年有过一段时间的集中学习,做了许多的练习和实验,并对基于hdevelop的形状匹配算法的参数优化进行了研究,写了一篇《基于hdevelop的形状匹配算法参数的优化研究》文章,总结了在形状匹配过程中哪些参数影响到模板的搜索和匹配,又如何来协调这些参数来加快匹配过程,提高匹配的精度,这篇paper放到了中国论文在线了,需要可以去下载。
德国mVtec公司开发的halcon机器视觉开发软件,提供了许多的功能,在这里我主要学习和研究了其中的形状匹配的算法和流程。
hdevelop开发环境中提供的匹配的方法主要有三种,即component-based、gray-Value-based、shape-based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配。
这三种匹配的方法各具特点,分别适用于不同的图像特征,但都有创建模板和寻找模板的相同过程。
这三种方法里面,我主要就第三种-基于形状的匹配,做了许多的实验,因此也做了基于形状匹配的物体识别,基于形状匹配的视频对象分割和基于形状匹配的视频对象跟踪这些研究,从中取得较好的效果,简化了用其他工具,比如Vc++来开发的过程。
在Vc下往往针对不同的图像格式,就会弄的很头疼,更不用说编写图像特征提取、模板建立和搜寻模板的代码呢,我想其中间过程会很复杂,效果也不一定会显著。
下面我就具体地谈谈基于halcon的形状匹配算法的研究和心得总结。
1.shape-basedmatching的基本流程
halcon提供的基于形状匹配的算法主要是针对感兴趣的小区域来建立模板,对整个图像建立模板也可以,但这样除非是对象在整个图像中所占比例很大,比如像视频会议中人体上半身这样的图像,我在后面的视频对象跟踪实验中就是针对整个图像的,这往往也是要牺牲匹配速度的,这个后面再讲。
基本流程是这样的,如下所示:
⑴首先确定出Roi的矩形区域,这里只需要确定矩形的左上点和右下点的坐标即可,gen_rectangle1()这个函数就会帮助你生成一个矩形,利用area_center()找到这个矩形的中心;
⑵然后需要从图像中获取这个矩形区域的图像,reduce_domain()会得到这个Roi;这之后就可以对这个矩形建立模板,而在建立模板之前,可以先对这个区域进行一些处理,方便以后的建模,比如阈值分割,数学形态学的一些处理等等;
⑶接下来就可以利用create_shape_model()来创建模板了,这个函数有许多参数,其中金字塔的级数由numlevels指定,值越大则找到物体的时间越少,anglestart和angleextent决定可能的旋转范围,anglestep指定角度范围搜索的步长;这里需要提醒的是,在任何情况下,模板应适合主内存,搜索时间会缩短。
对特别大的模板,用optimization来减少模板点的数量是很有用的;minconstrast将模板从图像的噪声中分离出来,如果灰度值的波动范围是10,则minconstrast应当设为10;metric参数决定模板识别的条件,如果设为’use_polarity’,则图像中的物体和模板必须有相同的对比度;创建好模板后,这时还需要监视模板,用inspect_shape_model()来完成,它检查参数的适用性,还能帮助找到合适的参数;另外,还需要获得这个模板的轮廓,用于后面的匹配,get_shape_model_contours()则会很容易的帮我们找到模板的轮廓;
⑷创建好模板后,就可以打开另一幅图像,来进行模板匹配了。
这个过程也就是在新图像中寻找与模板匹配的图像部分,这部分的工作就由函数find_shape_model()来承担了,它也拥有许多的参数,这些参数都影响着寻找模板的速度和精度。
这个的功能就是在一幅图中找出最佳匹配的模板,返回一个模板实例的长、宽和旋转角度。
其中参数subpixel决定是否精确到亚像素级,设为’interpolation’,则会精确到,这个模式不会占用太多时间,若需要更精确,则可设为’least_square’,’lease_squar
e_high’,但这样会增加额外的时间,因此,这需要在时间和精度上作个折中,需要和实际联系起来。
比较重要的两个参数是minsocre和greediness,前一个用来分析模板的旋转对称和它们之间的相似度,值越大,则越相似,后一个是搜索贪婪度,这个值在很大程度上影响着搜索速度,若为0,则为启发式搜索,很耗时,若为1,则为不安全搜索,但最快。
在大多数情况下,在能够匹配的情况下,尽可能的增大其值。
⑸找到之后,还需要对其进行转化,使之能够显示,这两个函数vector_angle_to_rigid()和affine_trans_contour_xld()在这里就起这个作用。
前一个是从一个点和角度计算一个刚体仿射变换,这个函数从匹配函数的结果中对构造一个刚体仿射变换很有用,把参考图像变为当前图像。
其详细的流程图和中间参数,如下图所示:
(无法上传
2.基于形状匹配的参数关系与优化
在halcon的说明资料里讲到了这些参数的作用以及关系,在上面提到的文章中也作了介绍,这里主要是重复说明一下这些参数的作用,再强调一下它们影响匹配速度的程度;
在为了提高速度而设置参数之前,有必要找出那些在所有测试图像中匹配成功的设置,这时需考虑以下情况:
①必须保证物体在图像边缘处截断,也就是保证轮廓的清晰,这些可以通过形态学的一
些方法来处理;
②如果greediness值设的太高,就找不到其中一些可见物体,这时最后将其设为0来执
行完全搜索;
③物体是否有封闭区域,如果要求物体在任何状态下都能被识别,则应减小minscore
值;
④判断在金字塔最高级上的匹配是否失败,可以通过find_shape_model()减小numlevels
值来测试;
⑤物体是否具有较低的对比度,如果要求物体在任何状态下都能被识别,则应减小
mincontrast值;
⑥判断是否全局地或者局部地转化对比度极性,如果需要在任何状态下都能被识别,则
应给参数metric设置一个合适的值;
⑦物体是否与物体的其他实例重叠,如果需要在任何状态下都能识别物体,则应增加
maxoverlap值;
⑧判断是否在相同物体上找到多个匹配值,如果物体几乎是对称的,则需要控制旋转范
围;
如何加快搜索匹配,需要在这些参数中进行合理的搭配,有以下方法可以参考:
①只要匹配成功,则尽可能增加参数minscore的值;
②增加greediness值直到匹配失败,同时在需要时减小minscore值;
③如果有可能,在创建模板时使用一个大的numlevels,即将图像多分几个金字塔级;④限定允许的旋转范围和大小范围,在调用find_shape_model()时调整相应的参数;⑤尽量限定搜索Roi的区域;
除上面介绍的以外,在保证能够匹配的情况下,尽可能的增大greediness的值,因为在后面的实验中,用模板匹配进行视频对象跟踪的过程中,这个值在很大程度上影响到匹配的速度。
当然这些方法都需要跟实际联系起来,不同图像在匹配过程中也会有不同的匹配效果,在具体到某些应用,不同的硬件设施也会对这个匹配算法提出新的要求,所以需要不断地去尝试。
在接下来我会结合自己做的具体的实验来如何利用halcon来进行实验,主要是在视频对象分割和视频对象的跟踪方面。
待续…………^_^
)
篇三:
图像匹配程序设计——模板匹配
摘要
模板匹配就是把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应模式的处理方法。
模板匹配是数字图像处理的重要组成部分之一。
简单而言,模板就是一幅已知的小图像。
模板匹配就是在一幅大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其坐标位置。
本文主要主要介绍了灰度相关的匹配方法,灰度相关的图像匹配算法是图像匹配算法中比较经典的一种,很多匹配技术都以它为基础进行延伸和扩展。
它是从待拼接图像的灰度值出发,对待匹配图像中一块区域与参考图像中的相同尺寸的区域使用最小二乘法或者其它数学方法计算其灰度值的差异,对此差异比较后来判断待拼接图像重叠区域的相似程度,由此得到待拼接图像重叠区域的范围和位置,从而使用matlab软件实现图像匹配。
当以两块区域像素点灰度值的差别作为判别标准时,最简单的一种方法是直接把各点灰度的差值累计起来。
另一种方法是计算两块区域的对应像素点灰度值的相关系数,相关系数越大,则两块图像的匹配程度越高。
该方法的匹配效果要更好,匹配成功率有所提高。
关键词:
图像匹配;matlab;灰度相关
目录
1需求分析..................................................................................................................1
1.1问题描述.........................................................................................................1
1.2基本要求.........................................................................................................1
2设计方案..................................................................................................................2
2.1相关概念.........................................................................................................2
2.2算法设计.........................................................................................................2
3仿真内容..................................................................................................................5
3.1相关函数说明.................................................................................................5
3.2模版匹配源代码.............................................................................................8
4仿真结果及分析......................................................................................................9
结束语..........................................................................................................................11
参考文献......................................................................................................................12
1需求分析
1.1问题描述
计算机模式识别所要解决的问题,就是用计算机代替人去认识图像和找出一幅图像中人们感兴趣的目标物。
在机器识别物体的过程,常需把不同传感器或同一传感器在不同时间,不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应的模式,这就叫做匹配。
模板匹配是一种最原始、最基本的模式识别方法。
研究某一特定对象物位于图像的位置,进而识别对象,这就是匹配的问题。
利用模板匹配可以在一幅图像中找到已知的物体。
这里的模板指的是一幅待匹配的图像,相当于模式识别的模式。
基本要求如下:
(1).进行匹配的两幅图像为jpg格式或bmp格式。
(2).能够进行对两幅数字图像的匹配。
(3).采用交互式程序对图像进行匹配。
1.2基本要求
通过分析题目的基本要求,我将此使用两种方法实现匹配:
一个是基于灰度的模板匹配,另一个是基于灰度的快速匹配。
在以上两种方法中,用户可以对两张图像进行匹配并显示匹配结果。
2设计方案
2.1相关概念
①数字图像:
数字图像是由被称做像素的小块区域组成的二维像素矩阵。
一般把图像分成3种形式:
单色图像,灰度图像和彩色图像。
②像素:
表示图像颜色的最小单位
③灰度图像:
灰度图是指只含亮度信息,不含色彩信息的图像,就像平时看到的黑白照片:
亮度由暗到明,变化是连续的。
灰度图的每个像素的亮度用一个数值来表示,通常数值范围在0—255之间,即可用一个字节来表示,0表示黑,255表示白,而其他表示灰度。
④点阵图:
显示器的屏幕由可以发光的像素点组成.并且从几何位置看,所用这些像素点构成一个矩形的阵列.利用计算机控制各像素点按我们指定的要求发光,就构成了我们需要的图形.这种方式构成的图形我们可称之为点阵图形.
⑤点阵图形的坐标系统:
各像素点有一个坐标唯一指定了它的位置.如果点阵图形的大小是n×m,那么它的点阵共有m行n列,每个像素点的位置就由它所在的行和列的位置所唯一确定.这个行和列的位置就给出了点阵图形的坐标系统.按照前面的顺序,第m行,第n列的像素点顺序数就是m+(n-1)n.反之,顺序数为s的像素点在第smodn行,第int(s/n)+1列,这里的smodn是s除以n后的余数,int(s/n)是s/n的整数部分.需要注意的是第m行,第n列的像素点的坐标可能不是(m;n),而是(m-1;n-1).这是因为有时为了在计算机中处理的方便,像素点的行列的排序不是从1,而是从0开始的。
我们常用的显示器的像素坐标就是如此。
2.2算法设计
由于各种各样的原因如(成象条件的差异)图象预处理,引入的误差等,参与图象匹配的模板与潜在的匹配子图象间通常存在着程度不同的不一致,因此根据模板在一幅陌生图象中检测出潜在的匹配对象并得出它在图象中的位置是一件复杂的工作。
模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是
否存在与该模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。
模板匹配常用的一种测度为模手术台与源图像对应区域的误差平方和。
设f(x,y)为m×n的源图像,t(j,k)为j×k(j≤m,k≤n)的模板图像,则误差平方和测度定义为:
d(x,y)
由上式展开可得:
2[f(xj,yk)t(j,k)](2.1)j0k0j1k1
d(x,y)[f(xj,yk)]2t(j,k)f(xj,yk)[t(j,k)]2(2.2)2
j0k0jkj0k0j1k1j1k1j1k1
令
ds(x,y)[f(xj,yk)]2(2.3)
j0k0j1k1
dst(x,y)2[t(j,k)f(xj,yk)](2.4)
j0k0j1k1
dt(x,y)[t(j,k)]2(2.5)
j0k0j1k1
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)为常数会产生误差,严重时将无法下确匹配,因此可用归一化互相关作为误差平方和测度,其定义为:
t(j,k)f(xj,yk)
R(x,y)j1k1
(2.6)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人形 模板 匹配 算法