什么是卷积(Convolution)?

By Long Luo

卷积(Convolution)是什么?

卷积 (Convolution)(\textit{Convolution}) 是数学分析中一种重要的运算。设:f(x)f(x)g(x)g(x)R\mathbb{R} 上的两个可积函数,作积分:

f(τ)g(xτ)dτ\int _{-\infty }^{\infty }f(\tau)g(x-\tau)\,\mathrm{d}\tau

可以证明,关于几乎所有的 x(,)x \in (-\infty, \infty),上述积分是存在的。这样,随着 xx 的不同取值,这个积分就定义了一个新函数 h(x)h(x),称为函数 ffgg 的卷积,记为 h(x)=(fg)(x)h(x)=(f*g)(x)

我们可以轻易验证: (fg)(x)=(gf)(x)(f*g)(x)=(g*f)(x),并且 (fg)(x)(f*g)(x) 仍为可积函数。这就是说,把卷积代替乘法,L1(R1)L^{1}(R^{1}) 空间是一个代数,甚至是巴拿赫代数。

虽然这里为了方便我们假设 f,gL1(R)f,g\in L^{1}(\mathbb{R} ),不过卷积只是运算符号,理论上并不需要对函数 f,gf,g 有特别的限制,虽然常常要求 f,gf,g 至少是可测函数(measurable function)(如果不是可测函数的话,积分可能根本没有意义),至于生成的卷积函数性质会在运算之后讨论。

卷积与傅里叶变换有着密切的关系。例如两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,利用此一性质,能简化傅里叶分析中的许多问题。

由卷积得到的函数 fgf*g 一般要比 ffgg 都光滑。特别当 gg 为具有紧支集的光滑函数,ff 为局部可积时,它们的卷积 fgf*g 也是光滑函数。利用这一性质,对于任意的可积函数 ff,都可以简单地构造出一列逼近于 ff 的光滑函数列 fsf_{s},这种方法称为函数的光滑化或正则化。

卷积的概念还可以推广到数列、测度以及广义函数上去。

性质

各种卷积算子都满足下列性质:

交换律 fg=gff*g = g*f

结合律 f(gh)=(fg)hf*(g*h)=(f*g)*h

分配律 f(g+h)=(fg)+(fh)f*(g+h)=(f*g)+(f*h)

数乘结合律 a(fg)=(af)g=f(ag)a(f*g)=(af)*g=f*(ag)

其中 aa 为任意实数(或复数)。

微分定理 (fg)=Dfg=fDg(f*g)={\mathcal{D}}f*g=f*{\mathcal{D}}g

其中 DfDf 表示 ff 的微分,如果在离散域中则是指差分算子,包括前向差分与后向差分两种:

前向差分:D+f(n)=f(n+1)f(n){\mathcal{D}}^{+}f(n)=f(n+1)-f(n)
后向差分:Df(n)=f(n)f(n1){\mathcal{D}}^{-}f(n)=f(n)-f(n-1)

卷积定理

函数卷积的傅里叶变换是函数傅里叶变换的乘积。即,一个域中的卷积相当于另一个域中的乘积,例如时域中的卷积就对应于频域中的乘积。

F(fg)=F(f)F(g)\textit{F}(f*g) = \textit{F}(f) \cdot {\textit{F}}(g)

其中 F(f)\textit{F}(f) 表示 ff 的傅里叶变换。

卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积。即一个域中的卷积对应于另一个域中的乘积,例如时域中的卷积对应于频域中的乘积。

F{fg}=F{f}F{g}\mathcal{F}\{f*g\} = \mathcal{F}\{f\} \cdot \mathcal{F}\{g\}

其中 F(f){\mathcal{F}}(f) 表示 ff 的傅里叶变换。下面这种形式也成立:

F{fg}=F{f}F{g}\mathcal{F}\{f \cdot g\}= \mathcal{F}\{f\}*\mathcal{F}\{g\}

借由傅里叶逆变换 F1\mathcal{F}^{-1},也可以写成

fg=F1{F{f}F{g}}f*g= \mathcal{F}^{-1}\big\{\mathcal{F}\{f\}\cdot\mathcal{F}\{g\}\big\}

注意以上的写法只对特定形式定义的变换正确,变换可能由其它方式正规化,使得上面的关系式中出现其它的常数因子。

这一定理对拉普拉斯变换、双边拉普拉斯变换、Z变换、梅林变换和Hartley变换(参见Mellin inversion theorem)等各种傅里叶变换的变体同样成立。在调和分析中还可以推广到在局部紧致的阿贝尔群上定义的傅里叶变换。

利用卷积定理可以简化卷积的运算量。对于长度为 nn 的序列,按照卷积的定义进行计算,需要做 2n12n-1 组对位乘法,其计算复杂度为 O(n2)O(n^{2}) ;而利用傅里叶变换将序列变换到频域上后,只需要一组对位乘法,利用傅里叶变换的快速算法之后,总的计算复杂度为 O(nlogn)O(nlogn)。这一结果可以在快速乘法计算中得到应用。

应用

卷积在科学、工程和数学上都有很多应用:

代数中,整数乘法和多项式乘法都是卷积。

图像处理中,用作图像模糊、锐化、边缘检测。

统计学中,加权的滑动平均是一种卷积。

概率论中,两个统计独立变量X与Y的和的概率密度函数是X与Y的概率密度函数的卷积。

声学中,回声可以用源声与一个反映各种反射效应的函数的卷积表示。

电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的冲激响应)做卷积获得。

物理学中,任何一个线性系统(符合叠加原理)都存在卷积。

参考资料

  1. Wiki: Convolution
  2. Wiki: 卷积
  3. Wiki: Convolution theorem
  4. Wiki: 卷积定理
  5. Convolution Theorem