一:什么是卷积

离散卷积的数学公式可以表示为如下形式:

f(x) =  - 其中C(k)代表卷积操作数,g(i)代表样本数据, f(x)代表输出结果。

举例如下:

假设g(i)是一个一维的函数,而且代表的样本数为G = [1,2,3,4,5,6,7,8,9]

假设C(k)是一个一维的卷积操作数, 操作数为C=[-1,0,1]

则输出结果f(x)可以表示为 F=[1,2,2,2,2,2,2,2,1]  //边界数据未处理

以上只是一维的情况下,当对一幅二维数字图像加以卷积时,其数学意义可以解释如下:

源图像是作为输入源数据,处理以后要的图像是卷积输出结果,卷积操作数作为Filter

在XY两个方向上对源图像的每个像素点实施卷积操作。如图所示:

粉红色的方格每次在X/Y前进一个像素方格,就会产生一个新的输出像素,图中深蓝色的代

表要输出的像素方格,走完全部的像素方格,就得到了所有输出像素。

图中,粉红色的矩阵表示卷积操作数矩阵,黑色表示源图像– 每个方格代表一个像素点。

二:卷积在数字图像处理中应用

一副数字图像可以看作一个二维空间的离散函数可以表示为f(x, y), 假设有对于二维卷积操

作函数C(u, v) ,则会产生输出图像g(x, y) = f(x, y) *C(u,v), 利用卷积可以实现对图像模糊处理,边缘检测,产生轧花效果的图像。

一个简单的数字图像卷积处理流程可以如下:

1.      读取源图像像素

2.      应用卷积操作数矩阵产生目标图像

3.      对目标图像进行归一化处理

4.      处理边界像素

三使用模板处理图像相关概念:

模板:矩阵方块,其数学含义是一种卷积运算。      卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相                乘,所有乘积之和作为区域中心像素的新值。      卷积核:卷积时使用到的权用一个矩阵表示,该矩阵与使用的图像区域大小相同,其行、列都是奇数,              是一个权矩阵。      卷积示例:              3 * 3 的像素区域R与卷积核G的卷积运算:              R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9

四使用模板处理图像的问题:       边界问题:当处理图像边界像素时,卷积核与图像使用区域不能匹配,卷积核的中心与边界像素点对应,                 卷积运算将出现问题。       处理办法:              A. 忽略边界像素,即处理后的图像将丢掉这些像素。              B. 保留原边界像素,即copy边界像素到处理后的图像。

五.常用模板:

六其他

-----------------------------------------------------------------------------------------------------------

以下用$符号表示从负无穷大到正无穷大的积分。         一维卷积:     y(t)=g(k)*x(k)=$g(k)x(t-k)     先把函数x(k)相对于原点反折,然后向右移动距离t,然后两个函数相乘再积分,就得到了在t处的输出。对每个t值重复上述过程,就得到了输出曲线。         二维卷积:     h(x,y)=f(u,v)*g(u,v)=$$f(u,v)g(x-u,y-v)     先将g(u,v)绕其原点旋转180度,然后平移其原点,u轴上像上平移x,   v轴上像上平移y。然后两个函数相乘积分,得到一个点处的输出。

在图像中卷积是什么意思呢,就是图像就是图像f(x),模板是g(x),然后将模版g(x)在模版中移动,每到一个位置,就把f(x)与g(x)的定义域相交的元素进行乘积并且求和,得出新的图像一点,就是被卷积后的图像.模版又称为卷积核.卷积核做一个矩阵的形状。由于大多数模板都是对称的,所以模板不旋转。

二维图像卷积运算

importnumpy as npfrom scipy importsignalfrom scipy importmiscimportmatplotlib.pyplot as plt

face=misc.face(gray=True) #创建一个灰度图像

scharr=np.array([[-3-3j,0-10j,+3-3j],

[-10+0j,0+0j,+10+0j],

[-3+3j,0+10j,+3+3j]]) #设置一个特殊的卷积和

grad=signal.convolve2d(face,scharr,boundary='symm',mode='same') #把图像的face数组和设计好的卷积和作二维卷积运算,设计边界处理方式为symm

fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,6)) #建立1行2列的图fig

ax1.imshow(face,cmap='gray') #显示原始的图

ax1.set_axis_off()#不显示坐标轴

ax2.imshow(np.absolute(grad),cmap='gray') #显示卷积后的图

ax2.set_axis_off()#不显示坐标轴

fig.show() #显示绘制好的画布

