高斯滤波
转载https://blog.csdn.net/lvquanye9483/article/details/81592574
高斯滤波的含义:高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。
高斯滤波的作用:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。
高斯滤波函数
一维高斯分布
二维高斯分布
高斯核
理论上,高斯分布在所有定义域上都有非负值,这就需要一个无限大的卷积核。实际上,仅需要取均值周围3倍标准差内的值,以外部份直接去掉即可。如下图为一个标准差为1.0的整数值高斯核。
高斯滤波的卷积运算
假设有一个卷积核h,就一般为3*3的矩阵:
有一个待处理矩阵x:
h*x的计算过程分为三步
第一步,将卷积核翻转180°,也就是成为了
第二步,将卷积核h的中心对准x的第一个元素,然后对应元素相乘后相加,没有元素的地方补0。
这样结果Y中的第一个元素值Y11=1*0+2*0+1*0+0*0+0*1+0*2+-1*0+-2*5+-1*6=-16
第三步每个元素都像这样计算出来就可以得到一个输出矩阵,就是卷积结果
最后结果
高斯滤波的性质
高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用.这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的有效使用.高斯函数具有五个十分重要的性质,它们是:
(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向.
(2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.
(3)高斯函数的傅立叶变换频谱是单瓣的.正如下面所示,这一性质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号.
(4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷.
(5)由于高斯函数的可分离性,较大尺寸的高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.
高斯滤波的应用
高斯滤波后图像被平滑的程度取决于标准差。它的输出是领域像素的加权平均,同时离中心越近的像素权重越高。因此,相对于均值滤波(mean filter)它的平滑效果更柔和,而且边缘保留的也更好。
高斯滤波被用作为平滑滤波器的本质原因是因为它是一个低通滤波器(让某一频率以下的信号分量通过,而对该频率以上的信号分量大大抑制)
1 clc 2 clear 3 clear all 4 close all 5 %%%对图像做均值滤波处理 6 img = imread(\'1.png\'); 7 figure(1) 8 subplot(1,2,1),imshow(img),title(\'原始图像\') 9 %%%将彩色图像转灰度图像 10 img_gray = rgb2gray(img); 11 subplot(1,2,2),imshow(img_gray),title(\'RGB-GRAY灰度图像\') 12 %%%加入椒盐噪声 13 figure(2) 14 img_salt=imnoise(img_gray,\'salt & pepper\',0.05); 15 subplot(2,2,1),imshow(img_salt),title(\'加入椒盐噪声后\') 16 %%%系统自带的中值滤波 系统自带的中值滤波输入参数为2维图像 17 img_mid=medfilt2(img_salt,[3 3]); 18 subplot(2,2,2),imshow(img_mid),title(\'对噪声图像中值滤波后\'); 19 %%%系统自带的均值滤波 系统自带的均值滤波输入参数为2维图像 20 img_mid=filter2(fspecial(\'average\',3),img_salt)/255; 21 subplot(2,2,3),imshow(img_mid),title(\'对噪声图像均值滤波后\'); 22 %%%系统自带的高斯滤波 系统自带的均值滤波输入参数为2维图像 23 sigma = 1; %高斯正态分布标准差 24 gausFilter = fspecial(\'gaussian\',[3 3],sigma); 25 img_gaussian = imfilter(img_salt,gausFilter,\'replicate\'); 26 subplot(2,2,4),imshow(img_gaussian),title(\'对噪声图像高斯滤波后\'); 27 28 %%%加入高斯噪声 29 figure(3) 30 img_salt=imnoise(img_gray,\'gaussian\',0.05); 31 subplot(2,2,1),imshow(img_salt),title(\'加入椒盐噪声后\') 32 %%%系统自带的中值滤波 系统自带的中值滤波输入参数为2维图像 33 img_mid=medfilt2(img_salt,[3 3]); 34 subplot(2,2,2),imshow(img_mid),title(\'对噪声图像中值滤波后\'); 35 %%%系统自带的均值滤波 系统自带的均值滤波输入参数为2维图像 36 img_mid=filter2(fspecial(\'average\',3),img_salt)/255; 37 subplot(2,2,3),imshow(img_mid),title(\'对噪声图像均值滤波后\'); 38 %%%系统自带的高斯滤波 系统自带的均值滤波输入参数为2维图像 39 sigma = 1; %高斯正态分布标准差 40 gausFilter = fspecial(\'gaussian\',[3 3],sigma); 41 img_gaussian = imfilter(img_salt,gausFilter,\'replicate\'); 42 subplot(2,2,4),imshow(img_gaussian),title(\'对噪声图像高斯滤波后\'); 43 44 wq = 1;