图像处理: 高斯滤波器

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程, 高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。

高斯滤波器根据高斯核生成滤波模板, 二维高斯函数公式如下:

对于模板大小为(2k+1)*(2k+1)的模板, 取最中间位置为(0,0), x横向, y纵向

高斯滤波模板中每一个位置的值按上诉公式将坐标点代入计算.

def gaussian_kernel(kernel_szie, sigma):
    kernel = np.zeros(shape=(kernel_szie, kernel_szie))
    center = math.floor(kernel_szie / 2)
    sum = 0.0
    for i in range(kernel_szie):
        for j in range(kernel_szie):
            kernel[i, j] = 1 / math.sqrt(2 * math.pi * sigma * sigma) * math.exp(-(math.pow(i-center, 2) + math.pow(j - center, 2))/(2 * sigma * sigma))
            sum += kernel[i][j]

    # 归一化
    for i in range(kernel_szie):
        for j in range(kernel_szie):
            kernel[i][j] /= sum
    return kernel

$\sigma$ 为高斯分布的标准差, 标准差代表着数据的离散程度,如果 $\sigma$ 较小,那么生成的模板的中心系数较大,而周围的系数较小,这样对图像的平滑效果就不是很明显;反之,$\sigma$ 较大,则生成的模板的各个系数相差就不是很大,比较类似均值模板,对图像的平滑效果比较明显。