【Tracker】互相关是啥

互相关

互相关是相关滤波器中用来评价图像相似性的方法。例如SiamFC中使用孪生网络来判断两张图片的相似性,而相关滤波器则是使用互相关来判断两串信号的相似程度。互相关定义如下:
f ( τ ) = h ( t ) ⨂ g ( t ) = ∫ − ∞ + ∞ h ( t ) g ( t + τ ) d t f(\tau)=h(t)\bigotimes g(t)=\int_{-\infty}^{+\infty}h(t)g(t+\tau)dtf(τ)=h(t)g(t)=+h(t)g(t+τ)dt

这个定义时常让人感到困惑,但实际上它只是一个基本不等式(a 2 + b 2 > = 2 a b a^2+b^2>=2aba2+b2>=2ab)的变体。不信咱们结合互相关不等式来康康。令a = h ( t ) , b = g ( t + τ ) a=h(t),b=g(t+\tau)a=h(t),b=g(t+τ), then代入不等式中我们可以得到:
2 h ( t ) g ( t + τ ) − h 2 ( t ) − g 2 ( t + τ ) ≤ 0 → ∫ − ∞ + ∞ [ 2 h ( t ) g ( t + τ ) − h 2 ( t ) − g 2 ( t + τ ) ] d t ≤ 0 → ∫ − ∞ + ∞ h ( t ) g ( t + τ ) d t ≤ 1 2 ( A + B ) where  A = ∫ − ∞ + ∞ h 2 ( t ) d t ,  B = ∫ − ∞ + ∞ g 2 ( t ) d t , they are both constant given  h   and   g 2h(t)g(t+\tau)-h^2(t)-g^2(t+\tau)\leq0\\ \rightarrow \int_{-\infty}^{+\infty}[2h(t)g(t+\tau)-h^2(t)-g^2(t+\tau)]dt\leq0\\ \rightarrow \int_{-\infty}^{+\infty}h(t)g(t+\tau)dt\leq \frac{1}{2}(A+B)\\ \text{where } A=\int_{-\infty}^{+\infty}h^2(t)dt\text{, } B=\int_{-\infty}^{+\infty}g^2(t)dt\text{, they are both constant given \bf{h} and \bf{g}}2h(t)g(t+τ)h2(t)g2(t+τ)0+[2h(t)g(t+τ)h2(t)g2(t+τ)]dt0+h(t)g(t+τ)dt21(A+B)where A=+h2(t)dtB=+g2(t)dt, they are both constant given h and g

就连高中生也能看出来,【∀ t , h ( t ) = g ( t + τ ) \forall t, h(t)=g(t+\tau)t,h(t)=g(t+τ)】则上述积分式达到最大值。However,这仅仅是互相关数值达到最大的充分条件。that means, 当我们计算完互相关得到最大值以及对应的平移量以后,我们不能说经过平移后,两串信号完全相等。因为上述条件并不是必要条件。

计算互相关能够让咱们知道,一串信号沿着坐标轴平移多少单位后,与另一串信号最相似。例如指数函数y = 0.8 4 x y=0.84^xy=0.84x,我们将它的图像沿着x轴向前移动5个单位,然后再计算原始曲线与移动后的曲线的互相关,可以得到(代码来源于Matlab官方说明)。可见,结果显示我们将y2沿着x轴负方向移动5个单位后两串信号最相似,这与我们的实验室设置一致。so,这就是互相关的工作原理。这种方法的原理过于粗暴,用在图像相似性判断的时候很容易受到各种影响。

x = 0:15;
y1 = 0.84^x;
y2 = circshift(y1, 5);
[c, lags] = xcorr(y1, y2);
stem(lags, c);

在这里插入图片描述


版权声明:本文为qq_40840924原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。