python环境用opencv实现多种滤波操作
1、滤波或者叫模糊
常用的有 中值滤波 均值滤波 高斯滤波 高斯双边滤波 boxFilter
其中中值滤波对椒盐噪声效果好(前文已有实验),双边效果好点但速度慢点。
本文还是以梅瓶图为例进行比较说明。
import cv2 as cvimport numpy as npimport copyimport osfrom matplotlib import pyplot as pltfrom skimage.measure import compare_ssimimport random
image = cv.imread("c:\\meiping1.png", 1)cv.imshow("image", image)

2、加噪声
NoiseImg = image.copy()for k in range(15000): # Create 5000 noisy pixels i = random.randint(0, image.shape[0] - 1) j = random.randint(0, image.shape[1] - 1) color = (random.randrange(256), random.randrange(256), random.randrange(256)) NoiseImg[i, j] = colorcv.imshow("randomcolorNoize", NoiseImg)

3、# 中值滤波
NoiseImgCopy = NoiseImg.copy()
medianBlur = cv.medianBlur(NoiseImgCopy, 5)
cv.imshow("medianBlur", medianBlur)

4、# 均值滤波Blur = cv.blur(NoiseImgCopy, (5, 5))cv.imshow("Blur", Blur)

5、# 高斯滤波
GaussianBlur = cv.GaussianBlur(NoiseImgCopy, (5, 5), 0)
cv.imshow("GaussianBlur", GaussianBlur)

6、# 高斯双边滤波
bilateralFilter = cv.bilateralFilter(NoiseImgCopy, 40, 75, 75)
cv.imshow("bilateralFilter", bilateralFilter)
# cv.imshow("NoiseImgg", NoiseImg)

7、#方框滤波
boxFilter = cv.boxFilter(NoiseImgCopy, -1, (5,5), normalize=1)
cv.imshow("boxFilter", boxFilter)

8、通常常用的 是高斯和中值滤波比较多用。常作为前期处理使用。有些比较厉害的滤波后期再介绍。