NCC:《Template matching using fast normalized cross correlation》互相关、卷积、cross correlation、convolution
1.互相关(cross correlation)与卷积(convolution)
1)互相关:
2)卷积
相关的计算步骤:
(1)移动相关核的中心元素,使它位于输入图像待处理像素的正上方
(2)将输入图像的像素值作为权重,乘以相关核
(3)将上面各步得到的结果相加做为输出
卷积的计算步骤:
(1)卷积核绕自己的核心元素顺时针旋转180度
(2)移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
(3)在旋转后的卷积核中,将输入图像的像素值作为权重相乘
(4)第三步各结果的和做为该输入像素对应的输出像素
二者的区别是在进行操作时,卷积需要把卷积核进行180度的旋转之后在进行操作,而互相关则是直接进行滤波的操作,具体实例如下:
f 函数
w 滤波器模板
eg:
f(x,y)=
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
w(x,y)=
1 2 3
4 5 6
7 8 9
相关 f*w =
0 0 0 0 0
0 9 8 7 0
0 6 5 4 0
0 3 2 1 0
0 0 0 0 0
卷积f*w=
0 0 0 0 0
0 1 2 3 0
0 4 5 6 0
0 7 8 9 0
0 0 0 0 0
可以明显看到卷积与互相关的不同,相关的用途:图象的匹配
假如函数f中存在w的一个复制版本,即f:0 0 0 0 0
0 1 2 3 0
0 4 5 6 0
0 7 8 9 0
0 0 0 0 0
f*w是多少呢?读者也自己算吧。
9 26 50 38 21
42 94 154 106 54
90 186 285 186 90
54 106 154 94 42
21 38 50 26 9
在进行相关运算后,可以找到一个最大值,此处的位置就是进行模板匹配所找到的一个位置。
3)互相关与卷积的方式:
一共有三种方式:
①full
②same
③valid
2.论文中的思想:《Template matching using fast normalized cross correlation》
直接把模板与图形进行互相关运算操作,但是论文中的相关操作是先进行了标准化处理之后再进行的matching,其进行的公式如下:
上面的表示的是一个位置处进行的互相关操作之后得到的值,tracking就是要找到这个值最大的位置。这样的匹配方式对追踪刚性的对象问题不大,但是对于具有形变以及scale大小变化的对象不太适合,但这也是最原始的也是很好的一种方式。
参考博客:
https://www.cnblogs.com/libing64/archive/2011/12/13/2878738.html