|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
谁能帮我给这个图象去噪程序加个注释 最好是3句一注释
谢谢 是一个自适应中值滤波的 应为本人初学 所以想知具体含义
希望大侠帮忙
尽量详细一点 最好还可以帮忙改进一下
clear;
I=imread('e:\chengfan.jpg');
imshow(I)
I=imnoise(I,'salt & pepper', 0.1);
figure;
imshow(I)
figure;
%以上不用注释了
M=I;
num=1;
I=double(I);%
M=double(M);
flag11=1;%
H=256;
L=256;
%
for i=1:H
for j=1:L
flag(i,j)=1;
end
end
%i横坐标
%j综坐标
for i=1:H%大循环
for j=1:L%大循环
omiga=3;
%%%%%%%%确定窗口
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;
end
if you>L
you=L;
end
if shang>H
shang=H;
end
%%%%%%%窗口确定结束
%%%%%%%%%%%确定最大最小值
smin=I(i,j);
smax=I(i,j);
total=(you-zuo+1)*(shang-xia+1);
vect1=zeros(1,total-1);
kn=1;
for in=zuo:you
for jn=xia:shang
if ((in==i&jn==j)==0)
vect1(1,kn)=I(in,jn);
kn=kn+1;
end
end
end
smin=nanmin(vect1);
smax=nanmax(vect1);
smed=nanmedian(vect1);
%%%%%%%%%%确定最大最小值结束
if (smin<smed)&(smed<smax)
if smin<I(i,j)&I(i,j)<smax
flag(i,j)=0;
else
M(i,j)=smed;
flag(i,j)=0;
end
else
omiga=omiga+2;
if omiga>=17
flag11=0;
M(i,j)=smed;
flag(i,j)=0;
end
end
end%while
end%大循环
end%大循环
I=uint8(M);
imshow(I);
[ 本帖最后由 eight 于 2008-4-23 18:28 编辑 ] |
|