Monday, August 2, 2010

Adaptive Median filter

%
clear all; close all; clc;
f = imread('cameraman.tif');
f = im2double(f);
f = imnoise(f,'salt & pepper',0.4);
subplot(1,2,1),imshow(f),title('Noise Image');
[m n]=size(f);
for i = 1:m
for j =1:n
si = 1;
cn = 1;
while(cn == 1)
con = 1;
for k = i-si:i+si
for p = j-si:j+si
if(k >0 && p>0)&&(k <m && p <n)
con = con+1;
s(con) = f(k,p);
end
end
end
ma = max(s);
mi = min(s);
me = median(s);
d1 = me - mi;
d2 = me - ma;
if (d1 >0) && (d2 <0)
df1 = f(i,j) - mi;
df2 = f(i,j) - ma;
if (df1 > 0) && (df2 < 0)
f1(i,j) = f(i,j);
else
f1(i,j) = me;
end
cn=0;
else
si = si+1;
if si>m
cn = 0;
f1(i,j)=f(i,j);
end
end
s=0;
end
end
end
imwrite(f1,'cameraout.tif');
subplot(1,2,2),imshow(f1),title('After filtering');

No comments: