文档介绍:《数字图像处理(实验部分)》教案
实验五:空域滤波
的基本操作。
。
,观察算法处理结果
兼容机一台;操作系统为WindowsWindowsXP。
:MATLAB软件
中值滤波:采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波
空域滤波
.1 打开MATLAB开发环境
.2点击MATLAB窗口上File菜单,选择New-〉M—File,在弹出的Edit编辑器内输入如下程序:
clear;close all;
I0=imread('');
I0=rgb2gray(I0);
I=imnoise(I0,'salt & pepper',); % 。
I_Filter1=medfilt2(I,[3 3]); %窗口大小为3×3的中值滤波
I2=I;I3=I;
x=[1 1 1;1 1 1;1 1 1];%3x3平滑模板
y=[-1 -2 -1;0 0 0;1 2 1];%3x3锐化模板
h=y;
[n m]=size(I);
for i=2:1:n-1
for j=2:1:m-1
sumx=0;sumy=0;
for p=1:1:3
for q=1:1:3
h(p,q)=(1/9)*(I(i+(p-2),j+(q-2)));
sumx=sumx+h(p,q)*x(p,q);%平滑
h(p,q)=(1/4)*(I(i+(p-2),j+(q-2)));
sumy=sumy+h(p,q)*y(p,q);%锐化
end
end
I2(i,j)=sumx;
if sumy<1
I3(i,j)=255-sumy;%去除灰度为0的黑色背景
else
I3(i,j)=sumy;
end
end
end
I4=I;
z=[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 1 1 1;
1 1 1 1 1 1 1;
1 1 1 1 1 1 1;
1 1 1 1 1 1 1];%7x7平滑模板
k=z;
[n m]=size(I);
for i=4:1:n-3
for j=4:1:m-3
sumz=0;
for p=1:1:7
for q=1:1:7
k(p,q)=(1/49)*(I(i+(p-4),j+(q-4)));
sumz=sumz+k(p,q)*z(p,q);
end
end
I4(i,j)=sumz;
end
end
figure(1);
subplot(2,3,1),imshow(I0);title('原始图');
subplot(2,3,2),imshow(I);title('加噪声图');
subplot(2,3,3),imshow(I_Filter1);title('MATLAB自带3x3中值滤波图');
subplot(2,3,4),imshow(I2);title('3x3平滑图');
subplot(2,3,5),imshow(I3);title('3x3锐化图');
subplot(2,3,6),imshow(I4);title('7x7平滑图');
.3将该程序保存,并点击工具栏中Run按钮,程序会自动运行,并显示出结果。
.4 观察处理结果
实验结果
滤波后图像中的噪声被抑制
6. 问题与思考
总结MATLAB开发环境在使用上的特点,掌握其在实验中使用方法。
改变程序中的窗口大小,重新运行程序,观察会是什么结果。
思考中值滤波的原理。