加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

模板匹配算法(图像)

(2013-08-27 20:55:16)
分类: 编程

VisionWare中的理论,自己编写的代码。

1.基本术语

   特征:图像中的特定灰度值或边缘模式。特征是实际图像中的一部分。

   模式:特征的抽象表示,包括:灰度值或边缘组,模式尺寸,对比度等。

   定位核:也称为模板图像,其中包含搜索模式。

   实时图像:也称为搜索图像,在其中定位和定位核相同的模式。

   分数:实时图像中,当前模式和定位核的相似性度量。分数量化到0.0和1.0之间;分数越高,匹配更为接近。

   掩模:将定位核中每个像素设定为相关或无关像素。

2.相似性度量(归一化相关系数和分数)

   数学上,定位核和实时图像偏移(u,v)处的相关系数r定义为

 

http://s10/mw690/4ae37197tx6CbHWWmlrb9&690



其中I为实时图像;M为定位核;m和n分别为定位核的宽度和长度;N=m×n。实时图像和定位核的空间关系如下图所示。

 

http://s10/mw690/4ae37197tx6CbI9iOr799&690



    r的值域范围在[-1,1]。值为1.0表示实时图像和定位核区域完全匹配。特别的,如果r=1.0,则存在a和b,对所有位置处i,有

http://s9/mw690/4ae37197tx6CbIFc1w438&690

 

值为-1.0表示完全误匹配,其中a<0,发现的模式和定位核极性相反。

    我们可以直接用相关系数作为相似性度量。但我们倾向于用r^2的形式,其基于以下两点理由:(1)在相关系数计算中,对分子取平方较对分母开平方根运算速度更快;(2)对r取平方,其拓宽高端的动态范围,并压缩低端的动态范围,正好我们关注高端,而不关注低端。

    对r^2形式的相似性度量,我们称为分数,其有以下两种形式

 

http://s10/mw690/4ae37197tx6CbJ2AWz789&690

3.代码

先把公式中各分量的计算公式写成函数,总共有5个

http://s4/mw690/4ae37197tx6CbK8RlHZd3&690

http://s9/mw690/4ae37197tx6CbNlDjy848&690

http://s5/mw690/4ae37197tx6CbKLzyF654&690
http://s1/mw690/4ae37197tx6CbKQYIXC80&690

http://s6/mw690/4ae37197tx6CbKZATYh25&690
根据上面5个公式,直接写匹配函数,该函数遍历了待匹配图像的所有的可能偏移位置,最后找到一个相似度最高的

http://s1/mw690/4ae37197tx6CbLKpM3Ka0&690

http://s3/mw690/4ae37197tx6CbLKqMIq72&690

http://s1/mw690/4ae37197tx6CbLKrYpaf0&690

直接利用openCV里的函数读取模板和待匹配图像,利用match函数即可,其最佳匹配结果保存在类私有变量temp中,该成员是一个结构,在match中可以看到其内部结构,x,y即为定位位置,val为相似度。
http://s12/mw690/4ae37197tx6CbLTANCP5b&690
以上所有函数均通过本人测试,由于算法遍历了所有情况,故运行速度比较慢,可利用搜索策略进行优化。
             

0

阅读 收藏 喜欢 打印举报/Report
前一篇:2013年07月31日
后一篇:2013年10月27日
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有