1.cv2.blur(img, (3, 3)) 進(jìn)行均值濾波
參數(shù)說明:img表示輸入的圖片制市, (3, 3) 表示進(jìn)行均值濾波的方框大小
2. cv2.boxfilter(img, -1, (3, 3), normalize=True) 表示進(jìn)行方框?yàn)V波筒主,參數(shù)說明當(dāng)normalize=True時,與均值濾波結(jié)果相同, normalize=False,表示對加和后的結(jié)果不進(jìn)行平均操作,大于255的使用255表示
3. cv2.Guassianblur(img, (3, 3), 1) 表示進(jìn)行高斯濾波盖腿,
參數(shù)說明: 1表示σ, x表示與當(dāng)前值得距離凤藏,計(jì)算出的G(x)表示權(quán)重值
image
4. cv2.medianBlur(img, 3) #中值濾波奸忽,相當(dāng)于將9個值進(jìn)行排序堕伪,取中值作為當(dāng)前值
參數(shù)說明:img表示當(dāng)前的圖片揖庄,3表示當(dāng)前的方框尺寸在圖像的讀取中栗菜,會存在一些躁聲點(diǎn),如一些白噪聲蹄梢,因此我們需要進(jìn)行去躁操作
5. cv2.bilateralFilter雙邊濾波
流程:
1.原始圖片的輸入
2.使用cv2.blur進(jìn)行均值濾波
3.使用cv2.boxfilter 進(jìn)行方框?yàn)V波疙筹, 比較normalize=True or normalize=False
4.使用cv2.GussianBlur 進(jìn)行高斯濾波
5\. 使用cv2.medianBlur 進(jìn)行中值濾波
6.做一個合并顯示
import cv2
import numpy as np
# 1.圖片中存在一些噪音點(diǎn)
img = cv2.imread('lenaNoise.png')
cv2.imshow('original', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 2. cv2.blur 使用均值濾波,即當(dāng)對一個值進(jìn)行濾波時禁炒,使用當(dāng)前值與周圍8個值之和而咆,取平均做為當(dāng)前值
mean = cv2.blur(img, (3, 3))
cv2.imshow('mean', mean)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 3. cv2.boxFilter 表示進(jìn)行方框?yàn)V波
box = cv2.boxFilter(img, -1, (3, 3), normalize=True)
cv2.imshow('box', box)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 當(dāng)normalize=False 表示對加和后的9個點(diǎn),不進(jìn)行求平均的操作幕袱,如果加和后的值大于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 根據(jù)高斯的距離對周圍的點(diǎn)進(jìn)行加權(quán),求平均值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個數(shù)據(jù)從小到大排列,取中間值作為當(dāng)前值
median = cv2.medianBlur(img, 3)
cv2.imshow('median', median)
cv2.waitKey(0)
cv2.destroyAllWindows()
#bilateralFilter雙邊濾波
#能在保持邊界清晰的情況下有效的去除噪音
#但是這種操作與其他濾波器相比會比較慢
import cv2
img=cv2.imread('1.jpg')
#cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace)
#9 鄰域直徑望迎,兩個 75 分別是空間高斯函數(shù)標(biāo)準(zhǔn)差障癌,灰度值相似性高斯函數(shù)標(biāo)準(zhǔn)差
blur = cv2.bilateralFilter(img,9,75,75)
cv2.imshow('bilateralFilter',blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 6. 做一個合并顯示
imags = np.vstack((mean, gaussian, median))
cv2.imshow('all', imags)
cv2.waitKey(0)
cv2.destroyAllWindows()