
文章來自我的CSDN同名博客,歡迎文末掃碼關(guān)注~
定義
基于上一篇文章的通俗化例子,我們從基本概念上了解了卷積,那么更嚴(yán)格的定義是怎樣的呢?
從數(shù)學(xué)上講,卷積只不過是一種運(yùn)算,對(duì)于很多沒有學(xué)過信號(hào)處理,自動(dòng)控制的同學(xué)來說各種專業(yè)的名詞可以不做了解,我們接著繼續(xù)。本質(zhì)上卷積是將二元函數(shù)卷成一元函數(shù)?,俗稱降維打擊。
1. 怎么卷?
考慮到函數(shù)?f和g應(yīng)該地位平等,或者說變量x和y應(yīng)該地位平等,一種可取的辦法就是沿直線
卷起來
2. 卷了有什么用?
可以用來做多位數(shù)乘法,比如:

注意第二個(gè)等號(hào)右邊每個(gè)括號(hào)里的系數(shù)構(gòu)成的序列 (14,34,14,4),實(shí)際上就是序列 (2,4) 和 (7,3,1) 的卷積。在乘數(shù)不大時(shí)這么干顯得有點(diǎn)蛋疼,不過要計(jì)算很長很長的兩個(gè)數(shù)乘積的話,這種處理方法就能派上用場(chǎng)了,因?yàn)槟憧梢杂每焖俑盗⑷~變換 FFT 來得到卷積,比示例里的硬乘要快多了
有一個(gè)不太嚴(yán)謹(jǐn)?shù)睦斫猓?/p>
X是“基”,a是在這個(gè)基上的展開系數(shù)。兩個(gè)多項(xiàng)式乘積的在基上展開的系數(shù)就是兩個(gè)多項(xiàng)式各自在基上展開系數(shù)的卷積。
a對(duì)應(yīng)著頻率不同的exp(ikt),系數(shù)對(duì)應(yīng)著其傅里葉變換。自然就是乘積的傅里葉變換等于傅里葉變換的卷積了。
卷積的內(nèi)核(涉及推導(dǎo)過程,可以跳過)
首先我們要理解這樣一個(gè)概念:內(nèi)積、積分、投影這三者其實(shí)從某個(gè)角度上講是一個(gè)意思。
定義一組向量
另一組向量
那么內(nèi)積可以表達(dá)為:
瞧,這即是內(nèi)積,也是累加(積分)。投影的概念則可以理解為向量a在基向量b上的一組投影,坐標(biāo)為
這和一個(gè)點(diǎn)在3D歐幾里得空間的三軸投影坐標(biāo)是一個(gè)道理。
這樣,我們可以順便先來看看Fourier變換在做什么:
再引入一個(gè)完美的式子,歐拉公式:

