python scipy卷积运算的实现方法


Posted in Python onSeptember 16, 2019

scipy的signal模块经常用于信号处理,卷积、傅里叶变换、各种滤波、差值算法等。

*两个一维信号卷积

>>> import numpy as np
>>> x=np.array([1,2,3])
>>> h=np.array([4,5,6])
>>> import scipy.signal
>>> scipy.signal.convolve(x,h) #卷积运算
array([ 4, 13, 28, 27, 18])

卷积运算大致可以分成3步,首先先翻转,让两个信号列反过来,如上面就是1,2,3和6,5,4。然后作平移,6,5,4最开始在1,2,3的左边,没有重叠,现在向右移动,4和1就重叠了。对于重叠的部分,作乘积求和。也就是1x4得到第一个结果1,然后再移动后5x1+4x2得到第二个结果13以此类推。

卷积运算可以用来做大整数的乘法(数组表示数的乘法),比如在上面的例子中,要求123乘以456,可以先得到它的卷积序列,然后从后往前,18将8保留,进位1给27;然后27变成28,把8保留进位2给28;然后28变成30,把0保留进位3给13;然后13变成16,把6保留进位1给4;4变成5即是最高位。也就是乘法的结果是56088。

*对白噪声卷积

>>> import numpy as np
>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> sig=np.random.randn(1000) #生成随机数
>>> autocorr=signal.fftconvolve(sig,sig[::-1],mode='full') #fft算法实现卷积
>>> fig,(ax_orig,ax_mag)=plt.subplots(2,1) #建立两行一列图形
>>> ax_orig.plot(sig) #在第一行把原始的随机数序列sig画出来
[<matplotlib.lines.Line2D object at 0x0000000006E1DC88>]
>>> ax_orig.set_title('White noise') #设置标题'白噪声'
<matplotlib.text.Text object at 0x0000000006931860>
>>> ax_mag.plot(np.arange(-len(sig)+1,len(sig)),autocorr) #卷积后的图像
[<matplotlib.lines.Line2D object at 0x0000000006E1DB00>]
>>> ax_mag.set_title('Autocorrelation') #设置标题
<matplotlib.text.Text object at 0x0000000006DFE8D0>
>>> fig.tight_layout() #此句可以防止图像重叠
>>> fig.show() #显示图像

fftconvolve只是用fft算法(快速傅立叶变换)实现的卷积,其结果应当和普通的convolve一样。

python scipy卷积运算的实现方法

*二维图像卷积运算

>>> import numpy as np
>>> from scipy import signal
>>> from scipy import misc
>>> import matplotlib.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') #显示原始的图
<matplotlib.image.AxesImage object at 0x00000000078FC198>
>>> ax1.set_axis_off() #不显示坐标轴
>>> ax2.imshow(np.absolute(grad),cmap='gray') #显示卷积后的图
<matplotlib.image.AxesImage object at 0x00000000078FCE48>
>>> ax2.set_axis_off() #不显示坐标轴
>>> fig.show() #显示绘制好的画布

二维的卷积需要用上面的signal.convolve2d()。

之所以要对卷积后的图像数组grad作np.absolute()求绝对值运算是因为灰度图像的值都是正值,没有负的,为了防止出现负值所以才这样做。

python scipy卷积运算的实现方法 

二维的卷积运算还有一种函数,是signal.sepfir2d(),它可以传入三个参数,后两个参数指定行和列的卷积和(两个方向上的卷积是可以不同的,分别指定卷积和序列)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的subprocess模块总结
Nov 07 Python
python删除过期文件的方法
May 29 Python
Python处理XML格式数据的方法详解
Mar 21 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
python多线程之事件Event的使用详解
Apr 27 Python
Python迭代器定义与简单用法分析
Apr 30 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
python中把元组转换为namedtuple方法
Dec 09 Python
python sleep和wait对比总结
Feb 03 Python
python 三元运算符使用解析
Sep 16 #Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 #Python
Python循环实现n的全排列功能
Sep 16 #Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 #Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 #Python
Python 最强编辑器详细使用指南(PyCharm )
Sep 16 #Python
python 公共方法汇总解析
Sep 16 #Python
You might like
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
Position属性之relative用法
2015/12/14 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
Python中分数的相关使用教程
2015/03/30 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
python groupby 函数 as_index详解
2019/12/16 Python
python文件和文件夹复制函数
2020/02/07 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
使用索引有什么好处
2016/07/27 面试题
母校寄语大全
2014/04/10 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
春季运动会开幕词
2015/01/28 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
药店收银员岗位职责
2015/04/07 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
vue使用element-ui按需引入
2022/05/20 Vue.js