现在把卷积模板中的值换一下,不是全瞎携扒1了,换成一组符合高斯分布的数值放在模板里面,比如这时中间的数值最大,往两边走越来越小,构造一个小的高斯隐行包。实现的函数为cv2.GaussianBlur()。对于高斯模板,我们需要制定的是高斯核的磨昌高和宽(奇数),沿x与y方向的标准差(如果只给x,y=x,如果都给0,那么函数会自己计算)。高斯核可以有效的出去图像的高斯噪声。当然也可以自己构造高斯核,相关函数:cv2.GaussianKernel().
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread(‘flower.jpg‘,0) #直接读为灰度图像
for i in range(2000): #添加点噪声
temp_x = np.random.randint(0,img.shape[0])
temp_y = np.random.randint(0,img.shape[1])
img[temp_x][temp_y] = 255
blur = cv2.GaussianBlur(img,(5,5),0)
plt.subplot(1,2,1),plt.imshow(img,‘gray‘)#默认彩色,另一种彩色bgr
plt.subplot(1,2,2),plt.imshow(blur,‘gray‘)
如何用python实现图像的一维高斯滤波建议你不要使用高斯滤波。
推荐你使用一维中值滤波
matlab的函数为
y = medfilt1(x,n)
x为数组,是你要处理原始波形,n是中值滤波器的参数(大于零的整数)。y是滤波以后的结果(是数组)
后面再
plot(y)
就能看到滤波以后的结果
经过medfilt1过滤以后,y里储存的是低频的波形,如果你需要高频波形,x-y就是高频波虚带锋形
顺便再说一点,n是偶数的话,滤波差晌效果比较好。
N越小,y里包含的高频成分就越多,y越大,y里包含的高频成分就越少。
记住,无论如何y里保存的都是整体的低频波。(如果你看不行腊懂的话,滤一下,看y波形,你马上就懂了)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)