1.cv2.blur(img, (3, 3)) 進行均值濾波
參數說明:img表示輸入的圖片, (3, 3) 表示進行均值濾波的方框大小
2. cv2.boxfilter(img, -1, (3, 3), normalize=True) 表示進行方框濾波,
參數說明當normalize=True時,與均值濾波結果相同, normalize=False,表示對加和后的結果不進行平均操作,大於255的使用255表示
3. cv2.Guassianblur(img, (3, 3), 1) 表示進行高斯濾波,
參數說明: 1表示σ, x表示與當前值得距離,計算出的G(x)表示權重值

4. cv2.medianBlur(img, 3) #中值濾波,相當於將9個值進行排序,取中值作為當前值
參數說明:img表示當前的圖片,3表示當前的方框尺寸
在圖像的讀取中,會存在一些躁聲點,如一些白噪聲,因此我們需要進行去躁操作
代碼:
1.原始圖片的輸入
2.使用cv2.blur進行均值濾波
3.使用cv2.boxfilter 進行方框濾波, 比較normalize=True or normalize=False
4.使用cv2.GussianBlur 進行高斯濾波
5. 使用cv2.medianBlur 進行中值濾波
6.做一個合並顯示
import cv2 import numpy as np # 1.圖片中存在一些噪音點 img = cv2.imread('lenaNoise.png') cv2.imshow('original', img) cv2.waitKey(0) cv2.destroyAllWindows()

# 2. cv2.blur 使用均值濾波,即當對一個值進行濾波時,使用當前值與周圍8個值之和,取平均做為當前值 mean = cv2.blur(img, (3, 3)) cv2.imshow('mean', mean) cv2.waitKey(0) cv2.destroyAllWindows()

# 3. cv2.boxFilter 表示進行方框濾波 box = cv2.boxFilter(img, -1, (3, 3), normalize=True) cv2.imshow('box', box) cv2.waitKey(0) cv2.destroyAllWindows() # 當normalize=False 表示對加和后的9個點,不進行求平均的操作,如果加和后的值大於255,使用255表示 box_1 = cv2.boxFilter(img, -1, (3, 3), normalize=False) cv2.imshow('box_1', box_1) cv2.waitKey(0) cv2.destroyAllWindows()

# 4. cv2.GaussianBlur 根據高斯的距離對周圍的點進行加權,求平均值1,0.8, 0.6, 0.8 gaussian = cv2.GaussianBlur(img, (5, 5), 1) cv2.imshow('gaussian', gaussian) cv2.waitKey(0) cv2.destroyAllWindows()

# 5. cv2.medianBlur #將9個數據從小到大排列,取中間值作為當前值 median = cv2.medianBlur(img, 3) cv2.imshow('median', median) cv2.waitKey(0) cv2.destroyAllWindows()

# 6. 做一個合並顯示 imags = np.vstack((mean, gaussian, median)) cv2.imshow('all', imags) cv2.waitKey(0) cv2.destroyAllWindows()

