matlab实现图像的高斯滤波

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengxianghui01/article/details/89474461

转载地址: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)由于高斯函数的可分离性,较大尺寸的高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.
  

matlab代码:

clear,clc;

% 读取图像
Img = imread('t1.jpg');
M = size(Img);
if numel(M)>2
    gray = rgb2gray(Img);
else
    gray = Img;
end

% 创建滤波器
W = fspecial('gaussian',[5,5],1); 
G = imfilter(gray, W, 'replicate');
figure(1);
subplot(121); imshow(gray); title('原始图像');
subplot(122); imshow(G);    title('滤波后图像');

猜你喜欢

转载自blog.csdn.net/fengxianghui01/article/details/89474461
今日推荐