【九】卷积——1

先引入一个很生动的介绍

不要试图直接从公式上去思考“翻转”的意义,回到问题的起源,你就会豁然开朗了。

打个比方,往平静的水面里面扔石头。我们把水面的反应看作是一种冲击响应。水面在t=0时刻石头丢进去的时候会激起高度为h(0)的波纹,但水面不会立马归于平静,随着时间的流逝,波纹幅度会越来越小,在t=1时刻,幅度衰减为h(1), 在t=2时刻,幅度衰减为h(2)……直到一段时间后,水面重复归于平静。

从时间轴上来看,我们只在t=0时刻丢了一块石头,其它时刻并没有做任何事,但在t=0,1,2...时刻,水面是不平静的,这是因为过去(t=0时刻)的作用一直持续到了现在。

那么,问题来了:

如果我们在t=1时刻也丢入一块石子呢?此时t=0时刻的影响还没有消失(水面还没有恢复平静)新的石子又丢进来了,那么现在激起的波浪有多高呢?答案是当前激起的波浪与t=0时刻残余的影响的叠加。那么t=0时刻对t=1时刻的残余影响有多大呢?

为了便于说明,接下来我们作一下两个假设:

  •  水面对于“单位石块”的响应是固定的
  • 丢一个两倍于的“单位石块”的石块激起的波纹高度是丢一个石块的两倍(即系统满足线性叠加原理)

现在我们来计算每一时刻的波浪有多高:

  • t=0时刻:y(0)=x(0)h(0)
  • t=1时刻:当前石块引起的影响x(1)h(0)

                        t=0时刻石块x(0)引起的残余影响x(0)h(1)

                        y(1)=x(1)h(0)+ x(0)h(1)

  • t=2时刻:当前石块引起的影响x(2)h(0)

                       t=0时刻石块x(0)引起的残余影响x(0)h(2)

                      t=1时刻石块x(1)引起的残余影响x(1)*h(1)

                      y(2)=x(2)*h(0)+ x(1)*h(1)+x(0)*h(2)

    ……

  • t=N时刻:当前石块引起的影响x(N)*h(0)

                       t=0时刻石块x(0)引起的残余影响x(0)*h(N)

                       t=1时刻石块x(1)引起的残余影响x(1)*h(N-1)

                       y(N)=x(N)*h(0)+ x(N-1)*h(1)+x(N-2)*h(2)+...+x(0)*h(N)

这就是离散卷积的公式了。

理解了上面的问题,下面我们来看看“翻转”是怎么回事:

当我们每次要丢石子时,站在当前的时间点,系统的对我们的回应都是h(0),时间轴之后的(h(1),h(2).....)(h(1),h(2).....)都是对未来的影响。而整体的回应要加上过去对于现在的残余影响。

现在我们来观察t=4这个时刻。

站在t=0时刻看他对于未来(t=4)时刻(从现在往后4秒)的影响,可见是x(0)*h(4)

站在t=1时刻看他对于未来(t=4)时刻的影响(从现在往后3秒),可见是x(1)*h(3)

站在t=2时刻看他对于未来(t=4)时刻的影响(从现在往后2秒),可见是x(2)*h(2)

站在t=3时刻看他对于未来(t=4)时刻的影响(从现在往后1秒),可见是x(3)*h(1)

所以所谓的翻转只是因为你站立的现在是过去的未来,而因为h(t)始终不变,故h(1)其实是前一秒的h(1),而前一秒的h(1)就是现在,所以从当前x(4)的角度往左看,你看到的是过去的作用。h(t)未翻转前,当从h(0)往右看,你看到的是现在对于未来的影响,当翻转h(t)之后,从h(0)往左看,你依次看到的越来越远的过去对现在的影响,而这个影响,与从x=4向左看的作用影响相对应(都是越来越远的过去),作用与作用的响应就对应起来了,这一切的本质,是因为你站立的时间观察点和方向在变。

一.知乎回答

取自 知乎@马同学,在此表示感激,侵删。

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

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

  • 首先是抽象的、符号化的
  • 其次,在生活、科研中,有着广泛的作用

比如加法:

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

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

1 .卷积的定义

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

其连续的定义为:

其离散的定义为:

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

这个特征有什么意义?

我们令 x=τ,y=n−τx=τ,y=n−τ ,那么 x+y=nx+y=n 就是下面这些直线:

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

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

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

我有两枚骰子:

把这两枚骰子都抛出去:

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

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

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

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

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

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

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

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

假设馒头的生产速度是 f(t),那么一天后生产出来的馒头总量为:\int_{0}^{24}f(t)dt

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

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

如此,我们可以知道,一天后,馒头总共腐败了:\int_{0}^{24}f(t)g(24-t)dt,这就是连续的卷积。

4. 图像处理

4.1 原理

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

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

看起来很显眼。

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

平滑后得到:

4.2 计算

可以看作加权求和。

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

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

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

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

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

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

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

写成卷积公式就是:

 

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

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

 


注:本文整理网上资料,包括知乎、博客等,如有侵权立刻删除。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值