互相關(cross correlation)
在瞭解卷積(convolution),就可以來談互相關(cross correlation)的概念了。首先,我們知道卷積是一種運算方式,可以把函式 $f$ 與 $g$ 翻轉、相乘並積分,那麼這種運算方式可以告訴我們什麼呢?目前最常見的卷積運算用於機器學習,也就是卷積神經網絡(Convolutional Neural Network,CNN),利用核(Kernel,特徵矩陣)提取出圖片的邊緣、模糊處理等。然而,互相關卻是另外一種運算方式。
Mathematical Definition
對於連續(continuous)函數: $$ (f * g)(t) = \int_{-\infty}^{\infty} f(\tau) \overline{g(t + \tau)} d\tau $$ 對於離散(discrete)函數: $$ (f * g)[n] = \sum_{m=-\infty}^{\infty} f[m] g^*[n + m] $$
其中 $t, n$ 稱為移位(displacement)或滯後(lag),而 $\overline{g}$ 與 $g^*$ 則是 $g$ 的負共軛,若: $$ g(t)\in \mathbb{R},\quad \forall t\in \mathbb{R} $$ $$ g[n]\in \mathbb{R},\quad \forall n\in \mathbb{Z} $$
也就是 $g$ 只有實部的話,則 $\overline{g}, g^*=g$。足以看見,互相關與卷積相比只差了一個負號,也就是取消了翻轉 $g$ 的步驟!下面以 Python 展示離散函數的互相關運算:
|
|
可以發現,當lag=0,也就是 $f$ 與 $g$ 完全對齊的時候, $f$ 與 $g$ 的互相關最大。因此互相關就是比較兩個函數並計算出他們的相似程度,在最相似的點其互相關值最高。
References
- FightingChiken,信号分析关系之互相关(cross-correlation)(essential)