python图像卷积_图像处理——卷积原理、二维卷积python实现相关推荐

  1. 一维卷积(1D-CNN)、二维卷积(2D-CNN)、三维卷积(3D-CNN)

    一维卷积神经网络(1D-CNN) 一维卷积常用在序列模型.自然语言处理领域: 假设输入数据维度为8,filter维度为5: 不加padding时,输出维度为4,如果filter的数量为16,那么输出数 ...

  2. 深度卷积神经网络的数字实现——二维卷积的纯数字电路实现(二)

    继第一篇卷积神经网络博客,这里继续更新后文. 3 数字模块实现方案 3.1 总体模块 总体模块不做过多说明,详细请看各底层子模块的介绍. 3.1.1 接口定义 3.2 乘法器子模块 3.2.1 模块功 ...

  3. python 通信系统仿真_深入浅出通信原理连载22-40(Python代码版)

    深入浅出通信原理Python代码版 深入浅出通信原理是陈爱军的心血之作,于通信人家园连载,此处仅作python代码笔记训练所用 陈老师的连载从多项式乘法讲起,一步一步引出卷积.傅立叶级数展开.旋转向量 ...

  4. 一维卷积的意义和二维卷积(图像处理)的简单理解

    在学习机器学习和图像处理的过程中,经常会遇到卷积这个概念.我每次遇到这个概念都有点似懂非懂的样子.有时候清楚它的直观解释,但又搞不清公式中是如何体现的.究其原因,还是我没有完全搞懂这个概念. 维基百科 ...

  5. 【OpenCV 例程200篇】54. OpenCV 实现图像二维卷积

    [OpenCV 例程200篇]54. OpenCV 实现图像二维卷积 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 ...

  6. 【OpenCV 例程200篇】53. Scipy 实现图像二维卷积

    [OpenCV 例程200篇]53. Scipy 实现图像二维卷积 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 滤 ...

  7. 二维数组各行分别求和_【PyTorch入门】之十分钟看懂二维卷积层的运算、实现及应用...

    原文链接: [动手学深度学习笔记]之二维卷积层​mp.weixin.qq.com 1.二维卷积层 本节介绍卷积神经网络中最常见的二维卷积层.二维卷积层常用来处理图像数据,它具有两个空间维度(高和宽). ...

  8. python中的一维卷积conv1d和二维卷积conv2d

    先来看二维卷积conv2d conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format="NHWC& ...

  9. [pytorch、学习] - 5.1 二维卷积层

    参考 5.1 二维卷积层 卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络.本章介绍的卷积神经网络均使用最常见的 ...

最新文章

  1. 加入谷歌,那时我55岁
  2. 对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)
  3. java乱码base64,解决 JAVA WebSocket 解析 base64 后中文字符串乱码
  4. 用于数据分析的Python – Pandas
  5. Ubuntu 18.04 修复 Linux 内核的 11 个漏洞
  6. 日语学习-多邻国-饮食
  7. Oracle/PLSQL AFTER DELETE Trigger
  8. 用SAX2方式解析XML
  9. iOS开发之SceneKit框架--实战地月系统围绕太阳旋转
  10. 关于IOS屏幕的旋转问题
  11. Builder和Factory模式区别
  12. 五分钟学会工业机器人DH参数标定
  13. 创建win10介质进度为0_win10介质创建工具(media creation tool)下载_win10介质创建工具(media creation tool)官方下载-太平洋下载中心...
  14. ios签名php在线监控,IOS无需签名无需越狱H5网页在线封装APP教程
  15. 软件测试人员常用的sql语句(四)
  16. 美国弗吉尼亚大学计算机科学,弗吉尼亚大学研究生计算机科学排名关键消息重点总结...
  17. Python之Scikit-Learm
  18. 微信小程序实现押金管理(支付押金、申请退还押金、押金明细)
  19. c语言 适配器模式例子,NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】...
  20. 游戏图标的设计跟其它应用的图标设计有何不同?

热门文章

  1. Codeforces 576D. Flights for Regular Customers(倍增floyd+bitset)
  2. java学习日记之小技巧(跟着变量走一走)
  3. [USACO09OCT]热浪Heat Wave
  4. tensorflow一个很好的博客
  5. 安装hadoop1.2.1(参考hadoop实战第二版)
  6. sybase数据库配置经验交流
  7. 如何在 JavaScript 中实现拖放
  8. python查找元素的下标 leetcode 392
  9. 数据处理python
  10. linux打印JAVA日志命令_Linux下查看日志用到的常用命令