4.1 简介
图像的实质是一种二维信号,滤波是信号处理中的一个重要概念。在图像处理中,滤波是很多图像算法的前置步骤或基础,图像滤波对理解卷积神经网络也有一定帮助。
4.2 学习目标
-
了解图像滤波的分类和基本概念
-
理解均值滤波、方框滤波、高斯滤波的原理
-
掌握OpenCV框架下滤波API的使用
4.3 滤波分类
线性滤波: 对邻域中的像素的计算为线性运算时,如利用窗口函数进行平滑加权求和的运算,或者某种卷积运算,都可以称为线性滤波。常见的线性滤波有:均值滤波、高斯滤波、盒子滤波、拉普拉斯滤波等等,通常线性滤波器之间只是模版系数不同。
非线性滤波: 非线性滤波利用原始图像跟模版之间的一种逻辑关系得到结果,如最值滤波器,中值滤波器。比较常用的有中值滤波器和双边滤波器。
4.4 coding
img = cv2.imread('./src/cat.jpg')
# 均值滤波 5*5模板
img_mean = cv2.blur(img, (5,5))
# 高斯滤波 5*5模板 标准差
img_Guassian = cv2.GaussianBlur(img,(5,5),0)
# 中值滤波
img_median = cv2.medianBlur(img, 5)
# 双边滤波
img_bilater = cv2.bilateralFilter(img,9,75,75)
# 展示不同的图片
titles = ['srcImg','mean', 'Gaussian', 'median', 'bilateral']
imgs = [img, img_mean, img_Guassian, img_median, img_bilater]
cv2.imshow('origin',img)
cv2.imshow('mean',img_mean)
cv2.imshow('Guassian',img_Guassian)
cv2.imshow('median',img_median)
cv2.waitKey(0)
cv2.destroyAllWindows()