常见噪声
高斯分布
大学本科阶段,大二左右一般都会教的,对这个不了解可以出门右转补一下课,可能会方便后续的理解。
高斯噪声的实现
import cv2 as cv
import numpy as np
def Gaussian_noise(image):
h,w,c = image.shape
for row in range(h):
for col in range(w):
s = np.random.normal(0,20,3)
b = image[row,col,0]
g = image[row,col,1]
r = image[row,col,2]
image[row,col,0] = np.clip(b+s[0],0,255)
image[row,col,1] = np.clip(g+s[1],0,255)
image[row,col,2] = np.clip(r+s[2],0,255)
cv.imshow("noise image",image)
scr = cv.imread("D:/academic/picture/opencv_data/lena.jpg")
cv.imshow("input image",scr)
Gaussian_noise(scr)
cv.waitKey(0)
cv.destroyAllWindows()
1.对于np.random.normal有疑问的可以参考这篇博客(侵删):
python中的np.random.normal
2.
np.clip(x,a_min,a_max)
相当于:
def clamp(x,a_min,a_max):
if x<a_min:
return a_min
elif x>a_max:
return a_max
else:
return x
加入高斯噪声后效果如下:
高斯模糊
dst = cv.GaussianBlur(scr,(5,5),0)
cv.imshow("GaussianBlur_image",dst)
效果如下:
最后附上cv2.GaussianBlur()的参数解析