從Fourier的定義式可以看出是對(duì)f(t)和exp(-jwt)相乘后在無窮域上對(duì)其進(jìn)行積分,那么其實(shí)就是將f(t)投影在exp(-jwt)上,如果不理解是什么鬼就變換為兩個(gè)正交的三角函數(shù)(歐拉公式就在這里起作用~)
所以這就明朗了:Fourier把f(t)投影到了兩個(gè)為正交關(guān)系的正弦和余弦空間中。也可以從周期信號(hào)的Fourier級(jí)數(shù)分解表達(dá)式更容易看出這個(gè)投影關(guān)系。
這個(gè)投影有點(diǎn)奇怪,它在投影之前先把g(T)做了一個(gè)反對(duì)稱,然后再投影。對(duì)應(yīng)到前面推導(dǎo)的系統(tǒng)卷積表達(dá)式:
相當(dāng)于在投影之前,先把輸入信號(hào)r(t)在時(shí)間軸上翻轉(zhuǎn)了180°,然后與系統(tǒng)f(t)進(jìn)行投影。投影的概念我們可以很好理解,無論是向量內(nèi)積運(yùn)算相當(dāng)于線投影,或者空間的一個(gè)多面體在三維空間平面上的投影面,這種投影運(yùn)算就相當(dāng)于一種重合面積。
如果從這個(gè)角度去看輸入、系統(tǒng)和輸出三者之間的關(guān)系,那么就可以從圖形角度去理解為什么一個(gè)一階系統(tǒng)在階躍響應(yīng)輸出下是一條單調(diào)上升的曲線了。這里用一張wikipedia里關(guān)于卷積的一張圖形化解釋,想要了解更多的同學(xué)可以自行查閱相關(guān)教材
(感謝知乎學(xué)霸王尼莫的幫助)
卷積的應(yīng)用
用一個(gè)模板和一幅圖像進(jìn)行卷積,對(duì)于圖像上的一個(gè)點(diǎn),讓模板的原點(diǎn)和該點(diǎn)重合,然后模板上的點(diǎn)和圖像上對(duì)應(yīng)的點(diǎn)相乘,然后各點(diǎn)的積相加,就得到該點(diǎn)的卷積值。對(duì)圖像上的每個(gè)點(diǎn)都這樣處理。
由于多數(shù)模板都對(duì)稱,所以模板不旋轉(zhuǎn)。卷積是一種積分運(yùn)算,用來求兩個(gè)曲線重疊區(qū)域面積??梢钥醋骷訖?quán)求和,可以用來消除噪聲、特征增強(qiáng)。把一個(gè)點(diǎn)的像素值用它周圍的點(diǎn)的像素值的加權(quán)平均代替。
卷積也可以理解為一種線性運(yùn)算,圖像處理中常見的mask運(yùn)算都是卷積,廣泛應(yīng)用于圖像濾波。?卷積關(guān)系最重要的一種情況,就是在信號(hào)與線性系統(tǒng)或數(shù)字信號(hào)處理中的卷積定理。
利用該定理,可以將時(shí)間域或空間域中的卷積運(yùn)算等價(jià)為頻率域的相乘運(yùn)算,從而利用FFT等快速算法,實(shí)現(xiàn)有效的計(jì)算,節(jié)省運(yùn)算代價(jià)。
下面是來自sselssbh博客的一個(gè)例子,非常形象的解釋了卷積在圖像領(lǐng)域的作用
有這么一副圖像,可以看到,圖像上有很多噪點(diǎn):?
高頻信號(hào),就好像平地聳立的山峰:?
看起來很顯眼。平滑這座山峰的辦法之一就是,把山峰刨掉一些土,填到山峰周圍去。用數(shù)學(xué)的話來說,就是把山峰周圍的高度平滑以下得到
卷積可以實(shí)現(xiàn)這個(gè)平滑算法。有噪點(diǎn)的原圖,可以把它轉(zhuǎn)為一個(gè)矩陣:?
然后用下面這個(gè)平均矩陣(說明下,原圖的處理實(shí)際上用的是正態(tài)分布矩陣,這里為了簡單,就用了算術(shù)平均矩陣)來平滑圖像:
記得剛才說過的算法,把高頻信號(hào)與周圍的數(shù)值平均一下就可以平滑山峰。比如我要平滑a1,1?點(diǎn),就在矩陣中,取出a1,1點(diǎn)附近的點(diǎn)組成矩陣 f ,和 g 進(jìn)行卷積計(jì)算后,再填回去?
要注意一點(diǎn),為了運(yùn)用卷積, g雖然和f同維度,但下標(biāo)有點(diǎn)不一樣:?
寫成卷積公式就是:
這樣相當(dāng)于實(shí)現(xiàn)了 g 這個(gè)矩陣在原來圖像上的劃動(dòng)(準(zhǔn)確來說,下面這個(gè)二維卷積的例子把 g 矩陣旋轉(zhuǎn)了180°?)
2維卷積
在圖像識(shí)別中,2 維卷積是一個(gè)最常用,也是相當(dāng)簡單的操作:從卷積核開始,這是一個(gè)小的權(quán)值矩陣。這個(gè)卷積核在 2 維輸入數(shù)據(jù)上「滑動(dòng)」,對(duì)當(dāng)前輸入的部分元素進(jìn)行矩陣乘法,然后將結(jié)果匯為單個(gè)輸出像素。
立體的角度來看,二維層面的卷積就是移動(dòng)和映射(自上而下)
而從平面展開則是如下的過程,每一個(gè)藍(lán)色9宮格的數(shù)字都對(duì)應(yīng)了一個(gè)綠色各自的數(shù)字,這個(gè)對(duì)應(yīng)過程就是卷積的具體計(jì)算。
再比如做饅頭
樓下早點(diǎn)鋪?zhàn)由馓昧?,供不?yīng)求,就買了一臺(tái)機(jī)器,不斷的生產(chǎn)饅頭。?
假設(shè)饅頭的生產(chǎn)速度是 f(t) ,那么一天后生產(chǎn)出來的饅頭總量為:?
饅頭生產(chǎn)出來之后,就會(huì)慢慢腐敗,假設(shè)腐敗函數(shù)為 g(t) ,比如,10個(gè)饅頭,24小時(shí)會(huì)腐?。?/p>
想想就知道,第一個(gè)小時(shí)生產(chǎn)出來的饅頭,一天后會(huì)經(jīng)歷24小時(shí)的腐敗,第二個(gè)小時(shí)生產(chǎn)出來的饅頭,一天后會(huì)經(jīng)歷23小時(shí)的腐敗。?如此,我們可以知道,一天后,饅頭總共腐敗了:?
