定义

卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列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年发行。

图解卷积

  1. 首先将两个函数都用来表示。
  2. 对其中一个函数做水平翻转:
  3. 加上一个时间偏移量,让 能沿着 轴滑动。
  4. t从-∞滑动到+∞。两函数交会时,计算交会范围中两函数乘积的积分值。
    换句话说,我们是在计算一个滑动的的加权平均值。也就是使用当做加权函数,来对取加权平均值。
  最后得到的波形(未包含在此图中)就是fg的卷积。

如果f(t)是一个单位脉冲,我们得到的乘积就是g(t)本身,称为冲激响应

性质

交换律 结合律 分配律 数乘结合律 其中a为任意实数(或复数)。
微分定理 其中Df表示f微分,如果在离散域中则是指差分算子,包括前向差分与后向差分两种。
 

卷积定理

卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积。即,一个域中的卷积相当于另一个域中的乘积,例如时域中的卷积就对应于频域中的乘积。
F(g(x)*f(x)) = F(g(x))F(f(x))
其中F表示的是傅里叶变换
这一定理对拉普拉斯变换双边拉普拉斯变换Z变换Mellin变换和Hartley变换(参见Mellin inversion theorem)等各种傅里叶变换的变体同样成立。
调和分析中还可以推广到在局部紧致阿贝尔群上定义的傅里叶变换。

利用定理可以简化的运算量。

对于长度为n的序列,按照的定义进行计算,需要做2N - 1组对位乘法,其计算复杂度为O(N * N)
而利用傅里叶变换将序列变换到频域上后,只需要一组对位乘法,利用傅里叶变换的快速算法之后,总的计算复杂度为O(N * log N)
这一结果可以在快速乘法计算中得到应用。
 

应用

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

  • 统计学中,加权的滑动平均是一种卷积。
  • 概率论中,两个统计独立变量X与Y的和的概率密度函数是X与Y的概率密度函数的卷积。
  • 声学中,回声可以用源声与一个反映各种反射效应的函数的卷积表示。
  • 电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的冲激响应)做卷积获得。
  • 物理学中,任何一个线性系统(符合叠加原理)都存在卷积。

招展

卷积是一种线性运算,图像处理中常见的mask运算都是卷积,广泛应用于图像滤波。Kenneth R.Castlman的《数字图像处理》对卷积讲得很详细。
高斯变换就是用高斯函数对图像进行卷积。高斯算子可以直接从离散高斯函数得到:
for(i=0; i<N; i++)
{
    for(j=0; j<N; 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++代码
 
 
 
 

什么是卷积convolution的更多相关文章

  1. 最容易理解的对卷积(convolution)的解释

    啰嗦开场白 读本科期间,信号与系统里面经常讲到卷积(convolution),自动控制原理里面也会经常有提到卷积.硕士期间又学了线性系统理论与数字信号处理,里面也是各种大把大把卷积的概念.至于最近大火 ...

  2. matlab中卷积convolution与filter用法

    转自:https://blog.csdn.net/dkcgx/article/details/46652021 转自:https://blog.csdn.net/Reborn_Lee/article/ ...

  3. 向量的卷积(convolution)运算

    一.向量的卷积运算 给定两个n维向量α=(a0, a1, ..., an-1)T,β=(b0, b1, ..., bn-1)T,则α与β的卷积运算定义为: α*β=(c0, c1, ..., c2n- ...

  4. 对卷积(convolution)的理解

    参考文章 https://www.jianshu.com/p/daaaeb718aed https://blog.csdn.net/bitcarmanlee/article/details/54729 ...

  5. 卷积 convolution

    这东西大学学过,然后我忘记了,后来就只记得这个名字了. https://zh.wikipedia.org/wiki/%E5%8D%B7%E7%A7%AF http://www.guokr.com/po ...

  6. 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二)

    本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolutio ...

  7. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

    http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...

  8. 图像卷积、相关以及在MATLAB中的操作

    图像卷积.相关以及在MATLAB中的操作 2016年7月11日 20:34:35, By ChrisZZ 区分卷积和相关 图像处理中常常需要用一个滤波器做空间滤波操作.空间滤波操作有时候也被叫做卷积滤 ...

  9. 彻底理解数字图像处理中的卷积-以Sobel算子为例

    彻底理解数字图像处理中的卷积-以Sobel算子为例 作者:FreeBlues 修订记录 2016.08.04 初稿完成 概述 卷积在信号处理领域有极其广泛的应用, 也有严格的物理和数学定义. 本文只讨 ...

随机推荐

  1. Kinetis Design Studio 下使用J-Link下载程序

    1.安装J-Link驱动. 在KDS安装目录下已自带J-Link驱动,进入以下目录(以我的为例): C:\Freescale\KDS_1.1.1\segger\USBDriver 将看到CDC.x64 ...

  2. jOrgChart二叉树效果

    引进文件: <link rel="stylesheet" type="text/css" href="Public/com/jQrgChart/ ...

  3. git之reset图解

    https://blog.csdn.net/longintchar/article/details/81843048 1.三棵树. 此时如果我们运行 git status,会发现没有任何改动,因为现在 ...

  4. 佳佳的Fibonacci

    #include<cstdio> #include<cstring> #include<iostream> #include<cmath> #inclu ...

  5. 关于Java多线程的线程同步和线程通信的一些小问题(顺便分享几篇高质量的博文)

    Java多线程的线程同步和线程通信的一些小问题(顺便分享几篇质量高的博文) 前言:在学习多线程时,遇到了一些问题,这里我将这些问题都分享出来,同时也分享了几篇其他博客主的博客,并且将我个人的理解也分享 ...

  6. 【javascript】随机颜色

    调用该方法则会返回一个#xxx的rgb随机颜色 function color1(){ var sum=""; var shuzu2=['a','b','c','d','e','f' ...

  7. Dubbo 泛化调用的参数解析问题及一个强大的参数解析工具 PojoUtils

    排查了3个多小时,因为一个简单的错误,发现一个强大的参数解析工具,记录一下. 背景 Nodejs 通过 tether 调用 Java Dubbo 服务.请求类的某个参数对象 EsCondition 有 ...

  8. Eureka服务端源码流程梳理

    一.简述 spring cloud三步走,一导包,二依赖,三配置为我们简化了太多东西,以至于很多东西知其然不知其所以然,了解底层实现之后对于一些问题我们也可以快速的定位问题所在. spring clo ...

  9. linux执行jmeter脚本解决响应数据为空

    Linux服务器用命令执行了jmeter脚本,在本地查看结果时发现结果树种的“请求.响应数据”都显示为空,有错误日志中也看不出所以然,请看演示! 1 ,先执行脚本:执行成功(...end of run ...

  10. 使用CA签发的服务器证书搭建Tomcat双向SSL认证服务

    第一部分,先说证书的申请. 这步是要到正规的CA公司申请正式的设备证书必须走的步骤. 1.先生成证书的密钥对 打开命令行,切换到某个自己新建的目录下,执行如下命令 keytool -genkey -k ...