4.3.2 中值滤波
4.3.2 中值滤波
滤波的概念来自数字信号处理,滤波器可以用来过滤掉无用的高频或者低频信号。在图像处理领域,滤波器的主要作用之一就是去噪。
中值滤波使用邻域内所有像素的中位数替换中心像素的值,可以在滤除异常值的情况下较好地保留纹理信息。如图4-16所示,通过使用中值滤波可以有效去除图像中的高斯噪声。这里需要注意的是,cv2.medianblur只能处理经过灰度处理的图像,且图像的数值必须是整数,归一化后的图像数据是无法直接处理的。
img=cv2.imread("../picture/bigpig.jpeg")
img=cv2.cvtcolor(img, cv2.color_bgr2gray)
img1=img.copy()
img2=img.copy()
#原图为增加噪声的图
img1=skimage.util.random_noise(img1, mode="gaussian", seed=none,
clip=true,mean=0,var=0.01)
#medianblur需要处理整型
img1=np.uint8(img1*255)
img2=cv2.medianblur(img1,3)
图4-16 使用中值滤波去除高斯噪声示例
中值滤波在一定程度上造成图像模糊和失真,滤波窗口变大时会非常明显。如图4-17所示,针对同一原始图像进行中值滤波,滤波窗口大小依次为3、11和19,图像模糊和失真越来越严重。
img=cv2.imread("../picture/bigpig.jpeg")
img=cv2.cvtcolor(img, cv2.color_bgr2gray)
img1=img.copy()
img2=img.copy()
img3=img.copy()
img4=img.copy()
#medianblur需要处理整型
img2=cv2.medianblur(img2,3)
img3=cv2.medianblur(img3,11)
img4=cv2.medianblur(img4,19)
图4-17 中值滤波带来的模糊效果示例
滤波的概念来自数字信号处理,滤波器可以用来过滤掉无用的高频或者低频信号。在图像处理领域,滤波器的主要作用之一就是去噪。
中值滤波使用邻域内所有像素的中位数替换中心像素的值,可以在滤除异常值的情况下较好地保留纹理信息。如图4-16所示,通过使用中值滤波可以有效去除图像中的高斯噪声。这里需要注意的是,cv2.medianblur只能处理经过灰度处理的图像,且图像的数值必须是整数,归一化后的图像数据是无法直接处理的。
img=cv2.imread("../picture/bigpig.jpeg")
img=cv2.cvtcolor(img, cv2.color_bgr2gray)
img1=img.copy()
img2=img.copy()
#原图为增加噪声的图
img1=skimage.util.random_noise(img1, mode="gaussian", seed=none,
clip=true,mean=0,var=0.01)
#medianblur需要处理整型
img1=np.uint8(img1*255)
img2=cv2.medianblur(img1,3)
图4-16 使用中值滤波去除高斯噪声示例
中值滤波在一定程度上造成图像模糊和失真,滤波窗口变大时会非常明显。如图4-17所示,针对同一原始图像进行中值滤波,滤波窗口大小依次为3、11和19,图像模糊和失真越来越严重。
img=cv2.imread("../picture/bigpig.jpeg")
img=cv2.cvtcolor(img, cv2.color_bgr2gray)
img1=img.copy()
img2=img.copy()
img3=img.copy()
img4=img.copy()
#medianblur需要处理整型
img2=cv2.medianblur(img2,3)
img3=cv2.medianblur(img3,11)
img4=cv2.medianblur(img4,19)
图4-17 中值滤波带来的模糊效果示例