基于matlab的相关模板图像匹配技术

一 理论基础

基于相关的模板匹配技术可直接⽤于在⼀幅图像中寻找某种⼦图像模式。图像相关的基本概念是:对于⼤⼩为M×N的图像f(x, y)和⼤⼩为J×K的⼦图像模式w(x, y),f与w的相关可表示为:
c ( x , y ) = ∑ s = 0 K ∑ t = 0 J w ( s , t ) f ( x + s , y + t ) c\left( x,y \right)=\sum\limits_{s=0}^{K}{\sum\limits_{t=0}^{J}{w\left( s,t \right)}}f\left( x+s,y+t \right) c(x,y)=s=0Kt=0Jw(s,t)f(x+s,y+t) (1)

其中,x=0,1,2,…,N-K,y=0,1,2,…,M-J。⽬的是寻找匹配⽽不是对f(x, y)进⾏滤波操作,因此w的原点被设置在⼦图像的左上⻆,并且上式式给出的形式也完全适⽤于J和K为偶数的情况。

计算相关c(x, y)的过程就是在图像f(x,y)中逐点地移动⼦图像w(x, y),使w的原点和点(x,y)重合,然后计算w与f中被w覆盖的图像区域对应像素的乘积之和,以此计算结果作为相关图像c(x, y)在(x,y)点的响应。

相关可⽤于在图像f(x, y)中找到与⼦图像w(x, y)匹配的所有位置。实际上,当w按照上⼀段中描述的过程移过整幅图像f之后,最⼤的响应点(x0,y0 )即为最佳匹配的左上⻆点。我们也可以设定⼀个阈值T,认为响应值⼤于该阈值的点均是可能的匹配位置。

相关的计算是通过将图像元素和⼦模式图像元素联系起来获得的,将相关元素相乘后累加。我们完全可以将⼦图像w视为⼀个按⾏或按列存储的向量 ,将计算过程中被w覆盖的图像区域视为另⼀个按照同样的⽅式存储的向量 。这样一来,相关计算就成了向量之间的点积运算

两个向量的点积为:

a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ∣ b ⃗ ∣ cos ⁡ θ \vec{a}\centerdot \vec{b}=\left| {\vec{a}} \right|\left| {\vec{b}} \right|\cos \theta a b =a b cosθ (2)

其中,θ为向量 a ⃗ \vec{a} a b ⃗ \vec{b} b 之间的夹⻆。显然,当 a ⃗ \vec{a} a b ⃗ \vec{b} b 具有完全相同的⽅向(平⾏)时,cosθ=1,从⽽式(2)取得其最⼤值 ∣ a ⃗ ∣ ∣ b ⃗ ∣ \left| {\vec{a}} \right|\left| {\vec{b}} \right| a b ,这就意味着当图像的局部区域类似于⼦图像模式时,相关运算产⽣最⼤的响应。然⽽,式(2)最终的取值还与向量 a ⃗ \vec{a} a b ⃗ \vec{b} b ⾃⾝的模有关,这将导致按照式(2)计算的相关响应存在着对f和w的灰度幅值⽐较敏感的缺陷。这样⼀来,在f的⾼灰度区域,可能尽管其内容与⼦图像w的内容并不相近,但由于 ∣ a ⃗ ∣ \left| {\vec{a}} \right| a ⾃⾝较⼤⽽同样产⽣⼀个很⾼的响应。可通过对向量以其模值来归⼀化从⽽解决这⼀问题,即通过 a ⃗ ⋅ b ⃗ ∣ a ⃗ ∣ ∣ b ⃗ ∣ \frac{\vec{a}\centerdot \vec{b}}{\left| {\vec{a}} \right|\left| {\vec{b}} \right|} a b a b 来计算相关。

改进的⽤于匹配的相关计算公式如下。

r ( x , y ) = ∑ s = 0 K ∑ t = 0 J w ( s , t ) f ( x + s , y + t ) [ ∑ s = 0 K ∑ t = 0 J w 2 ( s , t ) ⋅ ∑ s = 0 K ∑ t = 0 J f 2 ( x + s , y + t ) ] 1 / 2 r\left( x,y \right)=\frac{\sum\limits_{s=0}^{K}{\sum\limits_{t=0}^{J}{w\left( s,t \right)}}f\left( x+s,y+t \right)}{{{\left[ \sum\limits_{s=0}^{K}{\sum\limits_{t=0}^{J}{{{w}^{2}}\left( s,t \right)\cdot \sum\limits_{s=0}^{K}{\sum\limits_{t=0}^{J}{{{f}^{2}}\left( x+s,y+t \right)}}}} \right]}^{1/2}}} r(x,y)=[s=0Kt=0Jw2(s,t)s=0Kt=0Jf2(x+s,y+t)]1/2s=0Kt=0Jw(s,t)f(x+s,y+t) (3)

改进的相关公式实际上计算的是向量 a ⃗ \vec{a} a b ⃗ \vec{b} b 之间的夹⻆余弦值。显然,它只和图案模式本⾝的形状或纹理有关,与幅值(亮度)⽆关。

二、Matlab实现

在这里插入图片描述
上图原始图像包含有12种不同的图案模式,要在原始图像中找到与⼦图像的最佳匹配。

基于相关的图像匹配结果如下:

在这里插入图片描述

匹配结果一

此时,计算得到的相关响应最大值为1,表示原始图像包含了与子图像纹理结构完全相同的图像区域。

在这里插入图片描述

匹配结果一

此时,计算得到的相关响应最大值为0.9784,表示原始图像包含了与子图像中的最佳匹配区域并不完全相同。

三、资源获取

相关资源可从如下链接获取:

基于matlab的相关模板图像匹配

资源包含以下内容:

1. 基于matlab的相关模板图像匹配.m
2 一幅原始图像与两幅子图像
  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单光学

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值