卷積運算

轉自:https://www.zhihu.com/question/22298352算法

從數學上講,卷積就是一種運算。函數

某種運算,能被定義出來,至少有如下特徵:學習

  • 首先是抽象的、符號化的
  • 其次,在生活、科研中,有着普遍的做用

好比加法:3d

  • a+b ,是抽象的,自己只是一個數學符號
  • 在現實中,有很是多的意義,好比增長、合成、旋轉等等

卷積,是咱們學習高等數學以後,新接觸的一種運算,由於涉及到積分、級數,因此看起來以爲很複雜。blog

1 卷積的定義ci

咱們稱 (f*g)(n)f,g 的卷積get

其連續的定義爲:數學

\displaystyle (f*g)(n)=\int _{-\infty }^{\infty }f(\tau )g(n-\tau )d\tau

其離散的定義爲:io

\displaystyle (f*g)(n)=\sum _{\tau =-\infty }^{\infty }{f(\tau )g(n-\tau )}

這兩個式子有一個共同的特徵:圖像處理

這個特徵有什麼意義?

咱們令 x=\tau ,y=n-\tau ,那麼 x+y=n 就是下面這些直線:

若是遍歷這些直線,就比如,把毛巾沿着角捲起來:

此處受到 荊哲:卷積爲何叫「卷」積? 答案的啓發。

只看數學符號,卷積是抽象的,很差理解的,可是,咱們能夠經過現實中的意義,來習慣卷積這種運算,正如咱們小學的時候,學習加減乘除須要各類蘋果、糖果來幫助咱們習慣同樣。

咱們來看看現實中,這樣的定義有什麼意義。

2 離散卷積的例子:丟骰子

我有兩枚骰子:

把這兩枚骰子都拋出去:

求:

這裏問題的關鍵是,兩個骰子加起來要等於4,這正是卷積的應用場景。

咱們把骰子各個點數出現的機率表示出來:

那麼,兩枚骰子點數加起來爲4的狀況有:

所以,兩枚骰子點數加起來爲4的機率爲:

f(1)g(3)+f(2)g(2)+f(3)g(1)

符合卷積的定義,把它寫成標準的形式就是:

\displaystyle (f*g)(4)=\sum _{m=1}^{3}f(4-m)g(m)

3 連續卷積的例子:作饅頭

樓下早點鋪子生意太好了,供不該求,就買了一臺機器,不斷的生產饅頭。

假設饅頭的生產速度是 f(t) ,那麼一天後生產出來的饅頭總量爲:

\int _{0}^{24}f(t)dt

饅頭生產出來以後,就會慢慢腐敗,假設腐敗函數爲 g(t) ,好比,10個饅頭,24小時會腐敗:

10*g(t)

想一想就知道,第一個小時生產出來的饅頭,一天後會經歷24小時的腐敗,第二個小時生產出來的饅頭,一天後會經歷23小時的腐敗。

如此,咱們能夠知道,一天後,饅頭總共腐敗了:

\int _{0}^{24}f(t)g(24-t)dt

這就是連續的卷積。

4 圖像處理

4.1 原理

有這麼一副圖像,能夠看到,圖像上有不少噪點:

高頻信號,就好像平地聳立的山峯:

看起來很顯眼。

平滑這座山峯的辦法之一就是,把山峯刨掉一些土,填到山峯周圍去。用數學的話來講,就是把山峯周圍的高度平均一下。

平滑後獲得:

4.2 計算

卷積能夠幫助實現這個平滑算法。

有噪點的原圖,能夠把它轉爲一個矩陣:

而後用下面這個平均矩陣(說明下,原圖的處理實際上用的是正態分佈矩陣,這裏爲了簡單,就用了算術平均矩陣)來平滑圖像:

g=\begin{bmatrix} \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \\ \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \\ \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \end{bmatrix}

記得剛纔說過的算法,把高頻信號與周圍的數值平均一下就能夠平滑山峯。

好比我要平滑 a_{1,1} 點,就在矩陣中,取出 a_{1,1} 點附近的點組成矩陣 f ,和 g 進行卷積計算後,再填回去:

要注意一點,爲了運用卷積, g 雖然和 f 同維度,但下標有點不同:

我用一個動圖來講明下計算過程:

寫成卷積公式就是:

\displaystyle (f*g)(1,1)=\sum _{k=0}^{2}\sum _{h=0}^{2}f(h,k)g(1-h,1-k)

要求 c_{4,5} ,同樣能夠套用上面的卷積公式。

這樣至關於實現了 g 這個矩陣在原來圖像上的划動(準確來講,下面這幅圖把 g 矩陣旋轉了 180^\circ ):

相關文章
相關標籤/搜索