高斯滤波对去除高斯噪声有很好的效果。高斯滤波是通过对输入数组的每个点与输入的高斯滤波模版执行卷积计算后,将这些结果一块组成滤波后的输出数组。
卷积核:用来对图像矩阵进行平滑的矩阵,高斯卷积核是一个近似服从高斯分布的矩阵,随着距离中心点的距离的增加,其值变小。这样进行平滑处理的时候,图像矩阵中锚点处像素值权重大,边缘像素值权重小。
锚点:卷积核和图像矩阵重叠,进行内积计算后,锚点位置的像素点会被计算值取代。一般选取奇数卷积核的中心点作为锚点,
步长:卷积核每次移动的长度,
内积:卷积核和图像矩阵对应像素点相乘,然后相加得到一个总和。
高斯模糊和高斯滤波的区别:区别的依据是低通滤波器还是高通滤波器。比如低通滤波器,像素能量低的通过,像素能量高的将会采取加权平均的方法重新计算像素的值,将像素的值变成能量较低的值。对于图像而言,高频部分展示细节,所以经过低通滤波后会造成图像的模糊,这种称为高斯模糊。相反高斯滤波是允许高频通过而过滤掉低频使图像变得清晰,对于服从正态分布的噪声非常有效。
在opencv中函数GaussianBlur可以实现高斯滤波,声明如下:
cv.GaussianBlur(src,ksize,sigmaX[,dst[,sigmaY[,borderType]]])
其中,src表示输入图像,dst表示输出图像,ksize表示内核大小,sigmaX和sigmaY表示核函数在x和y方向上的标准偏差,borderType表示边界模式,一般选默认即可
下面是一个例子:
import cv2 as cv
import numpy as np
import math
import copy
from matplotlib import pyplot as plt
KSIZE=1.0
SIGMA=15
window_name="demo"
def GaussianBlursize(GaussianBlur_size):
global KSIZE
KSIZE=round(GaussianBlur_size*2+3)
prin