主题:MATLAB的代码 请高手帮忙注释一下 万分感激
clear all;
% close all;
OriginalImage = imread('cameraman.tif');
f = imnoise(OriginalImage, 'salt & pepper', 0.25); %加椒盐噪声,噪声密度=0.25.
[M,N] = size(f);
figure;
imshow(OriginalImage(4:M-3,4:N-3), [0 255]);
title('NoisyImage');
f = double(f);
result1 = medfilt2(f,[7,7]);
figure;
imshow(result1(4:M-3,4:N-3), [0 255]);
title('中值滤波');
clear result1;
%自适应中值滤波
result2 = zeros(M,N);
Smax = 7;
for i=4:M-3,
for j=4:N-3,
S = 3;
Zxy = f(i,j);
i_min = i-1; i_max = i+1; j_min = j-1; j_max = j+1;
while S<=Smax,
tmp = f(i_min:i_max,j_min:j_max);
tmp = tmp(:); % 把二维矩阵编程列向量
Zmed = median(tmp);
Zmin = min(tmp);
Zmax = max(tmp);
A1 = Zmed - Zmin;
A2 = Zmed - Zmax;
if (A1>0)&(A2<0), %B层
B1 = Zxy - Zmin;
B2 = Zxy - Zmax;
if (B1>0)&(B2<0),
result2(i,j) = Zxy;
else
result2(i,j) = Zmed;
end
S=Smax+2; %为了跳出while循环
else
S = S+2;
if S<=Smax,
i_min = i_min-1; i_max = i_max+1; j_min = j_min-1; j_max = j_max+1;
else
result2(i,j) = Zxy; %Zmed
S=Smax+2; %为了跳出while循环
end
end
end % end of (while S<=Smax,)
end % end of (for j=4:N-3,)
end % end of (for i=4:M-3,)
figure;
imshow(result2(4:M-3,4:N-3), [0 255]);
title('自适应中值滤波');
% close all;
OriginalImage = imread('cameraman.tif');
f = imnoise(OriginalImage, 'salt & pepper', 0.25); %加椒盐噪声,噪声密度=0.25.
[M,N] = size(f);
figure;
imshow(OriginalImage(4:M-3,4:N-3), [0 255]);
title('NoisyImage');
f = double(f);
result1 = medfilt2(f,[7,7]);
figure;
imshow(result1(4:M-3,4:N-3), [0 255]);
title('中值滤波');
clear result1;
%自适应中值滤波
result2 = zeros(M,N);
Smax = 7;
for i=4:M-3,
for j=4:N-3,
S = 3;
Zxy = f(i,j);
i_min = i-1; i_max = i+1; j_min = j-1; j_max = j+1;
while S<=Smax,
tmp = f(i_min:i_max,j_min:j_max);
tmp = tmp(:); % 把二维矩阵编程列向量
Zmed = median(tmp);
Zmin = min(tmp);
Zmax = max(tmp);
A1 = Zmed - Zmin;
A2 = Zmed - Zmax;
if (A1>0)&(A2<0), %B层
B1 = Zxy - Zmin;
B2 = Zxy - Zmax;
if (B1>0)&(B2<0),
result2(i,j) = Zxy;
else
result2(i,j) = Zmed;
end
S=Smax+2; %为了跳出while循环
else
S = S+2;
if S<=Smax,
i_min = i_min-1; i_max = i_max+1; j_min = j_min-1; j_max = j_max+1;
else
result2(i,j) = Zxy; %Zmed
S=Smax+2; %为了跳出while循环
end
end
end % end of (while S<=Smax,)
end % end of (for j=4:N-3,)
end % end of (for i=4:M-3,)
figure;
imshow(result2(4:M-3,4:N-3), [0 255]);
title('自适应中值滤波');