卷積

卷積、互相關和自相關的圖示比較。運算涉及函數，並假定的高度是1.0，在5個不同點上的值，用在每個點下面的陰影面積來指示。的對稱性是卷積和互相關在這個例子中相同的原因。
在泛函分析中，捲積（convolution），或譯為疊積、-{褶}-積或旋積，是透過兩個函數和生成第三個函數的一種數學算子，表徵函數與經過翻轉和平移的的乘積函數所圍成的曲邊梯形的面積。如果將參加卷積的一個函數看作區間的指示函數，卷積還可以被看作是“滑動平均”的推廣。

**定義**
卷積是數學分析中一種重要的運算。設：和是實數上的兩個可積函數，定義二者的卷積為如下特定形式的積分變換：

仍為可積函數，並且有著：

函數和，如果只支撐在之上，則積分界限可以截斷為：
對於
對於兩個得出複數值的Function of several real variables，可以定義二者的卷積為如下形式的多重積分：
 
卷積有一個通用的工程上的符號約定：

它必須被謹慎解釋以避免混淆。例如：等價於，而卻實際上等價於。

**歷史**
卷積運算的最早使用出現在達朗貝爾於1754年出版的《宇宙體系的幾個要點研究》中對泰勒定理的推導之中。還有西爾維斯特·拉克魯瓦，將類型的表達式，用在他的1797年–1800年出版的著作《微分與級數論文》中。此後不久，卷積運算出現在皮埃爾-西蒙·拉普拉斯、約瑟夫·傅里葉和西梅翁·泊松等人的著作中。這個運算以前有時叫做“Faltung”（德語中的摺疊）、合成乘積、疊加積分或卡森積分。
“卷積”這個術語早在1903年就出現了，然而其定義在早期使用中是相當生僻的，直到1950年代或1960年代之前都未曾廣泛使用。

**簡介**
如果和都是在Lp 空間內的勒貝格可積函數，則二者的卷積存在，並且在這種情況下也是可積的。這是託內利定理的結論。對於在中的函數在離散卷積下，或更一般的對於在任何群的上的卷積，這也是成立的。同樣的，如果而，這裡的，則，並且其Lp 範數間有著不等式：

在的特殊情況下，這顯示出是在卷積下的巴拿赫代數（並且如果和幾乎處處非負則兩邊間等式成立）。
卷積與傅里葉變換有著密切的關係。例如兩函數的傅里葉變換的乘積等於它們卷積後的傅里葉變換，利用此一性質，能簡化傅里葉分析中的許多問題。
由卷積得到的函數，一般要比和都光滑。特別當為具有緊支集的光滑函數，為局部可積時，它們的卷積也是光滑函數。利用這一性質，對於任意的可積函數，都可以簡單地構造出一列逼近於的光滑函數列，這種方法稱為函數的光滑化或正則化。
函數和的互相關，等價於的共軛複數與的卷積：
 
這裡的叫做移位（displacement）或滯後（lag）。
對於單位脈衝函數和某個函數，二者得到的捲積就是本身，此被稱為衝激響應：
 
在連續時間線性非時變系統中，輸出信號被描述為輸入信號與衝激響應的卷積：

兩個獨立的隨機變量和，每個都有一個概率密度函數，二者之和的概率密度，是它們單獨的密度函數的卷積：


**圖解**

**週期卷積**
兩個週期的函數和的“週期卷積”定義為：

這裡的是任意參數。
任何可積分函數，都可以通過求函數的所有整數倍的平移的總和，從而製作出具有周期的週期函數 ，這叫做Periodic summation：

對於無週期函數與，其週期的週期求和分別是與，與的週期卷積，可以定義為與的常規卷積，或與的常規卷積，二者都等價於與的週期積分：


圓周卷積是週期卷積的特殊情況，其中函數和二者的非零部份，都限定在區間之內，此時的週期求和稱為“週期延拓”。中函數可以通過取非負餘數的模除運算表達為“圓周函數”：

而積分的界限可以縮簡至函數的長度範圍：


**離散卷積**
離散卷積示意圖
對於定義在整數上且得出複數值的函數和，離散卷積定義為：

這裡一樣把函數定義域以外的值當成零，所以可以擴展函數到所有整數上（如果本來不是的話）。兩個有限序列的卷積的定義，是將這些序列擴展成在整數集合上有限支撐的函數。在這些序列是兩個多項式的係數之時，這兩個多項式的普通乘積的係數，就是這兩個序列的卷積。這叫做序列係數的柯西乘積。
當的支撐集為有限長度的之時，上式會變成有限求和：


