模板匹配
模板匹配[1]是数字图像处理中用于查找与模板图像匹配的图像的小部分的技术。它可以作为质量控制的一部分用于制造,[2]一种导航移动机器人的方法,[3]或作为一种检测图像边缘的方法。[4]
模板匹配任务的主要挑战是:遮挡,非刚性变换的检测,光照和背景变化,背景杂波和尺度变化。[5]
内容
- 1基于特征的方法
- 2基于模板的方法
- 3运动跟踪和遮挡处理
- 4计算解剖学中的可变形模板
- 5使用互相关或绝对差之和来解释基于模板的匹配
- 6实施
- 7加快这一进程
- 8提高匹配的准确性
- 9类似的方法
- 10使用示例
- 11另见
- 12参考文献
- 13外部链接
基于特征的方法[ 编辑]
隐藏层输出保存有关图像的分类信息的向量,并在模板匹配算法中用作图像的特征
基于特征的方法依赖于图像特征的提取,例如形状,纹理,颜色,以匹配目标图像或帧。目前,这种方法是通过使用神经网络和深度学习分类器实现的,例如VGG,[6]AlexNet,ResNet。深度卷积神经网络通过将图像传递通过不同的隐藏层来处理图像,并且在每个层处产生具有关于图像的分类信息的向量。这些矢量从网络中提取并用作图像的特征。基于深度神经网络的特征提取非常有效,因此是现有技术模板匹配算法的标准。[7]
该方法被认为是更加鲁棒的并且是最先进的,因为它可以匹配具有非刚性和平面外变换的模板,它可以匹配高背景杂波和光照变化。[8] [9] [10]
基于模板的方法[ 编辑]
对于没有强大功能的模板,或者当模板图像的大部分构成匹配图像时,基于模板的方法可能是有效的。如上所述,由于基于模板的模板匹配可能需要对大量点进行采样,因此可以通过以相同因子降低搜索和模板图像的分辨率并对其执行操作来减少采样点的数量。结果缩小的图像(多分辨率或金字塔),提供搜索图像内的数据点的搜索窗口,使得模板不必搜索每个可行的数据点,或两者的组合。
运动跟踪和遮挡处理[ 编辑]程序代写接单群733065427
在模板可能不提供直接匹配的情况下,实现特征空间的使用可能是有用的- 特征空间 - 在许多不同条件下详细描述匹配对象的模板,例如变化的透视,照明,颜色对比或可接受的匹配对象“姿势”。[11] 例如,如果用户正在寻找一个面,所述本征空间可以包括在不同的位置到摄像机面的图像(模板)的,在不同的光照条件下,或用不同的表达式。
匹配图像也可能被对象遮挡或遮挡; 在这些情况下,提供大量模板来覆盖每个可能的遮挡是不合理的。例如,搜索图像可以是扑克牌,并且在一些搜索图像中,卡被拿着卡的某人的手指遮挡,或者由其上的另一张卡或摄像机前面的任何物体遮挡。对于这个问题。在物体具有延展性或可摆动性的情况下,运动也成为问题,并且涉及运动和遮挡的问题变得模糊。[12] 在这些情况下,一种可能的解决方案是将模板图像划分为多个子图像,并在每个细分上执行匹配。
计算解剖学中的可变形模板[ 编辑]
更多信息:计算解剖学§计算解剖学中的密集图像匹配
模板匹配是计算解剖学(CA)中的核心工具。所述可变形的模板模型[13]人的解剖结构的模型中的空间是微分同胚的组作用下一个轨道。模板匹配在匹配作用于模板的未知微分同胚以匹配目标图像时出现问题。
CA中的模板匹配算法被称为大变形微分形测量映射(LDDMM); 现在有LDDMM模板匹配算法,用于匹配地标点,曲线,曲面,体积。
使用互相关或绝对差值之和解释基于模板的匹配[ 编辑]
模板匹配的基本方法使用针对我们想要检测的搜索图像的特定特征定制的图像块(模板)。可以在灰度图像或边缘图像上容易地执行该技术。该互相关输出将是最高的,在在图像结构的屏蔽结构,其中大量图像值获得由大口罩值乘以相匹配的地方。
该方法通常通过首先挑选出搜索图像的一部分以用作模板来实现:我们将调用搜索图像S(x,y),其中(x,y)表示搜索图像中每个像素的坐标。我们将调用模板T(x t,y t),其中(x t,y t)表示模板中每个像素的坐标。然后我们简单地将模板T(x t,y t)的中心(或原点)移动到搜索图像中的每个(x,y)点上,并计算S(x,y)中系数之间的乘积之和和T(x t,y t)在模板跨越的整个区域上。由于考虑了模板相对于搜索图像的所有可能位置,具有最高分数的位置是最佳位置。此方法有时称为“线性空间过滤”,模板称为过滤器掩码。
使用模板匹配处理图像上的转换问题的另一种方法是使用SAD(绝对差值和)度量来比较像素的强度。
具有坐标(x s,y s)的搜索图像中的像素具有强度I s(x s,y s),并且具有坐标(x t,y t)的模板中的像素具有强度I t(x t,y s)t)。因此,像素强度的绝对差被定义为Diff(x s,y s,x t,y t)= | 我是(x s,y s) - I t(x t,y t)| 。
{\ displaystyle SAD(x,y)= \ sum _ {i = 0} ^ {T _ {\ text {rows}}} \ sum _ {j = 0} ^ {T _ {\ text {cols}}} {{ \文本{DIFF}}(X + I,Y + J,I,J)}}
当我们在每个像素处翻译模板的原点并采取SAD测量时,关于在搜索图像中循环遍历像素的想法的数学表示如下:
{\ displaystyle \ sum _ {x = 0} ^ {S _ {\ text {rows}}} \ sum _ {y = 0} ^ {S _ {\ text {cols}}} {SAD(x,y)}}
S 行和S col表示搜索图像的行和列,T 行和T col表示模板图像的行和列。在该方法中,最低SAD分数给出了搜索图像内模板的最佳位置的估计。该方法易于实现和理解,但它是最慢的方法之一。
实施[ 编辑]
在这个简单的实现中,假设上述方法应用于灰度图像:这就是使用Gray作为像素强度的原因。此实现中的最终位置给出了模板图像与搜索图像最佳匹配的左上角位置。
minSAD = VALUE_MAX ;
//通过搜索图像循环
为 ( 为size_t X = 0 ; X <= S_cols - T_cols ; X ++ ) {
对于 ( 为size_t Ŷ = 0 ; Ŷ <= S_rows - T_rows ; Ÿ ++ ) {
SAD = 0.0 ;
//通过模板图像循环
为 ( 为size_t Ĵ = 0 ; Ĵ < T_cols ; Ĵ ++ )
为 ( 为size_t 我 = 0 ; 我 < T_rows ; 我++ ) {
像素 p_SearchIMG = S [ y + i ] [ x + j ];
像素 p_TemplateIMG = T [ i ] [ j ];
SAD + = abs ( p_SearchIMG 。格雷 - p_TemplateIMG 。灰色 );
}
//保存找到的最佳位置
if ( minSAD > SAD ) {
minSAD = SAD ;
//给我闵SAD
位置。bestRow = y ;
位置。bestCol = x ;
位置。bestSAD = SAD ;
}
}
}
在彩色图像上执行模板匹配的一种方法是将像素分解成它们的颜色分量,并使用分别为每种颜色计算的SAD的总和来测量颜色模板和搜索图像之间的匹配质量。
加快进程[ 编辑]
过去,由于操作的计算复杂性,这种类型的空间滤波通常仅用于专用硬件解决方案,[14]但是我们可以通过在图像的频域中对其进行滤波来降低这种复杂性,称为'频域滤波,这是通过使用卷积定理完成的。
加速匹配过程的另一种方法是使用图像金字塔。这是一系列不同尺度的图像,它们通过对原始图像进行重复滤波和二次采样而形成,以便生成一系列降低分辨率的图像。[15]这些较低分辨率的图像,然后可以搜索用于模板(与同样减小的分辨率),以便产生用于在较大规模搜索可能的开始位置。然后可以在起始位置周围的小窗口中搜索较大的图像以找到最佳模板位置。
其他方法可以处理诸如平移,缩放,图像旋转甚至所有仿射变换之类的问题。[16] [17] [18]
提高匹配的准确性[ 编辑]
通过使用多个模板(本征空间)可以对匹配方法进行改进,这些其他模板可以具有不同的比例和旋转。
通过混合基于特征的方法和基于模板的方法,还可以提高匹配方法的准确性。[19] 当然,这要求搜索和模板图像具有足够明显的特征以支持特征匹配。
类似的方法[ 编辑]
其他相似的方法包括“ 立体匹配 ”,“ 图像配准 ”和“ 尺度不变特征变换 ”。
使用示例[ 编辑]
模板匹配具有各种应用,并且用于诸如面部识别(参见面部识别系统)和医学图像处理的领域中。过去已经开发并使用了系统来计算在一定时间内穿过桥梁的一部分的面部的数量。其他系统包括数字胸部X射线内的自动钙化结节检测。[20] 近来,这种方法是在地质统计模拟,可能提供一种快速算法来实现。[21]