文档介绍:MATLAB课程设计(自适应中值滤波)
1
0
1
信息工程系
课程设计报告
课 程 MATLAB课程设计
% H为高,L为长
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
6
目录
I
zuo=1;
end % 扩大窗口 但不出边界
if xia<1
xia=1; % i为1、2、3时zuo都是1 ,
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;
7
目录
I
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;
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; %最大最小之间 那么 flag 标记为零
else % 意为变成了清晰地像素点
M(i,j)=S med; %