**多維離散卷積**
圖像進行銳化處理的動畫
類似於一維情況，使用星號表示卷積，而維度體現在星號的數量上，維卷積就寫為個星號。下面是維信號的卷積的表示法：

對於離散值的信號，這個卷積可以直接如下這樣計算：

結果的離散多維卷積所支撐的輸出區域，基於兩個輸入信號所支撐的大小和區域來決定。
在兩個二維信號之間的卷積的可視化

**離散週期卷積**
對比離散無週期卷積（左列）與離散圓周卷積（右列）
對於離散序列和一個參數，無週期函數和的“週期卷積”是為：

這個函數有周期，它有最多個唯一性的值。和的非零範圍都是的特殊情況叫做圓周卷積：

離散圓周卷積可簡約為矩陣乘法，這裡的積分變換的核函數是循環矩陣:

圓周卷積最經常出現的快速傅里葉變換的實現算法比如雷德演算法之中。

**性質**

**代數**
各種卷積算子都滿足下列性質：
交換律
 
結合律
 
分配律
 
數乘結合律
 
其中為任意實數（或複數）。
複數共軛
 
微分有關

積分有關
如果，並且，則有：


**積分**
如果和是可積分函數，則它們在整個空間上的卷積的積分，簡單的就是它們積分的乘積：
 
這是富比尼定理的結果。如果和只被假定為非負可測度函數，根據託內利定理，這也是成立的。

**微分**
在一元函數情況下，和的卷積的導數有著：
 
這裡的是微分算子。更一般的說，在多元函數的情況下，對偏導數也有類似的公式：
 
這就有了一個特殊結論，卷積可以看作“光滑”運算：和的卷積可微分的次數，是和的總數。
這些恆等式成立的嚴格條件，為和是絕對可積分的，並且至少二者之一有絕對可積分（）弱導數，這是Young's convolution inequality的結論。
在離散情況下，差分算子滿足類似的關係：
 

**卷積定理**
卷積定理指出，在適當的條件下，兩個函數（或信號）的卷積的傅里葉變換，是它們的傅里葉變換的逐點乘積。更一般的說，在一個域（比如時域）中的卷積等於在其他域（比如頻域）逐點乘法。
設兩個函數和，分別具有傅里葉變換和：

這裡的算子指示傅里葉變換。
卷積定理聲稱：


應用逆傅里葉變換產生推論：


這裡的算符指示逐點乘法。
這一定理對拉普拉斯變換、雙邊拉普拉斯變換、Z變換、梅林變換和Hartley transform等各種傅里葉變換的變體同樣成立。在調和分析中還可以推廣到在局部緊緻的阿貝爾群上定義的傅里葉變換。

**週期卷積**
對於週期為的函數和，可以被表達為二者的Periodic summation：

它們的傅里葉級數係數為：

這裡的算子指示傅里葉級數積分。
逐點乘積的週期也是，它的傅里葉級數係數為：

週期卷積的週期也是，週期卷積的卷積定理為：


**離散卷積**
對於作為兩個連續函數採樣的序列和，它們具有離散時間傅里葉變換和：

這裡的算子指示離散時間傅里葉變換（DTFT）。
離散卷積的卷積定理為：


**離散週期卷積**
對於週期為的序列和：

相較於離散時間傅里葉變換和的週期是，它們是按間隔採樣和，並在個採樣上進行了逆離散傅里葉變換（DFT-1或IDFT）的結果。
離散週期卷積的週期也是。離散週期卷積定理為：

這裡的算子指示長度的離散傅里葉變換（DFT）。
它有著推論：

對於其非零時段小於等於的和，離散圓周卷積的卷積定理為：


**推廣**
卷積的概念還可以推廣到數列、測度以及廣義函數上去。函數是定義在上的可測函數（measurable function），與存在卷積並記作。如果函數不是定義在上，可以把函數定義域以外的值都規定成零，這樣就變成一個定義在上的函數。
若G是有某m 測度的群（例如豪斯多夫空間上哈爾測度下局部緊緻的拓撲群），對於G上m-勒貝格可積的實數或複數函數f和g，可定義它們的卷積：

對於這些群上定義的卷積同樣可以給出諸如卷積定理等性質，但是這需要對這些群的表示理論以及調和分析的彼得-外爾定理。

