python环境用opencv实现多种滤波操作
1、滤波或者叫模糊常用的有 中值滤波均值滤波高盍嫫谧艰斯滤波高斯双边滤波boxFilter其中中值滤波对椒盐噪声效果好(前文已有实验),双边稗卡蛟毪效果好点但速度慢点。本文还是以梅瓶图为例进行比较说明。import cv2 as cvimport numpy as npimport copyimport osfrom matplotlib import pyplot as pltfrom skimage.measure import compare_ssimimport randomimage = 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(Noise朐袁噙岿ImgCopy, 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、通常常用的 是高斯和中值滤波比较多用。常作为前期处理使用。有些比较厉害的滤波后期再介绍。