栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

了解和评估模板匹配方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

了解和评估模板匹配方法

可以将所有模板匹配模式粗略地分类为密集(在像素方向上) 相似性度量 ,或者等效但相反地,图像之间的 距离度量

通常,您将有两张图像,并且想要以某种方式进行比较。模板匹配并不能直接帮助您匹配缩放,旋转或扭曲的对象。模板匹配严格地涉及精确测量两个图像的相似度。但是,此处使用的实际度量标准在计算机视觉中得到了广泛使用,包括查找图像之间的转换……只是通常还会进行更复杂的步骤(例如梯度下降以找到最佳的转换参数)。

距离度量有很多选择,并且根据应用程序的不同,它们通常具有优缺点。


绝对差之和(SAD)

首先,最基本的距离度量只是两个值之间的绝对差,即

d(x, y) = abs(x -y)
。对于图像,从单个值扩展此范围的简单方法是将所有这些距离相加,逐个像素,从而得出绝对差之和(SAD)度量;它也称为 曼哈顿 距离
出租车距离 ,它定义了 L1范数 。令人讨厌的是,这并不是作为OpenCV的模板匹配模式之一实现的,但是在本次讨论中,与SSD进行比较仍然很重要。

在模板匹配方案中,您可以沿着多个位置滑动模板,然后简单地找出差异最小的位置。这等效于询问数组[1,4,9]中最接近5的索引是什么。您将数组中每个值的绝对差取为5,而索引1的差最小,因此这是最接近的匹配项的位置。当然,在模板匹配中,该值不是5,而是一个数组,并且图像是更大的数组。

平方差总和(SSD):
TM_SQDIFF

SAD度量标准的一个有趣功能是,它不会对真正的大差异造成不利的影响,而不会对一堆非常小的差异产生不利影响。比方说,我们要计算

d(a, b)
d(a,c)
与下列载体:

a = [1, 2, 3]b = [4, 5, 6]c = [1, 2, 12]

以元素为单位的绝对差之和,我们看到

SAD(a, b) = 3 + 3 + 3 = 9 = 0 + 0 + 9 = SAD(a, c)

在某些应用中,也许没关系。但是在其他应用程序中,您可能希望这两个距离实际上是完全不同的。现蕾,而不是采取他们的绝对值差异,处罚进一步从你期望什么样的价值观
—它使图像 在价值上的差异增长遥远。它映射更要怎么有人可以解释的估计为 方式 关闭,即使它的值不是真正 的是
遥远的。平方差之和(SSD)等于平方的 欧几里得距离 ,即 L2范数 的距离函数。使用SSD时,我们看到两个距离现在大不相同:

SSD(a, b) = 3^2 + 3^2 + 3^2 = 27 != 81 = 0^2 + 0^2 + 9^2 = SSD(a, c)

您可能会看到 L1规范 有时被称为 稳健规范
。这是因为单点错误不会比错误本身扩大距离。但是,当然,对于SSD,离群值会使距离更大。因此,如果您的数据容易出现一些非常遥远的值,请注意,SSD可能不是一个好的相似度指标。一个很好的例子可能是比较曝光过度的图像。在图像的某些部分中,您可能只有白色的天空,而其他天空根本不是白色的,因此您将在图像之间获得很大的距离。

当比较的两个映像相同时,SAD和SSD的最小距离均为0。它们都总是非负的,因为绝对差或平方差总是非负的。

互相关(CC):
TM_CCORR

SAD和SSD都是通常离散的指标-
因此,它们是采样信号(如图像)的自然考虑因素。然而,互相关也适用于连续信号,因此也适用于模拟信号,这是信号处理中普遍存在的一部分。对于广泛的信号,试图检测信号中是否存在模板的过程被称为
匹配滤波器 ,您基本上可以将其视为模板匹配的连续模拟。

互相关只是将两个图像相乘。您可以想象,如果两个信号精确对齐,将它们相乘将仅使模板平方。如果它们不是按原样排列的,那么产品将较小。因此,产品最大化的地方就是他们排列最佳的地方。但是,在将互相关用作不确定信号相关性的度量的情况下,互相关存在问题,通常在以下示例中显示。假设您有三个数组:

