互相关
互相关是相关滤波器中用来评价图像相似性的方法。例如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)dt
f(τ)=h(t)⨂g(t)=∫−∞+∞h(t)g(t+τ)dt
这个定义时常让人感到困惑,但实际上它只是一个基本不等式(
a
2
+
b
2
>
=
2
a
b
a^2+b^2>=2ab
a2+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+τ)]dt≤0→∫−∞+∞h(t)g(t+τ)dt≤21(A+B)where A=∫−∞+∞h2(t)dt, B=∫−∞+∞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^x y=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);