**離散卷積的計算方法**
計算卷積有三種主要的方法，分別為
#直接計算（Direct Method）
#快速傅立葉轉換（FFT）
#分段卷積（sectioned convolution）
方法1是直接利用定義來計算卷積，而方法2和3都是用到了FFT來快速計算卷積。也有不需要用到FFT的作法，如使用數論轉換。

**方法1：直接計算**
作法：利用卷積的定義
: 
*若和皆為實數信號，則需要個乘法。
*若和皆為更一般性的複數信號，不使用複數乘法的快速演算法，會需要個乘法；但若使用複數乘法的快速演算法，則可簡化至個乘法。
因此，使用定義直接計算卷積的複雜度為。

**方法2：快速傅立葉轉換**
概念：由於兩個離散信號在時域（time domain）做卷積相當於這兩個信號的離散傅立葉轉換在頻域（frequency domain）做相乘：
:
，可以看出在頻域的計算較簡單。
*作法：因此這個方法即是先將信號從時域轉成頻域：
: 
，於是
: 
，最後再將頻域信號轉回時域，就完成了卷積的計算：
: 
總共做了2次DFT和1次IDFT。
*特別注意DFT和IDFT的點數要滿足。
*由於DFT有快速演算法FFT，所以運算量為
*假設點DFT的乘法量為，和為一般性的複數信號，並使用複數乘法的快速演算法，則共需要個乘法。

**方法3：分段卷積**
概念：將切成好幾段（section），每一段分別和做卷積後，再將結果相加。
*作法：先將切成每段長度為的區段（），假設共切成S段：
:
:Section 1: 
:Section 2: 
:: 
:Section r:  
:: 
:Section S: 
，為各個section的和
:。
因此，
:，
每一小段作卷積則是採用方法2，先將時域信號轉到頻域相乘，再轉回時域：
:。
*總共只需要做點FFT 次，因為只需要做一次FFT。
*假設點DFT的乘法量為，和為一般性的複數信號，並使用複數乘法的快速演算法，則共需要個乘法。
*運算量：
*運算複雜度：，和呈線性，較方法2小。
*分為 Overlap-Add 和 Overlap-Save 兩種方法。
分段卷積: Overlap-Add
欲做的分段卷積分， 長度為 ， 長度為 ,
Step 1: 將每  分成一段
Step 2: 再每段  點後面添加  個零，變成長度 
Step 3: 把  添加 個零，變成長度 的 
Step 4: 把每個  的小段和  做快速卷積，也就是，每小段會得到長度  的時域訊號
Step 5: 放置第  個小段的起點在位置  上, 
Step 6: 會發現在每一段的後面  點有重疊，將所有點都相加起來，顧名思義 Overlap-Add，最後得到結果
舉例來說:
, 長度 
, 長度 
令  
File:Data overlap add.png|xn和hn
令  切成三段，分別為 , 每段填  個零，並將  填零至長度 
File:Seperate x overlap add.png|分段xn
將每一段做
File:Seperate result overlap add.png|分段運算結果
若將每小段擺在一起，可以注意到第一段的範圍是  ，第二段的範圍是 ，第三段的範圍是 ，三段的範圍是有重疊的
File:Summation overlap add.png|合併分段運算結果
最後將三小段加在一起，並將結果和未分段的卷積做比較，上圖是分段的結果，下圖是沒有分段並利用快速卷積所算出的結果，驗證兩者運算結果相同。
File:Final result overlap add.png|結果比較圖
分段卷積: Overlap-Save
欲做的分段卷積分， 長度為 ， 長度為 ,
Step 1: 將  前面填  個零
Step 2: 第一段 , 從新的  中  取到  總共  點當做一段，因此每小段會重複取到前一小段的  點，取到新的一段全為零為止
Step 3: 把  添加  個零，變成長度  的 
Step 4: 把每個  的小段和  做快速卷積，也就是，每小段會得到長度  的時域訊號
Step 5: 對於每個  小段，只會保留末端的  點，因此得名 Overlap-Save
Step 6: 將所有保留的點合再一起，得到最後結果
舉例來說:
, 長度 
, 長度 
令  
File:Data overlap save.png|xn和hn
將  前面填  個零以後，按照 Step 2 的方式分段，可以看到每一段都重複上一段的  點
File:Seperate x overlap save.png|分段xn
再將每一段做 以後可以得到
File:Seperate result overlap save.png|分段運算結果
保留每一段末端的  點，擺在一起以後，可以注意到第一段的範圍是  ，第二段的範圍是 ，第三段的範圍是 ，第四段的範圍是 ，四段的範圍是沒有重疊的
File:Summation overlap save.png|合併分段運算結果
將結果和未分段的卷積做比較，下圖是分段的結果，上圖是沒有分段並利用快速卷積所算出的結果，驗證兩者運算結果相同。
File:Final compare overlap save.png|結果比較圖
至於為什麼要把前面  丟掉?
以下以一例子來闡述:
, 長度 ，
, 長度 ,
第一條藍線代表  軸，而兩條藍線之間代表長度 ，是在做快速摺積時的週期
File:Original ov extra.png|xn和hn
當在做快速摺積時，是把訊號視為週期 ，在時域上為循環摺積分,
而在一開始前  點所得到的值，是  和  內積的值，
然而  這  個值應該要為零，以往在做快速摺積時長度為  時不會遇到這些問題，
而今天因為在做快速摺積時長度為  才會把這  點算進來，因此我們要丟棄這  點內積的結果
File:Cir conv ov extra.png|循環摺積
為了要丟棄這  點內積的結果，位移   點，並把位移以後內積合的值才算有效。
File:Cir conv shift ov extra.png|位移以後內積

