卷積

卷積

泛函分析中,卷積、旋積或摺積(英語:Convolution)是通過兩個函數f和g生成第三個函數的一種數學運算元,表徵函數f與經過翻轉和平移的g的重疊部分的累積。如果將參加卷積的一個函數看作區間的指示函數,卷積還可以被看作是“滑動平均”的推廣。

簡介


褶積(又名卷積)和反褶積(又名去卷積)是一種積分變換的數學方法,在許多方面得到了廣泛應用。用褶積解決試井解釋中的問題,早就取得了很好成果;而反褶積,直到最近,Schroeter、Hollaender和Gringarten等人解決了其計算方法上的穩定性問題,使反褶積方法很快引起了試井界的廣泛注意。有專家認為,反褶積的應用是試井解釋方法發展史上的又一次重大飛躍。他們預言,隨著測試新工具和新技術的增加和應用,以及與其它專業研究成果的更緊密結合,試井在油氣藏描述中的作用和重要性必將不斷增大。

基本內涵


簡單定義:卷積是分析數學中一種重要的運算。
設:f(x),g(x)是R1上的兩個可積函數,作積分:
卷積
卷積
可以證明,關於幾乎所有的實數x,上述積分是存在的。這樣,隨著x的不同取值,這個積分就定義了一個新函數h(x),稱為函數f與g的卷積,記為h(x)=(f*g)(x)。
容易驗證,(f * g)(x) = (g * f)(x),並且(f * g)(x)仍為可積函數。這就是說,把卷積代替乘法,L1(R1)空間是一個代數,甚至是巴拿赫代數。
卷積與傅里葉變換有著密切的關係。利用一點性質,即兩函數的傅里葉變換的乘積等於它們卷積后的傅里葉變換,能使傅里葉分析中許多問題的處理得到簡化。
由卷積得到的函數f*g一般要比f和g都光滑。特別當g為具有緊緻集的光滑函數,f為局部可積時,它們的卷積f * g也是光滑函數。利用這一性質,對於任意的可積函數f,都可以簡單地構造出一列逼近於f的光滑函數列fs,這種方法稱為函數的光滑化或正則化。
卷積的概念還可以推廣到數列、測度以及廣義函數上去。

定義


卷積是兩個變數在某範圍內相乘后求和的結果。如果卷積的變數是序列x(n)和h(n),則卷積的結果
卷積
卷積
其中星號*表示卷積。當時序n=0時,序列h(-i)是h(i)的時序i取反的結果;時序取反使得h(i)以縱軸為中心翻轉180度,所以這種相乘后求和的計演演算法稱為卷積和,簡稱卷積。另外,n是使h(-i)位移的量,不同的n對應不同的卷積結果。
如果卷積的變數是函數x(t)和h(t),則卷積的計算變為
卷積
卷積
其中p是積分變數,積分也是求和,t是使函數h(-p)位移的量,星號*表示卷積。
參考《數字信號處理》楊毅明著,p.55、p.188、p.264,機械工業出版社2012年發行。

性質


perfect spaces卷積混響
perfect spaces卷積混響
各種卷積運算元都滿足下列性質:
交換律 結合律 分配律 數乘結合律 其中a為任意實數(或複數)。
微分定理 其中Df表示f的微分,如果在離散域中則是指差分運算元,包括前向差分與後向差分兩種。

卷積定理


卷積定理指出,函數卷積的傅里葉變換是函數傅里葉變換的乘積。即,一個域中的卷積相當於另一個域中的乘積,例如時域中的卷積就對應於頻域中的乘積。
F(g(x)*f(x)) = F(g(x))F(f(x))
其中F表示的是傅里葉變換。
這一定理對拉普拉斯變換、雙邊拉普拉斯變換、Z變換、Mellin變換和Hartley變換(參見Mellin inversion theorem)等各種傅里葉變換的變體同樣成立。在調和分析中還可以推廣到在局部緊緻的阿貝爾群上定義的傅里葉變換。
利用卷積定理可以簡化卷積的運算量。對於長度為n的序列,按照卷積的定義進行計算,需要做2n- 1組對位乘法,其計算複雜度為;而利用傅里葉變換將序列變換到頻域上后,只需要一組對位乘法,利用傅里葉變換的快速演演算法之後,總的計算複雜度為。這一結果可以在快速乘法計算中得到應用。

