📄 gaussindenoisepcnn.m
字号:
clear;
Ik=imread('cameraman.tif');
%imagesc(I,[0 256]);
%colormap(gray);
I=double(Ik)./255;
subplot(2,2,1);
subimage(I);
II= imnoise(I,'Gaussian',0,0.004);
%II= imnoise(I,'salt & pepper',0.5);
subplot(2,2,2);
subimage(II);
[m,n]=size(II);
I1=double(II);
af=0.1;vf=0.8;ae=0.8;ve=5.0;delta=8;
W=[0.5 1 0.5;1 0 1;0.5 1.0 0.5];
Y=zeros(m,n);F=Y;U=Y;E=Y;T=Y;mask=Y;
E=ve.*ones(m,n);
%while(flag==1)
for i=1:20
F=I1;
% F=exp(-af)*F+vf*Y+I1;
U=F;
Y=double(U>E);
for row=1:m
for col=1:n
if(Y(row,col)==1 & mask(row,col)==0)
T(row,col)=i;
mask(row,col)=1;
end
end
end
E=exp(-ae)*E;%+ve*Y;
end
I2=I1;
I3=I1;
for i=2:m-1
for j=2:n-1
m(1)=I1(i-1,j-1); m(2)=I1(i-1,j); m(3)=I1(i-1,j+1);
m(4)=I1(i,j-1); m(5)=I1(i,j); m(6)=I1(i,j+1);
m(7)=I1(i+1,j-1); m(8)=I1(i+1,j); m(9)=I1(i+1,j+1);
d(1)=T(i-1,j-1); d(2)=T(i-1,j); d(3)=T(i-1,j+1);
d(4)=T(i,j-1); d(5)=T(i,j); d(6)=T(i,j+1);
d(7)=T(i+1,j-1); d(8)=T(i+1,j); d(9)=T(i+1,j+1);
sorted_d=sort(d);
s=m(1)+m(2)+m(3)+m(4)+m(5)+m(6)+m(7)+m(8)+m(9);
avg=s/9;
if(T(i,j)==0) T(i,j)=21; end
if(T(i,j)==d(1)&d(1)==d(2)&d(2)==d(3)&d(3)==d(4)&d(4)==d(5)&d(5)==d(6)&d(6)==d(7)&d(7)==d(8))
sorted_m=sort(m);
I3(i,j)=sorted_m(5);
%I3(i,j)=avg;
elseif(T(i,j)==sorted_d(5))
I3(i,j)=I1(i,j);
elseif(T(i,j)==sorted_d(1))
I3(i,j)=I1(i,j)-0.04;
elseif(T(i,j)==sorted_d(8))
I3(i,j)=I1(i,j)+0.04;
else
%中值滤波
sorted_m=sort(m);
I3(i,j)=sorted_m(5);
end
%中值滤波
sorted_m=sort(m);
I2(i,j)=sorted_m(5);
if( I3(i,j)>1)
I3(i,j)=1;
end
if( I3(i,j)<0)
I3(i,j)=0;
end
end
end
subplot(2,2,3);
subimage(I2);
subplot(2,2,4);
subimage(I3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -