数字图像处理(二)
空间域滤波
平滑空间滤波器(低通)
均值滤波
均值滤波器可以一定程度降低高斯噪声,但对椒盐噪声效果不好,并且平滑也会带来图像模糊化。
椒盐噪声是灰度值过大或过小的噪声,对均值的影响较大,所以滤波效果不好。
# 方法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 = cv.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 = cv.bilateralFilter(img_org,r,差值,差值)
中值滤波
中值滤波用模板中像素值的中位像素值来确定当前像素值, 可以有效去除椒盐噪声。
11 blur = cv.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]