scipy详解
登月图片消噪
scipy.fftpack模块用来计算快速傅里叶变换
速度比传统傅里叶变换更快,是对之前算法的改进
图片是二维数据,注意使用fftpack的二维转变方法
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
%matplotlib inline
# scipy的快速傅里叶变换函数
from scipy.fftpack import fft2,ifft2
data = plt.imread('moonlanding.png')
fft_data = fft2(data)
# 滤波 过滤高频波
fft_data[np.where(np.abs(fft_data)>8e2)] = 0
# 转换回时域
ifft_data = ifft2(fft_data)
# ifft_data
# 获取实数部分
result = np.real(ifft_data)
plt.figure(figsize=(8,8))
plt.imshow(result,cmap='gray')
ifft_data.shape
数值积分,求解圆周率
求解圆周率
integrate 对函数(1 - x^2)^0.5进行积分
使用scipy.integrate进行积分,调用quad()方法
import scipy.integrate as integrate
def func_xy(x):
# y = (1-x**2)**0.5
return (1-x**2)**0.5
# 参数1: 是一个函数(指针),描述的是x和y之间的关系
# 参数2,3:是不规则图形在x轴上的起点和终点
# quad函数求面积
area,err = integrate.quad(func_xy,-1,1)
pi = area*2
pi
3.1415926535897967
Scipy文件输入/输出
随机生成数组,使用scipy中的io.savemat()保存
文件格式是.mat,标准的二进制文件
# i input
# o output
import scipy.io as io
data = np.random.random(size=(100,2))
data
io.savemat('mydata',{'data':data})
使用io.loadmat()读取数据
ndata = io.loadmat('mydata.mat')['data']
读写图片使用scipy中misc.imread()/imsave()
import scipy.misc as misc
plt.imshow(misc.face())
image = misc.face()
misc.imsave('mm.png',image)
plt.imshow(misc.imread('mm.png'))
# `imsave` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.
from imageio import imwrite,imread
imwrite('mmm.png',image)
其他处理方式misc.imrotate\imresize\imfilter
# 处理图片旋转
rotate_image = misc.imrotate(image,angle=90)
d:\python3.6\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: `imrotate` is deprecated!
`imrotate` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.
Use ``skimage.transform.rotate`` instead.
"""Entry point for launching an IPython kernel.
rotate_image
<matplotlib.image.AxesImage at 0x110b6630>
# 调整图片大小
# 使用整数 百分比(0-100之间的数)
m1 = misc.imresize(image,size=50)
d:\python3.6\lib\site-packages\ipykernel_launcher.py:2: DeprecationWarning: `imresize` is deprecated!
`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.
Use ``skimage.transform.resize`` instead.
plt.imshow(m1)
# 0-1之间的小数,修改的是像素
m2 = misc.imresize(image,size=0.01)
plt.imshow(m2)
# 使用元组调整图像大小(填充、压缩的效果)
m3 = misc.imresize(image,size=(100,200))
plt.imshow(m3)
# 使用imfilter滤镜,处理图片效果
# 'blur', 'contour', 'detail', 'edge_enhance', 'edge_enhance_more','emboss', 'find_edges', 'smooth', 'smooth_more', 'sharpen'
m4 = misc.imfilter(image,ftype='edge_enhance')
plt.imshow(m4)
使用scipy.ndimage图片处理
使用scipy.misc.face(gray=True)获取图片,使用ndimage移动坐标、旋转图片、切割图片、缩放图片
import scipy.ndimage as ndimage
导包,读取图片显示图片
gray_image = misc.face(gray=True)
plt.imshow(gray_image,cmap='gray')
shift移动坐标
# shift-->float类型,表示像素,不是比例
plt.imshow(ndimage.shift(gray_image,shift=200),cmap='gray')
plt.imshow(ndimage.shift(gray_image,shift=(100,200)),cmap='gray')
shift函数中mode参数的可选值:'constant', 'nearest', 'reflect', 'mirror' or 'wrap'
plt.imshow(ndimage.shift(gray_image,shift=(100,100),mode='constant'),cmap='gray')
<matplotlib.image.AxesImage at 0x205bdef0>
rotate旋转图片
plt.imshow(ndimage.rotate(gray_image,angle=70),cmap='gray')
<matplotlib.image.AxesImage at 0x1e669eb0>
zoom缩放图片
# zoom使用float,是一个比例值
plt.imshow(ndimage.zoom(gray_image,zoom=0.5))
# zoom使用元组,也只接受小数,表示height、width的缩放比例
plt.imshow(ndimage.zoom(gray_image,zoom=(0.3,0.5)))
<matplotlib.image.AxesImage at 0x1fe8dd50>
使用切片切割图片
图片进行过滤
添加噪声,对噪声图片使用ndimage中的高斯滤波、中值滤波、signal中维纳滤波进行处理
使图片变清楚
moon = plt.imread('moonlanding.png')
plt.imshow(moon,cmap='gray')
<matplotlib.image.AxesImage at 0x20911450>
加载图片,使用灰色图片misc.face()添加噪声
face = misc.face(gray=True)
plt.imshow(face)
face1 = face[0:512,-512:]
plt.imshow(face1)
noise = face1.std() * np.random.random(face1.shape)
plt.imshow((face1 + noise),cmap='gray')
<matplotlib.image.AxesImage at 0x213db7b0>
noise_face = face1 + noise
plt.imshow(ndimage.gaussian_filter(noise_face,sigma=1.5),cmap='gray')
plt.imshow(ndimage.median_filter(noise_face,size=3),cmap='gray')
gaussian高斯滤波参数sigma:高斯核的标准偏差
高斯分布就是正太分布
moon1 = ndimage.gaussian_filter(moon,sigma=3)
plt.imshow(moon1,cmap='gray')
<matplotlib.image.AxesImage at 0x20d221f0>
median中值滤波参数size:给出在每个元素上从输入数组中取出的形状位置,定义过滤器功能的输入
moon2 = ndimage.median_filter(moon,size=15)
plt.imshow(moon2,cmap='gray')
signal维纳滤波参数mysize:滤镜尺寸的标量
import scipy.signal as signal
# 类似傅里叶变换的一种算法
moon3 = signal.wiener(moon,mysize=5)
plt.imshow(moon3)
<matplotlib.image.AxesImage at 0x2236e230>
scipy详解的更多相关文章
- (转)scipy详解
原文:https://www.cnblogs.com/ws0751/p/8361353.html#top 登月图片消噪 scipy.fftpack模块用来计算快速傅里叶变换速度比传统傅里叶变换更快 ...
- Heapsort 堆排序算法详解(Java实现)
Heapsort (堆排序)是最经典的排序算法之一,在google或者百度中搜一下可以搜到很多非常详细的解析.同样好的排序算法还有quicksort(快速排序)和merge sort(归并排序),选择 ...
- 深度学习之卷积神经网络(CNN)详解与代码实现(一)
卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目 ...
- 基于模型的特征选择详解 (Embedded & Wrapper)
目录 基于模型的特征选择详解 (Embedded & Wrapper) 1. 线性模型和正则化(Embedded方式) 2. 基于树模型的特征选择(Embedded方式) 3. 顶层特征选择算 ...
- 【转载】 深度学习之卷积神经网络(CNN)详解与代码实现(一)
原文地址: https://www.cnblogs.com/further-further-further/p/10430073.html ------------------------------ ...
- 利用python求解物理学中的双弹簧质能系统详解
利用python求解物理学中的双弹簧质能系统详解 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的 ...
- 详解Python编程中基本的数学计算使用
详解Python编程中基本的数学计算使用 在Python中,对数的规定比较简单,基本在小学数学水平即可理解. 那么,做为零基础学习这,也就从计算小学数学题目开始吧.因为从这里开始,数学的基础知识列位肯 ...
- windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- Jupyter自定义设置详解
今天专门花时间总结梳理一下jupyter的一些高级设置,jupyter我已经介绍过一次基本内容了,Setup and Linux | James Chen's Blogs,尤其是如何在服务器运行jup ...
随机推荐
- keras模块学习之-激活函数(activations)--笔记
本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! 每一个神经网络层都需要一个激活函数,例如一下样例代码: from keras.layers.core import Activati ...
- CDH6.2离线安装(整理版)
1.概述 CDH,全称Cloudera's Distribution, including Apache Hadoop.是Hadoop众多分支中对应中的一种,由Cloudera维护,基于稳定版本的Ap ...
- CentOS7 部署 ElasticSearch7.0.1 集群
环境 主机名 IP 操作系统 ES 版本 test1 192.168.1.2 CentOS7.5 7.0.1 test2 192.168.1.3 CentOS7.5 7.0.1 test3 192.1 ...
- setState回调
this.state = {foo: 2}; this.setState({foo: 123}, ()=> { console.log(foo); });
- 流媒体知识 wiki
媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等.最近因为项目的关系,需要理清媒 ...
- 用SAM实现后缀排序
因为本人几乎不会后缀数组,所以遇到这种SA的模板题也要拿SAM解决. 还是有一点思维难度的. 首先按照国际惯例,建反串的SAM. 然后对于这个反串,我们考虑两个前缀哪一个字典序小:因为是串是反的,所以 ...
- Cogs 763. [USACO Open09] 数字的游戏(博弈)
[USACO Open09] 数字的游戏 ★☆ 输入文件:cdgame.in 输出文件:cdgame.out 简单对比 时间限制:1 s 内存限制:128 MB Bessie正跟FJ玩一个数字游戏,她 ...
- python生成词云
上代码: # -*- coding: utf-8 -*- # @Time : 19-1-10 上午10:27 # @Author : Felix Wang import jieba # pip ins ...
- VMware安装VMwaretools
默认点击“安装VMware Tools(T)”选项下载好安装包 下载的安装包放在计算机的media目录下 进入/media/ubuntu14-04/VMware Tools目录: cd /media/ ...
- Pytest权威教程21-API参考-01-函数(Functions)
目录 函数(Functions) pytest.approx pytest.fail pytest.skip pytest.importorskip pytest.xfail pytest.exit ...