群上卷積


卷積與相關分析
卷積與相關分析
若G是有某m測度的群(例如豪斯多夫空間上Harr測度下局部緊緻的拓撲群),對於G上m-勒貝格可積的實數或複數函數f和g,可定義它們的卷積:
對於這些群上定義的卷積同樣可以給出諸如卷積定理等性質,但是這需要對這些群的表示理論以及調和分析的Peter-Weyl定理。

應用


卷積在工程和數學上都有很多應用:
統計學中,加權的滑動平均是一種卷積。概率論中,兩個統計獨立變數X與Y的和的概率密度函數是X與Y的概率密度函數的卷積。聲學中,回聲可以用源聲與一個反映各種反射效應的函數的卷積表示。電子工程與信號處理中,任一個線性系統的輸出都可以通過將輸入信號與系統函數(系統的衝激響應)做卷積獲得。物理學中,任何一個線性系統(符合疊加原理)都存在卷積。
卷積應用
卷積應用
介紹一個實際的概率學應用例子。假設需求到位時間的到達率為poisson(λ)分佈,需求的大小的分佈函數為D(.),則單位時間的需求量的分佈函數為 F(x):
其中 D(k)(x)為k階卷積。
卷積是一種線性運算,圖像處理中常見的mask運算都是卷積,廣泛應用於圖像濾波。castlman的書對卷積講得很詳細。
高斯變換就是用高斯函數對圖像進行卷積。高斯運算元可以直接從離散高斯函數得到:
for(i=0; i
{
for(j=0; j
{
g[i*N+j]=exp(-((i-(N-1)/2)^2+(j-(N-1)/2)^2))/(2*delta^2));
sum += g[i*N+j];
}
}
再除以 sum 得到歸一化運算元
N是濾波器的大小,delta自選
首先,在提到卷積之前,必須提到卷積出現的背景。卷積是在信號與線性系統的基礎上或背景中出現的,脫離這個背景單獨談卷積是沒有任何意義的,除了那個所謂褶反公式上的數學意義和積分(或求和,離散情況下)。
信號與線性系統,討論的就是信號經過一個線性系統以後發生的變化(就是輸入 輸出 和所經過的所謂系統,這三者之間的數學關係)。所謂線性系統的含義,就是,這個所謂的系統,帶來的輸出信號與輸入信號的數學關係式之間是線性的運算關係。
因此,實際上,都是要根據我們需要待處理的信號形式,來設計所謂的系統傳遞函數,那麼這個系統的傳遞函數和輸入信號,在數學上的形式就是所謂的卷積關係。
卷積關係最重要的一種情況,就是在信號與線性系統或數字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運算等價為頻率域的相乘運算,從而利用FFT等快速演演算法,實現有效的計算,節省運算代價。
C++語言代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void convolution(double *input1, double *input2, double *output, int mm, int nn)
{
double *xx = new double[mm + nn - 1];
// do convolution 
for (int i = 0; i < mm + nn - 1; i++)
{
xx[i] = 0.0;
for (int j = 0; j < mm; j++)
{
if (i - j >= 0 && i - j < nn)
xx[i] += input1[j] * input2[i - j];
}
}
// set value to the output array 
for (int i = 0; i < mm + nn - 1; i++)
output[i] = xx[i];
delete[] xx;
}

地震中的應用


地震勘探中,在地表激發點激發的地震子波(seismic wavelet)向地下傳播,當遇到地下波阻抗界面時,一部分能量就會作為反射地震波向上反射回地表,被地面的感測器接收,隨著地震波不斷向下傳播、反射、接收,就會記錄一系列時間延遲的地震波(大地濾波后的地震子波),稱為地震記錄.
這一過程或地震記錄可以用數學模型描述。如果假設地下介質為古皮奧(Goupilaud)的水平層狀介質模型,子波為雷克(Ricker)子波,地震記錄可以看作是由震源子波與地下反射率函數、多次反射、儀器等諸多因素的相褶
公式
公式
積的過程,令x(t),w(t)和n(t)分別表示地震記錄,地震子波及雜訊,褶積過程數學模型描述為:
長期以來,褶積模型廣泛用於描述地震信號。顧名思義,反褶積就是褶積的逆過程,從地震記錄x(t)中恢復出反射率函數r(t).