博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何通俗易懂地解释卷积?
阅读量:5876 次
发布时间:2019-06-19

本文共 2040 字,大约阅读时间需要 6 分钟。

取自 知乎,在此表示感激,侵删。

从数学上讲,卷积就是一种运算。

某种运算,能被定义出来,至少有以下特征:

  • 首先是抽象的、符号化的

  • 其次,在生活、科研中,有着广泛的作用

比如加法:

  • \(a+b\),是抽象的,本身只是一个数学符号
  • 在现实中,有非常多的意义,比如增加、合成、旋转等等

卷积,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分、级数,所以看起来觉得很复杂。

1 卷积的定义

我们称 (f*g)(n)f,g 的卷积

其连续的定义为:

\[\displaystyle (f*g)(n)=\int _{-\infty }^{\infty }f(\tau )g(n-\tau )d\tau\]

其离散的定义为:

\[\displaystyle (f*g)(n)=\sum_{-\infty}^{\infty}f(\tau)g(n- \tau)\]

这两个式子有一个共同的特征:

1235843-20171119211120359-339530636.jpg

这个特征有什么意义?

我们令 \(x=\tau ,y=n-\tau\) ,那么 \(x+y=n\) 就是下面这些直线:

1235843-20180925193911854-1505456027.gif

只看数学符号,卷积是抽象的,不好理解的,但是,我们可以通过现实中的意义,来习惯卷积这种运算,正如我们小学的时候,学习加减乘除需要各种苹果、糖果来帮助我们习惯一样。

我们来看看现实中,这样的定义有什么意义。

2 离散卷积的例子:丢骰子

我有两枚骰子:

1235843-20171119211209171-134913234.jpg

把这两枚骰子都抛出去:

1235843-20171119211237890-1975602155.jpg

求:两枚骰子点数加起来为4的概率为多少?

这里问题的关键是,两个骰子加起来要等于4,这正是卷积的应用场景。

我们把骰子各个点数出现的概率表示出来:

1235843-20171119211259577-925832671.jpg

那么,两枚骰子点数加起来为4的情况有:

1235843-20171119211311046-1374530566.jpg
1235843-20171119211318859-2087325458.jpg
1235843-20171119211327921-810743415.jpg

因此,两枚骰子点数加起来为4的概率为:

\[f(1)g(3)+f(2)g(2)+f(3)g(1)\]

符合卷积的定义,把它写成标准的形式就是:

\[\displaystyle (f*g)(4)=\sum _{m=1}^{3}f(4-m)g(m)\]

3 连续卷积的例子:做馒头

楼下早点铺子生意太好了,供不应求,就买了一台机器,不断的生产馒头。

假设馒头的生产速度是 \(f(t)\),那么一天后生产出来的馒头总量为:

\[\displaystyle \int _{0}^{24}f(t)dt\]

馒头生产出来之后,就会慢慢腐败,假设腐败函数为 \(g(t)\) ,比如,10个馒头,24小时会腐败:

\[10*g(t)\]

想想就知道,第一个小时生产出来的馒头,一天后会经历24小时的腐败,第二个小时生产出来的馒头,一天后会经历23小时的腐败。

如此,我们可以知道,一天后,馒头总共腐败了:

\[\displaystyle \int _{0}^{24}f(t)g(24-t)dt\]

这就是连续的卷积。

4 图像处理

4.1 原理

有这么一副图像,可以看到,图像上有很多噪点:

1235843-20171119211352906-252565659.jpg

高频信号,就好像平地耸立的山峰:

1235843-20171119211442249-335402165.jpg

看起来很显眼。

平滑这座山峰的办法之一就是,把山峰刨掉一些土,填到山峰周围去,用数学的话来说,就是把山峰周围的高度平均一下。

平滑后得到:

1235843-20171119211453062-306905320.jpg

4.2 计算

卷积可以帮助实现这一平滑算法。

有噪点的原图,可以把它转为一个矩阵:

1235843-20171119211501202-1745788273.jpg

然后用下面这个平均矩阵(说明下,原图的处理实际上用的是正态分布矩阵,这里为了简单,就用了算术平均矩阵)来平滑图像。

\[\displaystyle g=\begin{bmatrix} \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \\ \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \\ \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \end{bmatrix}\]

记得刚才说过的算法,把高频信号与周围的数值平均一下就可以平滑山峰。

比如我要平滑 \(a_{1,1}\) 点,就在矩阵中,取出 \(a_{1,1}\) 点附近的点组成矩阵 \(f\) , 和 \(g\) 进行卷积计算后,再填回去:

1235843-20171119211548656-1476782807.jpg

要注意一点,为了运用卷积,\(g\) 虽然和 \(f\) 同纬度,但下标有点不一样:

1235843-20171119211557296-1926085018.jpg

我用一个动图来说明计算过程:

1235843-20190514100736829-795188688.gif

写成卷积公式就是:

\[\displaystyle (f*g)(1,1)=\sum _{h=0}^{2}\sum _{k=0}^{2}f(h,k)g(1-h,1-k)\]

要求 \(C_{4,5}\) ,一样可以套用上面的卷积公式。

\[\displaystyle (f*g)(m,n)=\sum _{h=m-1}^{m+1}\sum _{k=n-1}^{n+1}f(h,k)g(m-h,n-k) \; (对于3*3的卷积核)\]

这相当于实现了 \(g\) 这个矩阵在原来图像上的滑动(准确来说这幅图把 \(g\) 矩阵旋转了 \(180^\circ\) ):

1235843-20180919090658278-895277832.gif

此图出处:

转载于:https://www.cnblogs.com/P3nguin/p/7777239.html

你可能感兴趣的文章
拖来拖去今天终于重装系统了
查看>>
NestJS 脑图
查看>>
我的友情链接
查看>>
Html body的滚动条禁止与启用
查看>>
Tengine新增nginx upstream模块的使用
查看>>
多媒体工具Mediainfo
查看>>
1-小程序
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
Mind_Manager_2
查看>>
手动升级 Confluence - 规划你的升级
查看>>
汽车常识全面介绍 - 悬挂系统
查看>>
电子政务方向:We7.Cloud政府云门户
查看>>
虚拟机Centos7连接Internet
查看>>
ansible 基本操作(初试)
查看>>
更改tomcat的根目录路径
查看>>
51nod 1292 字符串中的最大值V2(后缀自动机)
查看>>
加快ALTER TABLE 操作速度
查看>>
学习笔记之软考数据库系统工程师教程(第一版)
查看>>
基本网络概念
查看>>