图像平滑算法介绍
1. 均值滤波
均值滤波是指任意一点的像素值,都是周围 N * M 个像素值的均值。例如下图中,红色点的像素值是其周围蓝色背景区域像素值之和除25,25=5 * 5 是蓝色区域的大小。
其中5 * 5的矩阵称为核,
# 实现方法为 result = cv2.blur(原始图像,核大小) # 其中,核大小是以(宽度,高度)表示的元组形式。常见的形式包括:核大小(3,3)和(5,5)。 result = cv2.blur(source, (3, 3))
1)随着核大小逐渐变大,会让图像变得更加模糊;
2)如果设置为核大小为(1,1),则结果就是原始图像。
3) 均值滤波减小了图像灰度的“尖锐变化”,起到了减噪的作用。但是均值滤波处理带来了边缘模糊的负面效应
2. 中值滤波
在使用均值滤波去噪的同时也使得边界变得模糊。而中值滤波是非线性的图像处理方法,在去噪的同时可以保留边界信息。选一个含有奇数点的窗口W,将这个窗口在图像上扫描,把窗口中所含的像素点按灰度级的升或降序排列,取位于中间的灰度值来代替该点的灰度值。计算过程如下图所示:
#dst = cv2.medianBlur(src, ksize) #其中,参数: #src 表示源图像; #ksize 表示核大小。核必须是大于1的奇数,如3、5、7等。 result = cv2.medianBlur(img, 3)
1)随着核大小逐渐变大,会让图像变得更加模糊;
2)核必须是大于1的奇数,如3、5、7等;
3 高斯滤波
图像高斯平滑中,对图像进行平均时,不同位置的像素被赋予了不同的权重。较近的像素具有较大的权重值。如下图所示,中心位置权重最高为0.4。
#dst = cv2.GaussianBlur(src, ksize, sigmaX) #其中,参数: #src 表示原始图像; #ksize 表示核大小,必须是奇数; #sigmaX 表示X方向方差,主要控制权重。 result = cv2.GaussianBlur(source, (5, 5), 0)
1)随着核大小逐渐变大,会让图像变得更加模糊;
2)核大小(N, N)必须是大于1的奇数,如3、5、7等;
3)核大小为 33
4)核大小为 55
核数据计算公式如下