三种统计滤波器性能研究

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

《数字图像处理》期中大作业三种统计滤波器性能研究

学号:

姓名:

最大值、最小值、百分比滤波器性能研究

摘要:图像是一种重要的信息源,通过图像处理可以帮助人们了解信息的内涵。顺序统计滤波器是空间域滤波器,含中值滤波器、最大值滤波器,最小值滤波器。本文首先将纯净的图像加入椒盐噪声,然后采用中值滤波的方法对其进行去噪。其次,采用最大值、最小值滤波的方法对图像进行滤波。中值滤波是百分比滤波的一个特例,是一种常用的非线性信号处理技术,在图像处理中,它对滤除脉冲干扰噪声最为有效。最大值滤波善于发现图像中的亮点,滤除黑点。最小值滤波善于发现图像中的暗点,滤除白点。MATLAB 是一种高效的工程计算语言,在数据处理、图像处理、神经网络、小波分析等方面都有广泛的应用。

关键词:图像,中值滤波,最大值滤波,最小值滤波,MATLAB 。

一、中值滤波

中值滤波是一种典型的低通滤波器,属于非线性滤波技术,它的目的是保护图像边缘的同时去除噪声。所谓中值滤波,是指把以某点(x,y )为中心的小窗口内的所有象素的灰度按从大到小的顺序排列,若窗口中的象素为奇数个,则将中间值作为(x ,y)处的灰度值。若窗口中的象素为偶数个,则取两个中间值的平均值作为(x ,y)处的灰度值。中值滤波对去除椒盐噪声很有效。中值滤波器的缺点是对所有象素点采用一致的处理,在滤除噪声的同时有可能改变真正象素点的值,引入误差,损坏图像的边缘和细节。该算法对高斯噪声和均匀分布噪声就束手无策。

中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。

设有一个一维序列1f ,2f ,…,n f ,取窗口长度为m(m 为奇数),对此序列进行中值滤波,就是从输入序列中相继抽出m 个数,v i f -,…,1-i f ,…,1f ,…,1+i f ,…,v i f +,其中i 为窗口的中心位置,2

1-=m v ,再将这m 个点按其数值大小排列,取其序号为正中

间的那作为输出。用数学公式表示为:

{}v i i v i i f f f Med Y +-=,,,, 2

1

,-=

∈m v Z i (1-1) 对于二维序列{}

ij X 进行中值滤波时,滤波窗口也是二维的,但这种二维窗口可以有各

种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为: 为滤波窗口A X Med Y ij A

j i },{,= (1-2) 中值滤波处理图像程序:

clc; clear all;

close all;

img=imread('D:/kaka.jpg');

img_0=rgb2gray(img);

img_1=imnoise(img_0,'salt & pepper',0.02);

img_2=medfilt2(img_1);

subplot(2,2,1);imshow(img);title('原始图像');

subplot(2,2,2);imshow(img_0);title('灰度图像');

subplot(2,2,3);imshow(img_1);title('加入噪声后图像');

subplot(2,2,4);imshow(img_2);title('中值滤波后图像');

程序运行结果:

二、最大值、最小值滤波

最大值滤波、最小值滤波的原理:设输出的图像为g(x,y)

(s-1,t-1) (s-1,t) (s-1,t+1)

最大值滤波:

)},(),,(max {),(W t s t y s x f y x g ∈--= 最小值滤波:

)},(),,(min{),(W t s t y s x f y x g ∈--=

最大值滤波器,发现图像中最亮点非常有用;最小值滤波器,发现图像中最暗点时非常有用。最大值滤波器对于椒噪声具有良好效果;而最小值滤波器对于盐噪声具有良好效果。 最大值滤波处理图像程序:

clear;clc;

I2=imread('D:/kaka.jpg'); I1=rgb2gray(I2); n=2; c=2; mask=ones(n,n); [r1,c1]=size(I1);

subplot(2,2,1);imshow(I2);title('原始图像'); subplot(2,2,2);imshow(I1);title('灰度图像'); I1=double(I1); I1_max=I1; mid=floor(n/2); for u=1:r1-n+1

for v=1:c1-n+1

A=I1(u:u+n-1,v:v+n-1);A=A.*mask; I1_max(u+mid,v+mid)=max(max(A)); end end

subplot(2,2,3);imshow(I1_max(mid+1:r1-mid,mid+1:c1-mid),[]);title('最大值图像'); 程序运行结果:

(s,t-1) (s,t) (s,t+1)

(s+1,t-1) (s+1,t) (s+1,t+1)

最小值滤波处理图像程序:

clear;clc;

I2=imread('D:/kaka.jpg');

I1=rgb2gray(I2);

n=2; c=2;

mask=ones(n,n);

[r1,c1]=size(I1);

subplot(2,2,1);imshow(I2);title('原始图像');

subplot(2,2,2);imshow(I1);title('灰度图像');

I1=double(I1);

I1_min=I1;

mid=floor(n/2);

for u=1:r1-n+1

for v=1:c1-n+1

A=I1(u:u+n-1,v:v+n-1);A=A.*mask;

相关文档
最新文档