基于灰度值的模板匹配-SAD-SSD

本文介绍了模板匹配中的简单绝对差(SAD)和平方差(SSD)度量方法,这两种方法用于计算模板与图像间的相似性。SAD效率高但对光照变化敏感,而SSD更稳定但计算复杂。文章还讨论了模板查找过程和代码实现,以及其在机器视觉领域的应用。
摘要由CSDN通过智能技术生成

算法思想

基于模板与与图像中最原始的灰度值进行匹配,计算模板与与图像之间的相似度进行实现。可以想象沿图像中的所有点移动模板并在每个位置计算相似度量 S S S

定义

最简单的相似性度量方法是计算模板图像与图像之间的差值的绝对值总和( S A D SAD SAD)或所有差值的平方和( S S D SSD SSD1
s a d ( r , c ) = 1 n ∑ ( u , v ) ∈ T ∣ t ( u , v ) − f ( r + u , c + v ) ∣ sad(r, c) = \dfrac{1}{n}\sum _{\left( u,v\right) \in T}\left| t\left( u,v\right) -f\left( r+u,c+v \right) \right| sad(r,c)=n1(u,v)Tt(u,v)f(r+u,c+v)

s s d ( r , c ) = 1 n ∑ ( u , v ) ∈ T [ t ( u , v ) − f ( r + u , c + v ) ] 2 ssd(r, c) = \dfrac{1}{n}\sum _{\left( u,v\right) \in T}\left[ t\left( u,v\right) -f\left( r+u,c+v \right) \right]{^2} ssd(r,c)=n1(u,v)T[t(u,v)f(r+u,c+v)]2
其中n是模板感兴趣区域中的点的数量,即 n = ∣ T ∣ n=|T| n=T
如果模板与图像相同,相似度为0。不同,相似值会大于0

查找过程

为了在图像中找到模板的实例,使用给定的上限对相似性图像 s a d ( r , c ) sad(r,c) sad(r,c)进行阈值分割,一般情况,得到的结果是包含一些邻接像素的区域。为了得到模板的位置,需要在给定的连通区域中选择相似性图像的最小值。

代码

// sad计算
for r in range(0, img_src_height - img_tp_gray_height):
    for c in range(0, img_src_width - img_tp_gray_width):
        # 每一点的相似性计算
        sum_sad = 0.0
        for u in range(0, img_tp_gray_height):
            for v in range(0, img_tp_gray_width):
                sum_sad += abs(img_tp_gray[u][v] - img_src_gray[r+u][c+v])
        dst[r, c] = round(1.0/n*sum_sad)

优点

计算效率非常高,因为每个像素只需要2个操作。

缺点

光照变化或者图像中存在多个相同物体,会返回非常大的结果。

参考文献


  1. [德]卡斯特恩·斯蒂格(CarstenSteger),机器视觉算法及应用; ↩︎

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值