天天看点

图像的高斯平滑滤波

1:高斯平滑与滤波的作用

通过高斯平滑使整个图片过渡均匀平滑,去除细节,过滤掉噪声。

2:高斯平滑滤波器简介

高斯平滑滤波器被使用去模糊图像,和均值滤波器差不多,但是和均值滤波器不一样的地方就是核不同。均值滤波器的核每一个值都是相等,而高斯平滑滤波器的核内的数却是呈现高斯分布的。

对于二维高斯分布:

图像的高斯平滑滤波

 高斯函数具有5个重要性质:

(1)二维高斯函数具有旋转对称性, (2)高斯函数是单值函数。这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点的权值是随着该点与中心点距离单调递减的。 (3)高斯函数的傅立叶变换频谱是单瓣的。 (4)高斯滤波器的宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的。σ越大,高斯滤波器的频带就越宽,平滑程度就越好。 (5)可分离性

它的分布图如下:

图像的高斯平滑滤波

作为高斯平滑滤波器的核就应该呈现出上图的布局,例如:

图像的高斯平滑滤波

是一个5*5的模版

对于高斯函数参数σ值越大,则模分布图越扁平,模版越大。

上图分布凸显出了高斯该有的特点,因此,一般而言,高斯平滑滤波器要优于均值滤波器。

3:函数实现

3.1二维高斯函数

1 X = -50 : 1 :50;
2 Y = -50 : 1: 50;
3 sigma=50;
4 [X,Y]=meshgrid(X,Y);
5 W=exp(-(X.^2+Y.^2)/sigma.^2);
6 Z=W/2*pi*sigma.^2
7 mesh(X,Y,Z);
8 title('权重分布图');      
图像的高斯平滑滤波

3.2高斯滤波

1 im=imread('D:\a2.jpg');
 2 imshow(im,[]);//1
 3 title('原图');
 4 J=imnoise(im,'gaussian');//加上高斯噪声
 5 figure
 6 imshow(J,[]);
 7 title('加高斯噪声图');
 8 f1=fspecial('gaussian',[3 3],0.5);//2生成高斯模版
 9 img_smooth1=imfilter(J,f1);//3滤波
10 figure
11 subplot 221
12 imshow(img_smooth1,[]);
13 title('0.5');
14 
15 f2=fspecial('gaussian',[3 3],1);
16 img_smooth2=imfilter(J,f2);
17 subplot 222
18 imshow(img_smooth2,[]);
19 title('1');
20 
21 f3=fspecial('gaussian',[3 3],2);
22 img_smooth3=imfilter(J,f3);
23 subplot 223
24 imshow(img_smooth3,[]);
25 title('2');
26 
27 f4=fspecial('gaussian',[3 3],4);
28 img_smooth4=imfilter(J,f4);
29 subplot 224
30 imshow(img_smooth4,[]);
31 title('4');
32 
33 f5=fspecial('gaussian',[3 3],8);
34 img_smooth5=imfilter(J,f5);
35 figure
36 subplot 121
37 imshow(img_smooth5,[]);
38 title('8');
39 
40 f6=fspecial('gaussian',[3 3],10);
41 img_smooth6=imfilter(J,f6);
42 subplot 122
43 imshow(img_smooth6,[]);
44 title('10');      

 运行结果如下

图像的高斯平滑滤波
图像的高斯平滑滤波
图像的高斯平滑滤波
图像的高斯平滑滤波

由实验结果可知,随着σ值的增大,噪声滤除的越干净,但同时,图像也变得越模糊,轮廓不清晰。当σ增加到一定的程度时,滤波效果几乎没有变化,所以要选取合适的σ值。

4:函数介绍

 注释1

语法:imshow ( f, G) 

          imshow (f, [low high])

          imshow (f, [ ])

说明:G是显示该图像的灰度级数;

      小于或等于low的值都显示为黑色,大于或等于high的值都显示为白色。

          [ ]自动将变量low设置为f的最小值,将high设置为f的最大值

注释2

Fspecial函数用于创建预定义的滤波算子,其语法格式为:

h = fspecial(type)

h = fspecial(type,parameters,sigma)

参数type制定算子类型,parameters指定相应的参数,具体格式为:

type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。

type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,

注释3

imfilter(J,f1)

J为待处理的图像,f为高斯模版。