热门问题
时间线
聊天
视角

模板匹配

来自维基百科,自由的百科全书

Remove ads

模板匹配(英语:Template matching[1]数字图像处理中用于将模板图像匹配目标图像其中一小部分的技术。在常被用于制作业中的质量控制[2]机器人导航英语robotic navigation[3]或图像边缘检测[4]

模板匹配的最大挑战是遮挡检测,在这种情况下,所需的对象部分隐藏在图像中;此外,当物体扭曲或从不同角度成像时,检测非刚性变换亦为挑战之一。其它挑战因素包括图像对照明和背景变化的敏感性、图像背景杂乱,以及图像尺度变化[5]

传统的模板匹配方法包括交叉相关(Cross Correlation)和绝对差和(Sum of Absolute Differences, SAD)法。随着机器学习领域的进步,使用深度神经网络(如 卷积神经网络)进行特征提取已被证明极其有效,并已成为最先进的模板匹配算法的标准[6]。这种基于特征的方法通常比传统的模板匹配方法更具有稳健性,并且可以匹配具有非刚性和平面外变换以及高背景杂波和光照变化的模板[7][8][9]

Remove ads

实现

在这个简单的实现中,模板匹配方法应用于灰度图像,通过绝对差和法,最终将给出模板图像与搜索图像最匹配的左上角位置。

minSAD = VALUE_MAX;

// 在匹配的图像中进行循环
for ( size_t x = 0; x <= S_cols - T_cols; x++ ) {
    for ( size_t y = 0; y <= S_rows - T_rows; y++ ) {
        SAD = 0.0;

        // 在模板的图像中进行循环
        for ( size_t j = 0; j < T_cols; j++ )
            for ( size_t i = 0; i < T_rows; i++ ) {

                pixel p_SearchIMG = S[y+i][x+j];
                pixel p_TemplateIMG = T[i][j];
		
                SAD += abs( p_SearchIMG.Grey - p_TemplateIMG.Grey );
            }

        // 保存寻找到的最佳位置
        if ( minSAD > SAD ) { 
            minSAD = SAD;
            position.bestRow = y;
            position.bestCol = x;
            position.bestSAD = SAD;
        }
    }
    
}

对彩色图像执行模板匹配的一种方法是将像素分解为其颜色分量,并使用分别为每种颜色计算的SAD之和来测量颜色模板和搜索图像之间的匹配质量。

Remove ads

参见

参考来源

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads