空间域平滑

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

均值滤波:
对一些图像进行线性滤波可以去除图像中某些类型的噪声,如采用邻域平均法的均值滤波器就非常适用于去除通过扫描得到的图像中的颗粒噪声。

邻域平均法是空间域平滑技术。

这种方法的基本思想是,在图像空间,假定有一副N ×N 个像素的原始图像f(x,y),用领域内几个像素的平均值去代替图像中的每一个像素点值的操作。

经过平滑处理后得到一副图像 g(x,y), 其表达式如下: ∑∈=s n m n m f M
y x g ),()
,(/1),(
式中: x,y=0,1,2,…,N-1;s 为(x ,y )点领域中点的坐标的集合,但不包括(x ,y )点;M 为集合内坐标点的总数。

领域平均法有力地抑制了噪声,但随着领域的增大,图像的模糊程度也愈加严重。

为了尽可能地减少模糊失真,也可采用阈值法减少由于领域平均而产生的模糊效应。

其公式如下: ⎪⎩⎪⎨⎧>-=∑∑∈∈其他),(),(/1),(),(/1),(),(),(y x f T
n m f M y x f n m f M y x g s n m s n m
式中:T 为规定的非负阈值。

上述方法也可称为算术均值滤波器,除此之外还可以采用几何均值滤波器、谐波均值滤波器和逆谐波均值滤波器。

几何均值滤波器所达到的平滑度可以与算术均值滤波器相比,但在滤波过程中会丢失更少的图像细节。

谐波均值滤波器对“盐”噪声效果更好,但是不适用于“胡椒”噪声。

它善于处理像高斯噪声那样的其他噪声。

逆谐波均值滤波器更适合于处理脉冲噪声,但它有个缺点,就是必须要知道噪声是暗噪声还是亮噪声,以便于选择合适的滤波器阶数符号,如果阶数的符号选择错了可能会引起灾难性的后果。

在MATLAB 图像处理工具箱中,提供了imfilter 函数用于实现均值滤波,imfilter 的语法格式为:
B=imfilter(A,H)
其功能是,用H 模板对图像A 进行均值滤波,
取平均值滤波模版为
H1=1/9[1 1 1;1 1 1;1 1 1];
H2=1/25[1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;1 1 1 1 1]; 分别以这两个平均值滤波算子四幅图像进行滤波操作。

取H1,程序如下:
I=imread('f:\汤唯2.jpg');
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt & pepper',0.02);
I3=imnoise(I,'speckle');
H1=ones(3,3)/9; %3×3领域模板
J=imfilter(I,H1); %领域平均
J1=imfilter(I1,H1);
J2=imfilter(I2,H1);
J3=imfilter(I3,H1);
subplot(221),imshow(J);
subplot(222),imshow(J1);
subplot(223),imshow(J2);
subplot(224),imshow(J3);
噪声污染:
根据噪声和信号的关系可以将其分为两种形式:
(1)加性噪声:有的噪声与图像信号g(x,y)无关,在这种情况下,含噪图像f(x,y)可表示为:f(x,y)= g(x,y)+n(x,y)信道噪声及扫描图像时产生的噪声都属于加性噪声。

(2)乘性噪声:有的噪声与图像信号有关,这可以分为两种情况:一种是某像素点的噪声只与该像素点的图像信号有关,另一种是某像素点的噪声与该点及其邻域的图像信号有关。


果噪声和信号成正比,则含噪图像f(x,y)可以表示为:f(x,y)= g(x,y)+ n(x,y)g(x,y)
另外,还可以根据噪声服从的分布对其进行分类,这时可以分为高斯噪声、
泊松噪声和颗粒噪声等。

泊松分布噪声一般出现在照度非常小及用高倍电子线路放大的情况下,泊松噪声可以认为是椒盐噪声。

其他的情况通常为加性高斯噪声。

颗粒噪声可以认为是一种白噪声过程,在密度域中是高斯分布加性噪声,而在强度域中为乘性噪声。

MATLAB图像处理工具箱提供的噪声添加函数imnoise,它可以对图像添加一些典型的噪声。

其语法:
J=imnoise(I,type)
J=imnoise(I,type,parameters)
其功能是:返回对原图像I添加典型噪声的图像J,参数type和parameters 用于确定噪声的类型和相应的参数。

三种典型的噪声:
type=’gaussian’时,为高斯噪声;
type=’salt&pepper’时为椒盐噪声;
type=’speckle’时为乘法噪声;
图像数据读取函数imread从图像文件中读取图像数据。

其基本调用格式如下:
I=imread(文件名,’图像文件格式’)
其功能是:将文件名指定的图像文件读入I中。

I=imshow(A)
其功能是显示图像A。

如下程序就实现了3种噪声污染了的图像:
I=imread('f:\汤唯1.jpg'); %读取图像
I1=imnoise(I,'gaussian'); %加高斯噪声
I2=imnoise(I,'salt & pepper',0.02); %加椒盐噪声
I3=imnoise(I,'speckle'); %加乘性噪声
subplot(221),imshow(I); %显示图像I
title('原图像');
subplot(222),imshow(I1);
title('高斯噪声污染的图像');
subplot(223),imshow(I2);
title('椒盐噪声污染的图像');
subplot(224),imshow(I3);
title('乘性噪声污染的图像');
噪音污染后的均值滤波:
MATLAB图像处理工具箱提供的噪声添加函数imnoise,它可以对图像添加一些典型的噪声。

其语法:
J=imnoise(I,type)
J=imnoise(I,type,parameters)
其功能是:返回对原图像I添加典型噪声的图像J,参数type和parameters 用于确定噪声的类型和相应的参数。

三种典型的噪声:
type=’gaussian’时,为高斯噪声;
type=’salt&pepper’时为椒盐噪声;
type=’speckle’时为乘法噪声;
图像数据读取函数imread从图像文件中读取图像数据。

其基本调用格式如下:
I=imread(文件名,’图像文件格式’)
其功能是:将文件名指定的图像文件读入I中。

I=imshow(A)
其功能是显示图像A。

如下程序就实现了3种噪声污染了的图像:
RGB=imread('f:\汤唯2.jpg');
I=rgb2gray(RGB);
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt & pepper',0.02);
I3=imnoise(I,'speckle');
H2=ones(5,5)/25; %5×5领域模板
J=imfilter(I,H2); %领域平均
J1=imfilter(I1,H2);
J2=imfilter(I2,H2);
J3=imfilter(I3,H2);
subplot(221),imshow(J);
title('原图像滤波后');
subplot(222),imshow(J1);
title('高斯污染图像滤波后');
subplot(223),imshow(J2);
title('椒盐污染图像滤波后');
subplot(224),imshow(J3);
title('乘法污染图像滤波后');
中值滤波:
MATLAB图像处理工具箱提供了medfilt2函数用于中值滤波。

其语法格式为:B=medfilt2(A)
其功能为:用3×3的滤波窗口对图像A进行中值滤波;
B=medfilt2(A,[m,n])
其功能是:用大小为m×n的窗口对图像A进行中值滤波;
B=medfilt2(A,'indexed',...)
其功能为:对索引图像A进行中值滤波;
可运行以下程序实现:
RGB=imread('f:\汤唯2.jpg');
I=rgb2gray(RGB);
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt & pepper',0.02);
I3=imnoise(I,'speckle');
J1=medfilt2(I1,[3,3]); %3×3中值滤波模板
J2=medfilt2(I2,[3,3]);
J3=medfilt2(I3,[3,3]);
J4=medfilt2(I1,[5,5]); %5×5中值滤波模板
J5=medfilt2(I2,[5,5]);
J6=medfilt2(I3,[5,5]);
figure,subplot(121),imshow(J1);
title('高斯3*3中值滤波');
subplot(122),imshow(J2);
title('椒盐3*3中值滤波');
figure,subplot(121),imshow(J3);
title('乘法3*3中值滤波');
subplot(122),imshow(J4);
title('高斯5*5中值滤波');
figure,subplot(121),imshow(J5);
title('椒盐5*5中值滤波');
subplot(122),imshow(J6);
title('乘法5*5中值滤波');。

相关文档
最新文档