scipy
scipy是基于numpy的一个扩展工具,提供了许多复杂科学计算的方法,比如:微积分、图像处理、微分方程、傅里叶变换、信号处理等
模块安装
pip install scipy
# 如果安装太慢,使用国内镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy
默认安装的是最新版本,以下有一些模块功能可能已经修改,如果提示模块中没有这个功能,可能有以下几个问题
- 没有安装Pillow
解决方式:
pip install Pillow
- 版本问题,更新后模块这个功能已经修改
解决方案:
查找官网 https://docs.scipy.org/doc/scipy/reference/
或者卸载该版本,重新安装旧版本
1、微积分
导入模块
import numpy as np
from scipy import integrate
用integrate给y=1-x^2在区间(-1,1)内积分
练习:
用微积分的方法来推导圆周率用,提示最好用半径为1的圆
将圆的方程用y表示,圆心位于原点,将图像分上下两部分积分
2、输入输出
scipy可以处理mat格式的文件
从scipy中导入io模块
from scipy import io
mat文件的存储和读取
可以看到生成了一个mat文件
此mat文件只能用scipy读取
3、图片处理
使用scipy可以进行图片的移位、旋转、切割、缩放等操作
导入模块
import matplotlib.pyplot as plt
%matplotlib inline
from scipy import misc,ndimage
1、读取图片
misc.imread()就相当于 plt.imread() 读取图片
2、旋转
- 用misc来旋转
- 用ndimage来旋转
3、缩放
- 用misc来重置大小
- 用ndimage来缩放比例
4、滤镜
滤镜的参数有
‘blur’, ‘contour’, ‘detail’, ‘edge_enhance’, ‘edge_enhance_more’, ‘emboss’, ‘find_edges’
‘smooth’, ‘smooth_more’, ‘sharpen’
5、移位
移位的mode取值:constant,nearest,reflect,mirror,wrap,代表如何来填充移出去的部分
nearest 最近的像素填充
6、滤波
首先看这张图片
这些条条是一些高频信号,接下来需要把这些高频信号去掉,使图片边清晰
- 高斯滤波 ndimage.gaussian_filter(pic,sigma=3)
参数pic表示这张图片
参数sigma用于控制滤波的频率,sigma越大代表滤波的频率就越小,滤掉的高频信号就越多
- 中位数滤波 ndimage.median_filter(pic,size=15)
size越大,滤波的频率越低
- winner滤波 signal.wiener(pic,mysize=8)
mysize越大,滤波的频率越低
使用winner滤波,首先要导入 signal