python高斯滤波和降噪_OpenCV Python 使用高斯,中值,双边滤波去除噪声

python高斯滤波和降噪_OpenCV Python 使用高斯,中值,双边滤波去除噪声_第1张图片

By 凌顺

2019年9月18日

本示例使用的OpenCV版本是:OpenCV 4.1.1

运行Python的编辑器:Jupyter notebook 6.0.0

实例目的

在真是的图像中都是有噪声(噪点)的,噪声不仅会破坏图像的清晰度,还会使我们的的算法更难将其作为输入处理。在本例程中,学会如何消除或大幅减少噪音。

python高斯滤波和降噪_OpenCV Python 使用高斯,中值,双边滤波去除噪声_第2张图片

实现程序

1,加载必要的库和显示原图

import cv2

import numpy as np

import matplotlib.pyplot as plt

img = cv2.imread('dog.png').astype(np.float32) / 255

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.imshow(img)

python高斯滤波和降噪_OpenCV Python 使用高斯,中值,双边滤波去除噪声_第3张图片

2,为原图添加噪音

noised = (img + 0.2 * np.random.rand(*img.shape).astype(np.float32))

noised = noised.clip(0, 1)

plt.imshow(noised[:,:,[0,1,2]])

plt.show()

python高斯滤波和降噪_OpenCV Python 使用高斯,中值,双边滤波去除噪声_第4张图片

3,使用高斯滤波降噪

gauss_blur = cv2.GaussianBlur(noised, (7, 7), 0)

plt.imshow(gauss_blur[:, :, [0, 1, 2]])

plt.show()

python高斯滤波和降噪_OpenCV Python 使用高斯,中值,双边滤波去除噪声_第5张图片

4,使用中值滤波降噪

median_blur = cv2.medianBlur((noised * 255).astype(np.uint8), 7)

plt.imshow(median_blur[:, :, [0, 1, 1]])

plt.show()

python高斯滤波和降噪_OpenCV Python 使用高斯,中值,双边滤波去除噪声_第6张图片

5,使用双边滤波降噪

bilat = cv2.bilateralFilter(noised, -1, 0.3, 10)

plt.imshow(bilat[:, :, [0, 1, 2]])

plt.show()

python高斯滤波和降噪_OpenCV Python 使用高斯,中值,双边滤波去除噪声_第7张图片

程序说明

可以看出高斯效果好点,不过还是要根据不同的需求去做的。

你可能感兴趣的:(python高斯滤波和降噪)