目录
卷积定义
卷积是一种数学运算,符号为*,是两个变量在某范围内相乘后求和的结果。
重点:先相乘后求和。结果是一个数值【标量】。
“相乘”的另外一种说法“加权”,即“加以权重”、“乘以一定的权重”。
在其他一些资料上看到“加权求和”,与卷积是一样的意思。
参考百度百科,链接在这,先贴在下面
也可以看看维基百科的定义,里面有动图详解
卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列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年发行。
扩展:
不要与矩阵乘法混淆,
两个矩阵相乘(Matrix multiplication)结果是一个矩阵(Matrix),
两个矩阵卷积(Matrix convolution)结果是一个实数(即标量)
两个向量点积(Vector dot product)结果是一个实数(即标量)
参考另外一篇文章《花书笔记1——向量乘法、矩阵乘积(相乘)、内积、点积都是什么、Python代码实现、区别及联系》
公式
离散卷积公式为
连续卷积公式
卷积例子
假设
馒头每小时的生产速度为f(t),馒头腐败函数为g(t),馒头的腐败系数最大为24,求24小时后腐败的馒头总数。
馒头的腐败系数会随着时间变化,
假设刚生产出来的馒头不腐败,但是放置了一小时的馒头会腐败1,放置了两小时的馒头会腐败2,……,放置24小时的馒头腐败24【最大值为24】
那么放置的时间越长腐败越多,其腐败系数越大。
所以定义域为[0,24]
总结下来,腐败系数的函数为g(24-t)
先画一个表格如下:
时间 | 生产出来的馒头 | t时刻的馒头腐败系数 | t时刻腐败的馒头数 |
1:00:00 | f(t) | g(24-1) | f(t)*g(24-1) |
2:00:00 | f(t) | g(24-2) | f(t)*g(24-2) |
3:00:00 | f(t) | g(24-3) | f(t)*g(24-3) |
4:00:00 | f(t) | g(24-4) | f(t)*g(24-4) |
5:00:00 | f(t) | g(24-5) | f(t)*g(24-5) |
6:00:00 | f(t) | g(24-6) | f(t)*g(24-6) |
7:00:00 | f(t) | g(24-7) | f(t)*g(24-7) |
8:00:00 | f(t) | g(24-8) | f(t)*g(24-8) |
9:00:00 | f(t) | g(24-9) | f(t)*g(24-9) |
10:00:00 | f(t) | g(24-10) | f(t)*g(24-10) |
11:00:00 | f(t) | g(24-11) | f(t)*g(24-11) |
12:00:00 | f(t) | g(24-12) | f(t)*g(24-12) |
13:00:00 | f(t) | g(24-13) | f(t)*g(24-13) |
14:00:00 | f(t) | g(24-14) | f(t)*g(24-14) |
15:00:00 | f(t) | g(24-15) | f(t)*g(24-15) |
16:00:00 | f(t) | g(24-16) | f(t)*g(24-16) |
17:00:00 | f(t) | g(24-17) | f(t)*g(24-17) |
18:00:00 | f(t) | g(24-18) | f(t)*g(24-18) |
19:00:00 | f(t) | g(24-19) | f(t)*g(24-19) |
20:00:00 | f(t) | g(24-20) | f(t)*g(24-20) |
21:00:00 | f(t) | g(24-21) | f(t)*g(24-21) |
22:00:00 | f(t) | g(24-22) | f(t)*g(24-22) |
23:00:00 | f(t) | g(24-23) | f(t)*g(24-23) |
24:00:00 | f(t) | g(24-24) | f(t)*g(24-24) |
欲求24小时后腐败的馒头总数,就需要将“腐败的馒头数”那一栏全部加起来
先以离散的方式来看:
时间t只能为[0,24]中的任意一个整数
离散卷积公式为
求24项的和即为如下表达式
以连续的方式来看:
时刻t为0.4, 2.6, 8.9等等连续数字,范围仍是[0,24]
根据连续卷积公式
欲求24小时内任一时刻腐败的馒头总数,那么n=24,我们将馒头的相关参数代入,得到
用数学语言解释:先求f(t)与g(24-t)的积【即加权】,然后再求和,这等价于求积分和【即定积分】
白话语言:先求出t时刻之前的任一时刻(含t时刻)腐败的馒头数,然后把所有时刻的腐败数量相加,就得出t时刻腐败的馒头数量。f(t)代表任一时刻馒头的生产速度, g(t)代表任一时刻馒头的腐败速度
卷积计算
有找到一篇博客写得简单易懂,推荐大家看看。这里就不再重复写了。
扩展阅读
《Opencv中cvFilter2D卷积函数的计算过程分析》
图像处理与卷积核
以下是曾经读过的不错的文章,贴在这方便大家查阅,节省时间。
《卷积核与图像处理》 https://blog.csdn.net/m0_38032942/article/details/82230059
《卷积和积分运算》常用模板(卷积核)https://blog.csdn.net/qq_15807167/article/details/64912668
《图像处理之理解卷积》https://blog.csdn.net/jia20003/article/details/7038938
《图像卷积原理及运算方法》https://blog.csdn.net/u013539952/article/details/80610260
思维导图
参考文章
《卷积》https://zh.wikipedia.org/zh-cn/%E5%8D%B7%E7%A7%AF
《最容易理解的对卷积(convolution)的解释》https://blog.csdn.net/bitcarmanlee/article/details/54729807
《卷积核与图像处理》 https://blog.csdn.net/m0_38032942/article/details/82230059
《索伯算子》https://zh.wikipedia.org/zh-cn/%E7%B4%A2%E8%B2%9D%E7%88%BE%E7%AE%97%E5%AD%90