**應用時機**
以上三種方法皆可用來計算卷積，其差別在於所需總體乘法量不同。基於運算量以及效率的考量，在計算卷積時，通常會選擇所需總體乘法量較少的方法。
以下根據和的長度（）分成5類，並列出適合使用的方法：
# 為一非常小的整數 - 直接計算
#  - 分段卷積
#  - 快速傅里葉變換
#  - 分段卷積
# 為一非常小的整數 - 直接計算
基本上，以上只是粗略的分類。在實際應用時，最好還是算出三種方法所需的總乘法量，再選擇其中最有效率的方法來計算卷積。

**例子**
Q1：當，適合用哪種方法計算卷積?
Ans：
方法1：所需乘法量為 
方法2：，而2016點的DFT最少乘法數，所以總乘法量為 
方法3： 
:若切成8塊（），則。選，則總乘法量為，比方法1和2少了很多。
:但是若要找到最少的乘法量，必須依照以下步驟
::(1)先找出:解 : 
::(2)由算出點數在附近的DFT所需最少的乘法量，選擇DFT的點數
::(3)最後由算出
:因此，
::(1)由運算量對的偏微分為0而求出
::(2)，所以選擇101點DFT附近點數乘法量最少的點數或。
::(3-1)當，總乘法量為。
::(3-2)當，總乘法量為。
:由此可知，切成20塊會有較好的效率，而所需總乘法量為21480。
*因此，當，所需總乘法量：分段卷積<快速傅立葉轉換<直接計算。故，此時選擇使用分段卷積來計算卷積最適合。

Q2：當，適合用哪種方法計算卷積?
Ans：
方法1：所需乘法量為 

方法2：，選擇1026點DFT附近點數乘法量最少的點數，。
::因此，所需乘法量為 
方法3： 
::(1)由運算量對的偏微分為0而求出
::(2)，所以選擇7點DFT附近點數乘法量最少的點數或或。
::(3-1)當，總乘法量為。
::(3-2)當，總乘法量為。
::(3-3)當，總乘法量為。
:由此可知，切成171塊會有較好的效率，而所需總乘法量為5476。
*因此，當，所需總乘法量：分段卷積<直接計算<快速傅立葉轉換。故，此時選擇使用分段卷積來計算卷積最適合。
*雖然當是個很小的正整數時，大致上適合使用直接計算。但實際上還是將3個方法所需的乘法量都算出來，才能知道用哪種方法可以達到最高的效率。
Q3：當，適合用哪種方法計算卷積?
Ans：
方法1：所需乘法量為 

方法2：，選擇1026點DFT附近點數乘法量最少的點數，。
::因此，所需乘法量為 
方法3： 
::(1)由運算量對的偏微分為0而求出
::(2)，所以選擇1623點DFT附近點數乘法量最少的點數。
::(3)當，總乘法量為。
:由此可知，此時切成一段，就跟方法2一樣，所需總乘法量為44232。
*因此，當，所需總乘法量：快速傅立葉轉換 = 分段卷積<直接計算。故，此時選擇使用分段卷積來計算卷積最適合。

