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

posted @ 2020-09-01 00:20  山那边不是山  阅读(7714)  评论(0编辑  收藏  举报