科学计算-----第一天2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_37083038/article/details/102761462

import scipy.signal as signal
import numpy as np
import matplotlib.pyplot as plt


t=np.arange(0,20,0.1)
x=np.sin(t)
plt.figure(1)
plt.plot(t,x)
#给x随机加上噪声
x[np.random.randint(0,len(t),20)] += np.random.standard_normal(20)*0.6
plt.figure(2)
plt.plot(t,x)
#中值滤波
plt.figure(3)
x2=signal.medfilt(x,9)
plt.plot(t,x2)

plt.figure(4)
x3=signal.order_filter(x,np.ones(5),3)
plt.plot(t,x3)
'''
randint(low,high,size) 生成随机数
standard_normal(size)  标准正态分布

中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,
让周围的像素值接近的真实值,从而消除孤立的噪声点。注:分清均值与中值。
中值滤波是排序滤波的一个特例。
medfilt一维信号中值滤波,第二个参数必须为奇数,第二个参数为计算中值的邻域大小
medfilt2d二维信号中值滤波
order_filter 排序滤波。
第二个参数是x的维数,邻域范围 np.ones(5)一维,邻域为5。
第三个参数,0表示排序后选择最小值,1表示排序后选择第二小值,3表示排序后选择第四小值。
'''

四幅图分别为:原始图,加入噪声后的图,中值滤波后的图,顺序滤波后的图

猜你喜欢

转载自blog.csdn.net/qq_37083038/article/details/102761462