**應用**
高斯模糊可被用來從半色調印刷品復原出光滑灰度數字圖像。
卷積在科學、工程和數學上都有很多應用：- 代數中，整數乘法和多項式乘法都是卷積。- 卷積神經網絡應用了多重級聯的卷積核心，它被用於機器視覺和人工智能，儘管在多數情況下實際上用的是互相關而非卷積。- 在非人工智能的圖像處理中，用作圖像模糊、銳化、邊緣檢測。- 統計學中，加權的滑動平均是一種卷積。- 概率論中，兩個統計獨立變量X與Y的和的概率密度函數是X與Y的概率密度函數的卷積。- 聲學中，回聲可以用源聲與一個反映各種反射效應的函數的卷積表示。- 電子工程與信號處理中，任一個線性系統的輸出都可以通過將輸入信號與系統函數（系統的衝激響應）做卷積獲得。- 物理學中，任何一個線性系統（符合疊加原理）都存在卷積。

**參見**
 反捲積- 自相關函數- 傅里葉變換

**引用**

**延伸閱讀**
 .-  year=2011-  jstor=2347366- Dominguez-Torres, Alejandro (Nov 2, 2010). "Origin and history of convolution". 41 pgs. http://www.slideshare.net/Alexdfar/origin-adn-history-of-convolution date=20231030184051 . Cranfield, Bedford MK43 OAL, UK. Retrieved Mar 13, 2013.-  pages=365–372- Citation | last1=Hewitt | first1=Edwin | last2=Ross | first2=Kenneth A. | title=Abstract harmonic analysis. Vol. I | publisher=Springer-Verlag | location=Berlin, New York | edition=2nd | series=Grundlehren der Mathematischen Wissenschaften Fundamental Principles of Mathematical Sciences | isbn=978-3-540-09434-0 | mr=551496 | year=1979 | volume=115.- Citation | last1=Hewitt | first1=Edwin | last2=Ross | first2=Kenneth A. | title=Abstract harmonic analysis. Vol. II: Structure and analysis for compact groups. Analysis on locally compact Abelian groups | publisher=Springer-Verlag | location=Berlin, New York | series=Die Grundlehren der mathematischen Wissenschaften, Band 152 | mr=0262773 | year=1970.-  doi=10.1007/978-3-642-96750-4.- Citation | last1=Kassel | first1=Christian | title=Quantum groups | publisher=Springer-Verlag | location=Berlin, New York | series=Graduate Texts in Mathematics | isbn=978-0-387-94370-1 | mr=1321145 | year=1995 | volume=155 | doi=10.1007/978-1-4612-0783-2 | url-access=registration | url=https://archive.org/details/quantumgroups0000kass.-  isbn=0-201-89684-2.- edition=2 -  mr=0493420-  isbn=0-471-52364-X.- edition=2 - url=https://archive.org/details/introductiontofo0000stei.- year=2001.- isbn=0-8493-8273-4.- location=New York, N.Y..- doi-access=free- publisher=Cambridge University Press.

**外部鏈接**
  Earliest Uses: The entry on Convolution has some historical information. date=20110501074959 -  Convolution, on  The Data Analysis BriefBook- http://www.jhu.edu/~signals/convolve/index.html date=20120831101935  Visual convolution Java Applet- http://www.jhu.edu/~signals/discreteconv2/index.html date=20120831102747  Visual convolution Java Applet for discrete-time functions- https://get-the-solution.net/projects/discret-convolution discret-convolution online calculator
*https://lpsa.swarthmore.edu/Convolution/CI.html date=20230715160527  Convolution demo and visualization in javascript
*https://phiresky.github.io/convolution-demo/ date=20231029022044  Another convolution demo in javascript-  Lectures on Image Processing: A collection of 18 lectures in pdf format from Vanderbilt University. Lecture 7 is on 2-D convolution., by Alan Peters- * https://archive.org/details/Lectures_on_Image_Processing-  Convolution Kernel Mask Operation Interactive tutorial date=20231210161008 -  Convolution date=20230315013334  at MathWorld-  Freeverb3 Impulse Response Processor date=20231029093122 : Opensource zero latency impulse response processor with VST plugins- Stanford University CS 178  interactive Flash demo  date=20231029022042  showing how spatial convolution works.-  A video lecture on the subject of convolution date=20231029022044  given by Salman Khan-  Example of FFT convolution for pattern-recognition (image processing) date=20230319094048 - Intuitive Guide to Convolution date=20231207202207  A blogpost about an intuitive interpretation of convolution.