a = [2, 600, 12]b = [v, v, v]c = [2v, 2v, 2v]

大致来说,

a
and
b
a
and之间没有明显的相关性
c
。通常,
a
与的关联不应
b
超过
c
。但是,它是一种产品,因此
ccorr(a,c) = 2*ccorr(a,b)
。因此,这对于尝试在较大图像中查找模板并不理想。而且由于我们正在处理具有定义的最大值(图像)的离散数字信号,所以这意味着图像的亮白色斑块基本上总是具有最大的相关性。由于这个问题,
TM_CCORR
作为模板匹配方法并不是特别有用。

均值移位互相关(皮尔逊相关系数):
TM_CCOEFF

解决与亮斑相关的问题的一种简单方法是在比较信号之前简单地减去均值。这样,简单移位的信号与未移位的信号具有相同的相关性。凭我们的直觉,这是有道理的-
在一起变化的信号相互关联。

标准化:
TM_SQDIFF_NORMED
TM_CCORR_NORMED
TM_CCOEFF_NORMED

OpenCV中的所有方法均被标准化。规范化的目的 不是
给出置信度/概率,而是给出可以与不同大小的模板或具有不同比例值的模板进行比较的度量。例如,假设我们要查找对象是否在图像中,并且该对象有两个不同的模板。两种不同的模板大小不同。我们可以通过像素数进行归一化,这将可以比较不同大小的模板。但是,说我的模板实际上在强度上有很大不同,就像一个模板的像素值方差比另一个模板大得多。通常,在这种情况下,您要做的就是除以标准偏差(与均值平方差之和的平方根)。

TM_CCOEFF_NORMED
方法,因为均值差的平方和
方差,但其他方法没有均值漂移,因此缩放只是图像值之和的度量。无论哪种方式,结果都是相似的,您希望通过与所使用图像斑块强度有关的缩放比例进行缩放。

其他指标

OpenCV还没有提供其他有用的指标。Matlab提供SAD以及最大绝对差度量(MaxAD),也称为 均匀距离度量, 并给出 L∞范数
。基本上,您采用最大绝对差而不是它们的总和。在优化设置中通常会看到使用的其他度量,例如,首先提出用于立体声匹配的增强的相关系数,然后通常对其进行扩展以进行对齐。该方法用于OpenCV,但不用于模板匹配。您将在

computeECC()
和中找到ECC指标
findTransformECC()


使用哪种方法?

大多数情况下,你会看到范和未赋范SSD( ,

TM_SQDIFF_NORMED
TM_SQDIFF
和零标准化/
ZNCC(互相关
TM_CCOEFF_NORMED
使用)。有时您可能会看到
TM_CCORR_NORMED
,但是却很少见。根据我在网上找到的一些讲义(关于这个话题的一些很好的例子和直觉!),Trucco和Verri的CV书指出,通常SSD的工作优于关联,但是我没有T&V的书来了解为什么他们建议这样做;大概是在真实照片上进行比较。但是,尽管如此,SAD和SSD绝对有用,尤其是在数字图像上。

我不知道任何一种在大多数情况下或某些情况下本质上都更好的示例,我认为这确实取决于您的图像和模板。通常,我会说:如果您正在寻找完全匹配或非常接近完全匹配的内容,请使用SSD。它速度很快,并且可以肯定地映射到您要最小化的内容(模板和图像补丁之间的差异)。在这种情况下,无需进行标准化,这只是增加了开销。如果您有类似的要求,但需要多个模板才能比较,则请标准化SSD。如果您正在寻找匹配项,但是您正在处理可能存在曝光或对比度差异的真实照片,则ZNCC的均值漂移和方差均衡可能是最好的。

至于选择正确的阈值,ZNCC或SSD的值根本不是置信度或概率数。如果要选择正确的阈值,则可以采用多种典型方法来测量参数。您可以计算不同阈值的ROC曲线或PR曲线。您可以使用回归来找到最佳参数。您需要标记一些数据,但至少要对一些测试集进行度量,以确保您的选择不是任意的。像往常一样,在充满数据的字段中,您需要确保数据尽可能接近真实示例,并且测试数据涵盖边缘情况和典型图像。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/648724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号