1 / 11
文档名称:

MATLAB课程设计(自适应中值滤波).doc

格式:doc   大小:100KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MATLAB课程设计(自适应中值滤波).doc

上传人:beny00001 2022/1/21 文件大小:100 KB

下载得到文件列表

MATLAB课程设计(自适应中值滤波).doc

文档介绍

文档介绍:word
word
1 / 11
word
信息工程系
课程设计报告
课 程 MATLAB课程设计
专 业 通信工程 内中值,并替换像素点。
设fij为点(i,j)的灰度,Ai,j为当前工作窗口,fmin、fmax和fmed分别为Ai,j中的灰度最小值、灰度最大值和灰度中值,Amax为预设的允许最大窗口。
word
word
5 / 11
word
自适应中值滤波算法的根本步骤如下:
1)fmin<fmed<fmax,如此转至第2步;否如此增大窗口Ai,j 尺寸。假如Ai,j的尺寸小于Amax的尺寸, 如此重复第1步; 否如此输出fij。
2)fmin<fij<fmax,如此输出fij;否如此输出fmed。 可以看出, 算法中噪声点的检测和认定是以fmin和fmax为基准的,如果fmin<fmed<fmax,明确fmed不是噪声,接着根据 fmin<fij<fmax判断fij是否是噪声, 当fij与fmed都不是脉冲噪声时,优先输出fij。
2程序实现
准备和描述
clear; % 去除工作空间的变量
I=imread('');% 输入图像
I=imnoise(I,'salt & pepper', );
imshow(I) % 显示图像
figure; % 控制窗口数量 先显示一个
M=I; % 赋给M
I=double(I); % 确定精度 提高精度
M=double(M);
flag11=1;% 11是〔1,1〕是开始的点
H=512; % H为高,L为长
word
word
5 / 11
word
L=512;% 像素为512*512
for i=1:H% for 从1到512
for j=1:L
flag(i,j)=1;% 所有点都假定为噪点
end
end
扩大窗口、确定窗口
for i=1:H %大循环% i为横坐标 j为纵坐标
for j=1:L %大循环
omiga=2;% omiga=2 是最大滤波半径
%%%%%%%%确定窗口
while flag(i,j)==1 % 循环 恒为一 一直执行
zuo=i-omiga;% 左减
xia=j-omiga;% 下减 扩大窗口
you=i+omiga;% 右加
shang=j+omiga; % 上加
if zuo<1
zuo=1;
end% 扩大窗口 但不出边界
if xia<1
xia=1; % i为1、2、3时zuo都是1 ,
word
word
6 / 11
word
end便是为了不出边界
if you>L %右、下、上运算与左同理
you=L;
end
if shang>H
shang=H;
end
%%%%%%%窗口确定完毕
确定最大、最小值和中值
%%%%%%%%%%%确定最大最小值
smin=I(i,j); % 给smin、smax初始化
smax=I(i,j);
total=(you-zuo+1)*(shang-xia+1);
%total是放大后的像素点的个数 total=5*5=25
vect1=zeros(1,total-1); % total-1为去掉中心点
kn=1;
for in=zuo:you %zuo:you xia:shang 为横纵向扫描
for jn=xia:shang
if ((in==i&jn==j)==0) %“与〞 00、01、10 满足if
vect1(1,kn)=I(in,jn); %把灰度值赋给vect1
kn=kn+1;
word
word
7 / 11
word
end
end
end
smin=nanmin(vect1);%nanmin 包含缺失值的样本的最小值smax=nanmax(vect1); %nanmax 包含缺失值的样本的最大值
smed=nanmedian(vect1);%nanmedian 包含缺失值的样本的中值
、输出图像
if (S med-S min)>0&(S max-S med)>0
if S min<M(i,j)&M(i,j)<S max %如果像素点的灰度值介于
flag(i,j)=0;