OpenCV中高斯噪音的生成和高斯濾波的使用
阿新 • • 發佈:2021-02-07
OpenCV中高斯噪音的生成和高斯濾波的使用
關鍵是高斯濾波函式的引數意義。
高斯濾波的數學理論基礎是二維正態分佈函式(又稱高斯函式,所以得名)
程式碼實現:
import cv2
import numpy as np
#高斯噪音的生成和高斯濾波的使用
img = cv2.imread('cat.jpg')
cv2.imshow('img',img)
h,w,ch = img.shape
def clamp(num): #對隨機數進行操作
if num>255:
return 255
elif num< 0:
return 0
else:
return num
#生成高斯噪音
for row in range(h):
for col in range(w):
s = np.random.normal(0,20,3) #生成3個隨機引數,0為均值,20為標準差
b = img[row,col,0]
g = img[row,col,1]
r = img[row,col,2]
img[row, col, 0] = b + clamp(s[0])
img[row, col, 1] = g + clamp(s[1])
img[row, col, 2] = r + clamp(s[2])
cv2.imshow('GaussianNoise',img)
#高斯濾波
# 引數解釋:img為處理物件(5,5)為高斯核心大小,0為高斯核函式(就是二維正態分佈函式)x方向的標準差,1為高斯核函式y方向的標準差
img = cv2.GaussianBlur(img,(5,5),0,1)
cv2.imshow('GaussianBlur',img)
cv2.waitKey()
執行結果: