标签:median 元素 超过 enc com gauss 数组 mode head
scipy.fftpack模块用来计算快速傅里叶变换
图片是二维数据,注意使用fftpack的二维转变方法
from scipy.fftpack import fft2, ifft2
1.使用傅里叶变换把图片转化为频率
2.频率超过一定的阈值,我们认为是噪点,赋值为0
3.把频率还原为图片.
4.显示最终的效果.
moon_fft = fft2(moon) # 傅里叶变换, 图片转化为频率
np.abs(moon_fft)
?
threshold = 8e2 # 设置过滤的阈值 ,
res = np.where(np.abs(moon_fft) > threshold, 0 , moon_fft) # 频率绝对值 超过该阈值,认为是噪点,赋值为0
?
moon_ifft = ifft2(res) # 傅里叶逆变换 将过滤后的结果转换回来
moon_clean = np.real(moon_ifft) # 只取实部
?
?
import scipy.integrate as integrate
half_pi, deviation = integrate.quad(lambda x: (1-x ** 2)**0.5, -1, 1) # 半个pi , 误差
导包: from scipy import io / import scipy.io as io
使用scipy中的io.savemat()保存数组 文件格式是.mat,标准的二进制文件
io.savemat(‘moon_clean.mat‘, mdict={‘data‘: moon_clean})
使用io.loadmat()读取数据
moon_mdict = spio.loadmat(‘moon_clean.mat‘)
?
moon_clean = moon_mdict[‘data‘]
from PIL import Image,ImageFilter
cat = Image.open(‘../data/cat.jpg‘)
cat.filter(ImageFilter.BLUR) # 模糊处理
cat.filter(ImageFilter.CONTOUR) # 轮廓
from scipy import ndimage
# mode : {‘reflect‘, ‘constant‘, ‘nearest‘, ‘mirror‘, ‘wrap‘}
face_shift = ndimage.shift(face, (200,300,0),mode=‘constant‘)
face_rotate = ndimage.rotate(face,90, mode=‘mirror‘) # angle : 旋转角度
face_zoom = ndimage.zoom(face,(2,3)) # 使用灰白图片
face_split = face[200:500,500:800]
添加噪声,对噪声图片使用ndimage中的高斯滤波、中值滤波、signal中维纳滤波进行处理 使图片变清楚
使用灰色图片添加噪声
face_noise = face.copy().astype(np.float64) face_noise += face_noise.std() * 0.5 * np.random.randn(*face.shape)
高斯滤波sigma:高斯核的标准偏差
face_gaussian = ndimage.gaussian_filter(face_noise,sigma=1) # sigma 标准差 越大范围取得越大,反之
中值滤波参数size:给出在每个元素上从输入数组中取出的形状位置,定义过滤器功能的输入
face_median = ndimage.median_filter(face_noise,size=4)
signal维纳滤波mysize:滤镜尺寸的标量
face_wiener = wiener(face_noise, mysize=5)
标签:median 元素 超过 enc com gauss 数组 mode head
原文地址:https://www.cnblogs.com/Deaseyy/p/11921654.html