- 思而不学 犹豫不决 浪费时间
- 学而不思 三心二意 效率低下
文章目录
8 图像滤波
图像滤波,是指保留图像细节特征的条件下对目标图像的噪声进行抑制,称之为图像平滑化或者滤波
滤波分为线性滤波和非线性滤波:
- 线性滤波:方框滤波,均值滤波,高斯滤波
- 非线性滤波:中值滤波(能够去除脉冲噪声,椒盐噪声同时又能够保留图像的边缘细节),双边滤波(可以做边缘保存)
其中高斯低通就是模糊,高通就是锐化
正态分布就是高斯分布。
通常在滤波的过程中,很重要的概念是“核” 。 ksize也就是内核的大小
-
均值滤波:
- 使用函数:cv2.blur()
-
方框滤波:
- 使用函数:cv.boxFilter()
-
高斯滤波:
高斯滤波器是求中心点邻近区域像素的高斯加权平均值。高斯滤波器只考虑像素之间的 间关系,而不会考虑像素值之间的关系(像素的相似度)。所以这种方法不会考虑一个像素是否位于边界。因此边界也会别模糊掉。
- 使用函数:cv2.GaussianBlur()
- 需要指定高斯核的宽和高(必须是奇数)。以及高斯函数沿 X,Y 方向的标准 差。如果我们只指定了 X 方向的的标准差,Y 方向也会取相同值。如果两个标准差都是 0,那么函数会根据核函数的大小自己计算。高斯滤波可以有效的 图像中去除高斯噪音。
-
中值滤波:
- 使用函数:cv2.medianBlur()
-
双边滤波:
- 使用函数:cv2.bilateralFilter()
import cv2 as cv
import numpy as np
img = cv.imread('test.jpg')
cv.imshow('input image', img)
# 均值滤波
dst = cv.blur(img, (5, 5))
cv.imshow('blur', dst)
# 方框滤波
dst = cv.boxFilter(img, -1, (5, 5), normalize=True) # 进行均值化处理
cv.imshow('boxFilter', dst)
# 高斯滤波
dst = cv.GaussianBlur(img, (5, 5), 0)
cv.imshow('Gaussian', dst)
# 中值滤波
dst = cv.medianBlur(img, 5)
cv.imshow('medianBlur', dst)
# 双边滤波
dst = cv.bilateralFilter(img, 9, 75, 75)
cv.imshow('bilateralFilter', dst)
cv.waitKey(0)
cv.destroyAllWindows()