图像滤波的目的是抑制图像中的噪声。
滤波技术
图像滤波技术
1.均值滤波:将滤波窗口内的所有像素值求和,取得平均值作为中心像素的值。
2.中值滤波:将滤波窗口(含有奇数个点)内的像素值按照从小到大的顺序排列,取得中值作为中心像素的值。它可以有效的抑制椒盐噪声。
3.高斯滤波:将滤波窗口内的像素值进行高斯加权求和,求得的值作为中心像素的值。高斯滤波只能去除高斯噪声。
cv2.GaussianBlur():需要指定X 、Y方向的标准差,如果只指定X方向,Y方向也取相同的值。如果两个方向的标准差都为0,函数会根据核函数的大小自动计算。
4.双边滤波:使用空间高斯权重和灰度值相似性高斯权重,根据每个位置的邻域对该位置构建不同的权重模板。
代码
import cv2
# 读取图像
img = cv2.imread(r'F:\OPENCV\Opencv\flower.jfif', cv2.IMREAD_COLOR)
cv2.namedWindow('src_img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('src_img', (300, 300))
cv2.imshow('src_img', img)
# 灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.namedWindow('gray_img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('gray_img', (300, 300))
cv2.imshow('gray_img', gray_img)
# 均值滤波
blur_img = cv2.blur(gray_img, (5, 5))
cv2.namedWindow('blur_img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('blur_img', (300, 300))
cv2.imshow('blur_img', blur_img)
# 中值滤波
medianBlur_img = cv2.medianBlur(gray_img, 5)
cv2.namedWindow('medianBlur_img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('medianBlur_img', (300, 300))
cv2.imshow('medianBlur_img', medianBlur_img)
# 高斯滤波
gaussian_img = cv2.GaussianBlur(gray_img, (5, 5), 0)
cv2.namedWindow('gaussian_img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('gaussian_img', (300, 300))
cv2.imshow('gaussian_img', gaussian_img)
# 双边滤波
bilateralFilter_img = cv2.bilateralFilter(gray_img, 9, 75, 75)
cv2.namedWindow('bilateralFilter_img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('bilateralFilter_img', (300, 300))
cv2.imshow('bilateralFilter_img', bilateralFilter_img)
cv2.waitKey()
cv2.destroyAllWindows()
结果
图像滤波的方法和滤波窗口(核)的大小可根据实际情况选定。