function y = medianfilter2d(x)

%УхнЬсфзуз рпх хлпрпйеЯ фп цЯлфсп меубЯпх
%РБСБФЗСЗУЕЙУ : 1. ЧсзуймпрпйеЯфбй рбсЬихсп мегЭипхт 3x3
%               2. РспуиЭфпхме мзденйкЬ (zero padding) уфб Ьксб фзт ейкьнбт
%                  рспкеймЭнпх нб мрпсЭупхме нб хрплпгЯупхме фйт фймЭт фщн
%                  pixels уфб Ьксб фзт бсчйкЮт ейкьнбт

n1 = size(x,1);
n2 = size(x,2);
y = zeros(n1+2,n2+2);
y(2:n1+1,2:n2+1) = x;

for i = 2:n2+1
   for j = 2:n1+1
      winvec(1,1:3) = y(i-1,j-1:j+1);
      winvec(1,4:6) = y(i,j-1:j+1);
      winvec(1,7:9) = y(i+1,j-1:j+1);  
      %фп дйЬнхумб winvec ресйЭчей фйт фймЭт ьлщн фщн pixels фпх рбсбиэспх
      sortvec =  sort(winvec);
      %фп sortvec ресйЭчей уе бэопхуб уейсЬ фйт фймЭт ьлщн фщн pixels фпх рбсбиэспх
      %прьфе п median иб еЯнбй фп меубЯп уфпйчеЯп фпх дйбнэумбфпт
      y(i,j) = sortvec(5);
   end
end

y = y(2:n1+1,2:n2+1);

%----**** ФЗЕ ЕНD ****----
%
%Кюдйкбт : БндсЭбт МрспкблЬкзт (Б.М. 2158)
%      УерфЭмвсйпт 2002
%гйб фп мЬизмб : ШзцйбкЮ ЕреоесгбуЯб & БнЬлхуз Ейкьнбт
