- 空间滤波
- 平滑空间滤波器(低通)
- 均值滤波
- 高斯滤波
- 双边滤波
- 中值滤波
- 锐化空间滤波器(高通)
- 各向梯度之和算子(拉普拉斯算子(二阶微分))
- 梯度幅值算子(一阶微分)
- 梯度幅值改进算子(sobel算子)
- 混合空间滤波器
均值滤波器可以一定程度降低高斯噪声,但对椒盐噪声效果不好,并且平滑也会带来图像模糊化。
椒盐噪声是灰度值过大或过小的噪声,对均值的影响较大,所以滤波效果不好。
# 方法1 img_smooth = cv.blur(img_org, ksize=(3, 3)) # 方法2 kernel = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])/9 img_smooth = cv.filter2D(img_org, -1, kernel)高斯滤波
高斯滤波构造二维高斯分布的核函数,可以有效的出去图像的高斯噪声。
# 方法1 img_smooth = cv2.GaussianBlur(img,(5,5),0.6) # 方法2 kernel = cv.getGaussianKernel(ksize=3, sigma=0.6) * cv.getGaussianKernel(ksize=3, sigma=0.6).T img_smooth = cv.filter2D(img_org, -1, kernel)双边滤波
双边滤波希望在非边缘部分,让图像平滑(高斯滤波); 在边缘部分,让图像变得锐化(让模板中与中心像素差值大的权重更小),可以有效保留边缘。
img_smooth = cv2.bilateralFilter(img_org,r,差值,差值)中值滤波
中值滤波用模板中像素值的中位像素值来确定当前像素值, 可以有效去除椒盐噪声。
11 blur = cv2.medianBlur(img_org,5)锐化空间滤波器(高通) 各向梯度之和算子(拉普拉斯算子(二阶微分))
拉普拉斯算子可以突现出图像中小的细节信息。
kernel0 = np.array([[0, -1, 0],
[-1, 4, -1],
[0, -1, 0]])
kernel1 = np.array([[-1, -1, -1],
[-1, 8, -1],
[-1, -1, -1]])
dst = cv.filter2D(img_smooth, -1, kernel0)
img_sharpen = img_org + dst
梯度幅值算子(一阶微分)
kernel0 = np.array([[-1, 0], [0, -1]]) kernel1 = np.array([[0, -1], [-1, 0]]) dst0 = cv.filter2D(img_smooth, -1, kernel0) dst1 = cv.filter2D(img_smooth, -1, kernel1) dst = dst0 + dst1 img_sharpen = img_org + dst梯度幅值改进算子(sobel算子)
sobel算子可以产生较好的边缘检测效果,而且对噪声具有平滑抑制作用,但是得到的边缘较粗,可能出现伪边缘现象。
kernel0 = np.array([[-1, -2, -1], [0, 0, 0], [1, 2, 1]]) kernel1 = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]) dst0 = cv.filter2D(img_org, -1, kernel0) dst1 = cv.filter2D(img_org, -1, kernel1) dst = dst0 + dst1 img_sharpen = img_org + dst混合空间滤波器
灰度变换平滑锐化等方法组合起来使用



