在一张图像,在数据存储或传输的过程中,或多或少都会引入噪声,常见的图像噪声如高斯噪声、瑞利噪声、椒盐噪声等。为了避免噪声对图像信息进行干扰或者说为了更有利于图像的后续处理,所以需要对图像进行滤波。在OpenCV中,有几种最基础的图像滤波函数,cv2.blur(),cv2.GaussianBlur(),cv2.medianBlur(),cv2.bilateralFiter() ,可以分别进行均值滤波、中值滤波、高斯滤波和双边滤波。
函数简介
1、blur—图像均值平滑滤波
函数原型:blur(src, ksize, dst=None, anchor=None, borderType=None)
src:图像矩阵
ksize:滤波窗口尺寸
2、GaussianBlur—图像高斯平滑滤波
函数原型:GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)
src:图像矩阵
ksize:滤波窗口尺寸
sigmaX:标准差
3、medianBlur—图像中值滤波
函数原型:medianBlur(src, ksize, dst=None)
src:图像矩阵
ksize:滤波窗口尺寸
4、bilateralFilter—图像双边滤波
函数原型:bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
src:图像矩阵
d:邻域直径
sigmaColor:颜色标准差
sigmaSpace:空间标准差
#中值滤波
import cv2
img=cv2.imread('E:/python_cv/01.jpg',1)
cv2.imshow('src',img)
dst=cv2.medianBlur(img,5)
cv2.imshow('dst',dst)
cv2.waitKey(0)
#均值滤波
import cv2
img=cv2.imread('E:/python_cv/01.jpg',1)
cv2.imshow('src',img)
dst=cv2.blur(img,(5,5))
cv2.imshow('dst',dst)
cv2.waitKey(0)
#高斯滤波
import cv2
img=cv2.imread('E:/python_cv/01.jpg',1)
cv2.imshow('src',img)
dst=cv2.GaussianBlur(img,(5,5),1.5)
cv2.imshow('dst',dst)
cv2.waitKey(0)
#高斯双边滤波
import cv2
img=cv2.imread('E:/python_cv/01.jpg',1)
cv2.imshow('src',img)
#后面两个数字:空间高斯函数标准差,灰度值相似性标准差
dst=cv2.bilateralFilter(img,15,35,35)
cv2.imshow('dst',dst)
cv2.waitKey(0)
多试几个ksize看看
import numpy as np
import cv2
image = cv2.imread('E:/python_cv/01.jpg',1)
cv2.imshow('src',img)
cv2.waitKey(0)
#均值滤波
blurred = np.hstack([cv2.blur(image,(3,3)),
cv2.blur(image,(5,5)),
cv2.blur(image,(7,7))
])
cv2.imshow("Averaged",blurred)
cv2.waitKey(0)