使用Python+OpenCV实现图像去噪(五种函数对比)

使用Python+OpenCV实现图像去噪(本文以椒盐噪声为例),本文使用均值滤波(cv2.blur函数)、方框滤波(cv2.boxFilter函数)、高斯滤波(cv2.GaussianBlur 函数)、中值滤波(cv2.medianBlur 函数)、双边滤波(cv2.bilateralFilter 函数)去除噪声并给出对比图。

1、代码

# _*_ coding: utf-8 _*_
import cv2
import numpy as np
import matplotlib.pyplot as plt

#读取图片
imggs=cv2.imread('D:\\digital image processing\\test\\15_57_37_salt.png')

imggs_blur=cv2.blur(imggs,(5,5))
imggs_boxFilter=cv2.boxFilter(imggs,-1,(5,5))
imggs_GaussianBlur=cv2.GaussianBlur(imggs,(5,5),0)
imggs_medianBlur=cv2.medianBlur(imggs,5)
imggs_bilateralFilter=cv2.bilateralFilter(imggs,9,75,75)

#因为我读取的是png图片,所以又将png图片转化为RGB图片
imggsrgb=cv2.cvtColor(imggs,cv2.COLOR_BGR2RGB)
imggs_blurrgb=cv2.cvtColor(imggs_blur,cv2.COLOR_BGR2RGB)
imggs_boxFilterrgb=cv2.cvtColor(imggs_boxFilter,cv2.COLOR_BGR2RGB)
imggs_medianBlurrgb=cv2.cvtColor(imggs_medianBlur,cv2.COLOR_BGR2RGB)
imggs_GaussianBlurrgb=cv2.cvtColor(imggs_GaussianBlur,cv2.COLOR_BGR2RGB)
imggs_bilateralFilterrgb=cv2.cvtColor(imggs_bilateralFilter,cv2.COLOR_BGR2RGB)

显示图片
plt.subplot(2,3,1)
plt.imshow(imggsrgb)
plt.title('imggs')
plt.subplot(2,3,2)
plt.imshow(imggs_blurrgb)
plt.title('imggs_blur')
plt.subplot(2,3,3)
plt.imshow(imggs_boxFilterrgb)
plt.title('imggs_boxFilter')
plt.subplot(2,3,4)
plt.imshow(imggs_medianBlurrgb)
plt.title('imggs_medianBlur')
plt.subplot(2,3,5)
plt.imshow(imggs_GaussianBlurrgb)
plt.title('imggs_GaussianBlur')
plt.subplot(2,3,6)
plt.imshow(imggs_bilateralFilterrgb)
plt.title('imggs_bilateralFilter')
plt.show()

2、结果图