空域滤波
- 格式:doc
- 大小:190.50 KB
- 文档页数:5
实验四图像空域滤波
一、实验目的
1、了解空域滤波的基本原理及方法;
2、掌握卷积运算的实现;
3、掌握各种常用空域滤波器的特点和应用。
二、实验原理
假设图像是由许多灰度恒定的小块组成,相邻像素间存在很高的空间相关性,而噪声则是统计独立的。空间域滤波是指直接对图像的像素进行操作,以达到改善图像质量的目的。空间域处理由表达式
(,)[(,)]
g x y T f x y
表示。(,)(,)T
为输入图像,为输出(处理后)图像,为进行处理的操作符,定义
f x y
g x y
在点(x,y)的指定邻域内。
邻域处理包括:①定义中心点(x,y);②对预先定义的邻域内的像素进行运算;③令运算结果为该点处处理的响应;④对图像中每个点重复此步骤。
若对领域中像素的计算为线性运算时,则此运算称为线性空间滤波(空间卷积),否则,我们称此运算为非线性空间滤波。
1、线性空间滤波
线性空间滤波的过程是简单的在图像f中逐点移动滤波掩膜w的中心,在每个点(x,y)处,滤波器在该点处的响应是滤波掩膜所限定的相应像素与滤波器系数的乘积结果的累加。主要包括局部滤波及一些改进算法。
2、非线性空间滤波
非线性空间滤波也是基于邻域操作的,也可通过定义一个大小为m×n的邻域,以其中心点滑过一幅图像的方式进行操作,不过进行的非线性运算。主要包括中值滤波。
中值滤波是对一个滑动窗口内的诸像素灰度值排序,用中值代替窗口中心像素的原来灰度值。对中值滤波法来说,正确选择窗口尺寸的大小是很重要的环节。一般很难事先确定最佳的窗口尺寸,需通过从小窗口到大窗口的中值滤波试验,再从中选取最佳的。
三、实验内容
1、线性滤波的实现
(1)工具箱中使用函数imfilter来实现线性空间滤波,该函数语法为:
g=imfilter(f,w,‘filtering_mode’,‘boundary_options’,‘size_options’) w 为滤波掩膜
filtering_mode:滤波是用卷积‘conv’还是相关‘corr’(默认)
boundary_options:边界充零问题。Replicate——复制外边界
circular——图像看成二维函数扩展
size_options:输出图像大小,full——与被扩展图像相同;
same:与输入相同
函数imfilter的通用语法为:
g=imfilter(f,w,’replicate’)
(2)工具箱使用函数fspecial来创建线性滤波器,其语法为:
h=fspecial(‘type’,parameters)
type用于指定滤波器的类型,parameters是与指定的滤波器有关的参数。
type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为3。
type='gaussian',fspecial(‘gaussian’,[r,c],sig)。一个大小为r×c的高斯滤波器,标准偏差为sig(正),默认3×3,0.5。
type= 'laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2
type= 'log',fspecial(‘log’,[r,c],sig)。一个大小为r×c的高斯-拉普拉斯滤波器,标准偏差为sig(正),默认5×5,0.5
(3)线性空间滤波可由卷积函数conv2来实现,其语法为:
h=conv2(f,w)
2、非线性空域滤波的实现
工具箱提供了一个二维中值滤波函数:
g=medfilt2 (f,[m n],padopt)
数组[m n]定义一个大小为m×n的邻域,中值就在该邻域上计算,默认值为3×3;padopt指定三个可能的边界填充选项之一:‘zeros’(默认值);‘symmetric’,f按照镜像反射方式对称的沿其边界扩展;‘indexed’,若f是double类图像,则以1来填充图像,否则以0 来填充。
3、加噪函数
imnoise函数——增添噪声
J=imnoise (A,type,para)
type=’gaussian’高斯噪声,两个参数:M均值(0);V方差(0.01)
type=’salt & pepper’椒盐噪声,参数D噪声强度(0.05)/0.02
type='poisson'泊松噪声,无参数
四、实验步骤
1、读入eight.tif,对图像添加椒盐噪声,把噪声图像保存为eightn.tif。
分别用(3*3,5*5,9*9)模板对噪声图像进行中值滤波,在同一窗口显示噪声图像和滤波后图像,比较模板大小对滤波效果的影响。
程序代码为:
f=imread('eight.tif'); %读入图像eight.tif
figure(1); %窗口1显示
subplot(3,2,1); %3行2列第1个图显示
imshow(f); %显示原图像
title('原图像');
subplot(3,2,2); %3行2列第2个图显示
J=imnoise (f,'salt & pepper',0.05); %加上椒盐燥声
imwrite(J,'eightn.tif'); %另存为'eightn.tif
imshow(J); %显示原图像
title('椒盐图像');
subplot(3,2,3); %3行2列第3个图显示
g=medfilt2 (J,[3 3],'zeros'); %分别用3*3模板对噪声图像进行中值滤波
imshow(g); %显示原图像
title('3*3滤波');
subplot(3,2,4); %3行2列第4个图显示
g1=medfilt2 (J,[5 5],'zeros'); %分别用5*5模板对噪声图像进行中值滤波
imshow(g1); %显示原图像
title('5*5滤波');
subplot(3,2,5); %3行2列第5个图显示
g2=medfilt2 (J,[9 9],'zeros'); %分别用9*9模板对噪声图像进行中值滤波
imshow(g2); %显示原图像
title('9*9滤波');
分析:中值滤波可以克服线性滤波器所带来的图象细节模糊,并且对滤除脉冲干扰及图象扫描噪声非常有效;模板越大,图象越不清晰
2、读入eightn.tif,根据均值滤波的运算过程,实现图像平滑,显示平滑效果。比较均值滤波与中值滤波(1题中)的效果。