python实现高斯滤波
一,定义
核是:3 *3 均值滤波
二,高斯函数
Y方向的方差与X方向的一致。处理后图像看起来更模糊(滤波明显)的话,核要更大。
(三)代码实现
(四)核计算
(五)图像产生高斯噪声循环代码实现
1 def clamp(pv): #使我们的随机值在0-255之间 2 if pv > 255: 3 return 255 4 if pv < 0: 5 return 0 6 return pv 7 import cv2 as cv 8 import numpy as np 9 10 def gaussian_noise(image): #对图像加上高斯噪声 11 h,w,c = image.shape 12 for row in range(h): #十分耗时 13 for col in range(w): 14 s = np.random.normal(0,20,3) #产生3个随机值,符合正态分布,第一个参数是概率分布的均值,对应分布中心,,第二个是概率分布的标准差,越小越瘦高,第三个是输出的值个数 15 b = image[row,col,0] #blue 16 g = image[row,col,1] #green 17 r = image[row,col,2] #red 18 image[row,col,0] = clamp(b+s[0]) 19 image[row,col,1] = clamp(g+s[1]) 20 image[row,col,2] = clamp(r+s[2]) 21 22 cv.imshow("noise image",image) 23 24 25 src = cv.imread("./1.png") #读取图片 26 cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应 27 cv.imshow("input image",src) #通过名字将图像 28 gaussian_noise(src) 29 30 cv.waitKey(0) #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作 31 cv.destroyAllWindows() #销毁所有窗口
(六)使用高斯模糊处理高斯噪声(发现高斯噪声的影响不大,高斯模糊对其有抑制作用)
1 gaussian_noise(src) #修改原图为高斯噪声图 2 dst = cv.GaussianBlur(src,(5,5),15) 3 cv.imshow("GaussianBlur",dst)
参考:
https://www.cnblogs.com/ssyfj/p/9268492.html