im=imread('C:\Documents and Settings\Administrator\桌面\1.png')
if isrgb(im)
im=rgb2gray(im)
end
%figure,imshow(im);
im_noise=imnoise(im,'gauss',0.004);
im_noise=imnoise(im_noise,'salt & pepper',0.05);
im_old=im;
figure,imshow(im_noise);
%自适应中值滤波
im_mean_varl=mean2(im_var(1,2:m-1,2:n-1));
im_mean_var2=mean2(im_var(2,3:m-2,3:n-2));
im_mean_var3=mean2(im_var(3,4:m-3,4:n-3));
im_mean_var4=mean2(im_var(4,5:m-4,5:n-4));
T=im_mean_var1;
%im_N=ones(m,n);
im_new=im_noise;
im_mean_var=zeros(m,n);
im_N_var=zeros(m,n);
im_max_var=zeros(m,n);
for i=5:m-5
for j=5:n-5
im_min_avg(i,j)=min([im_avg(1,i,j),im_avg(2,i,j),im_avg(3,i,j),im_avg(4,i,j)]);
for N=1:4
if im_avg(N,i,j)==im_min_avg(i,j);
% im_N(i,j)=N;
im_mean_var(i,j)=mean2(im_var(N,i-N:i+n,j-N:j+n));
im_N_var(i,j)=im_var(N,i,j);
im_max_var(i,j)=max(im_var(N,
);
im_new(i,j)=im_avg(N,i,j);
end
end
end
end
q=im_mean_var./(im_N_var+1);
dat=im_N_var./(im_mean_var+im_max_var+1);
im_winner=uint8(double(im_new)+(1-q+dat).*(double(im_noise-im_new)));
figure,imshow(im_winner);
title('维纳滤波图片');
%择优算法
im_end=min(im_med,im_winner);
% im_logic=im_med>im_winner;
% im_end=im_winner(im_logic);
%边缘择优
im_edge_winner=edge(im_winner,'canny');
% im_edge=im_noise.*im_canny;
for i=3:m-2
for j=3:n-2
if im_edge_winner(i,j)
im_mask=im_noise(i-2:i+2,j-2:j+2);
w=im_mask(im_edge-winner(i-2:i+2,j-2:j+2));
im_end(i,j)=median(w);
end
end
end
%像素择优
im_logic_med=double(abs(im_noise-im_med))./double(im_med)<0.001;
im_logic_winner=double(abs(im_noise-im_winner))./double(im_winner)<0.001;
im_logic_end=im_logic_med & im_logic_winner;
for i=1:m
for j=1:n
if im_logic_end(i,j)
im_end(i,j)=im_noise(i,j);
end
end
end
%im_end=im_noise.*uint8(im_logic_end)+im_end.*uint8(~im_logic_end);
figure,imshow(im_end);
title('最终图片');