二十二、卷积运算

1.1 卷积的定义

  • “卷积”其实是一个数学概念,它描述一个函数和另一个函数在某个维度上的加权“叠加”作用。函数定义如下:
    在这里插入图片描述

  • 其中,函数 f f f和函数 g g g 是卷积对象, a a a为积分变量,星号“*”表示卷积。公式所示的操作,被称为连续域上的卷积操作。这种操作通常也被简记为如下公式:

在这里插入图片描述

1.12 离散卷积和多维卷积

  • 一般情况下,我们并不需要记录任意时刻的数据,而是以一定的时间间隔(也即频率)进行采样即可。对于离散信号,卷积操作可用如下表示:

在这里插入图片描述

  • 当然,对于离散卷积的定义可推广到更高维度的空间上。例如,二维的公式可表示为公式
    在这里插入图片描述

1.3 生活中的卷积

  • 在一根铁丝某处不停地弯曲,假设发热函数是 f ( t ) f(t) f(t),散热函数是 g ( t ) g(t) g(t),此时此刻的温度就是 f ( t ) f(t) f(t) g ( t ) g(t) g(t)的卷积
  • 在一个特定环境下,发声体的声源函数是 f ( t ) f(t) f(t),该环境下对声源的反射效应函数是 g ( t ) g(t) g(t),那么在这个环境下感受到的声音就是 f ( t ) f(t) f(t)的和 g ( t ) g(t) g(t) 的卷积。

2. 卷积的计算方法和实现

2.1 单通道、二维卷积

在这里插入图片描述

2.2 带填充的单通道、二维卷积运算

在这里插入图片描述

2.3 输出矩阵计算公式

在这里插入图片描述

2.4 代码

  • 步骤一:导入工具包
from scipy import signal
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
  • 步骤二:读取图片和设置卷积核
gary = Image.open('image/1.png').convert('L')
img_arr = np.array(gary) # 2 维矩阵
print(img_arr.shape)

flt = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]])
  • 步骤三:计算卷积并画出图形
# 把图像的数组和设计好的卷积和作二维卷积运算,设计边界处理方式为symm
grad = signal.convolve2d(img_arr, flt,boundary='symm', mode='same').astype("int32")
plt.figure("Conv2D")
plt.subplot(121)
plt.imshow(gary, cmap='gray') # 显示原始的图
plt.xticks([])
plt.yticks([])
plt.subplot(122)
plt.xticks([])
plt.yticks([])
plt.imshow(grad, cmap='gray') # 卷积后的图
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值