You are on page 1of 2

%% Implementation of Progressive Switching Median Filter %% Base Paper : Zhou Wang and David Zhang, "Progressive Switching Median

%% Filter for the Removal of Impulse Noise from Highly Corrupted Images", %% IEEE Trans. on Cir. and Sys., vol. 46, no. 1, Jan. 1999. %% Function Y = PSMF(x) %% input x = Image is corrupted by Salt & Pepper Noise %% %% Example: Y = PSMF(x); %% Posted date : 16 - 10 - 2008 %% Modified date : %% %% Developed By : K.Kannan (kannan.keizer@gmail.com) %% & Jeny Rajan (jenyrajan@gmail.com) %% Medical Imaging Research Group (MIRG), NeST, %% Trivandrum. %% Progressive Switching Median Filter function Y = PSMF(x) x = double(x); WF = 3; ND = 3;T = 40;a = 65;b = -50; M = medfilt2(x,[3 3]); N = abs(x - M); N(N>T)=0; N = N ~= 0; N = double(N); R = sum(N(:))/(size(x,1) * size(x,2)); if R <= 0.25 WD = 3; else WD = 5; end TD = a + (b * R); z = IMPDET(x,ND,WD,TD); Y = NF(x,z,WF); %% Impulse Detection function F1 = IMPDET(x,ND,WD,TD) X = x; M = medfilt2(X,[WD WD]); D = abs(X - M); F = zeros(size(x)); F(D>=TD)=1; F1 = F; X(F1==F)=X(F1==F); X(F1~=F)=M(F1~=F); for i = 1:ND-1 M = medfilt2(X,[WD WD]); F1(abs(X - M)<TD)=F(abs(X - M)<TD); F1((X - M)>=TD)=1; X(F1==F)=X(F1==F); X(F1~=F)=M(F1~=F); F = F1; end return; %% Noise Filtering function Y = NF(x,f,WF) g = f; Y = x; Y1 = Y; g1 = g;

s = sum(g(:)); while s ~= 0 M = medfilt2(Y,[WF WF]); Y1(g==1)=M(g==1); g1(Y~=Y1)=0; Y = Y1; g = g1; s1 = sum(g(:)); if s1 ~= s s = s1; else s = 0; end end return;

You might also like