-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tukey's_median_filter.m
36 lines (33 loc) · 1.52 KB
/
Tukey's_median_filter.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
%medfilt2с.m, собственная m-функция, Сизиков В.С., Matlab
function f = medfilt2c(g,nhood)
%Фильтрация gray- или RGB-шума на gray- или RGB-изображении
%методом медианной фильтрации Тьюки. Рекомендация:
%функция medfilt2c наиболее эффективно фильтрует импульсный
%шум. Если же шум гауссовый, то рекомендуется использовать
%функцию wiener2c.m - адаптивная винеровская фильтрация шума.
%Входные параметры (аргументы):
%g - исходное зашумленное gray- или RGB-изображение,
%nhood - скользящее окно (neighborhood) размера mxn, в пределах
% которого интенсивности выстраиваются в порядке возрастания
% и средней точке окна присваивается интенсивность под номером
% (mn+1)/2 (медианный отсчет). При этом мощные и слабые шумы
% (это, как правило, импульсные шумы) отсеиваются.
%Выходной параметр (аргумент):
%f - обработанное изображение такого же типа, класса и размера,
% как g.
%Отличие собственной функции medfilt2c от внешней функции
%medfilt2 состоит в том, что medfilt2 обрабатывает лишь gray-
%изображения, а medfilt2c - как gray-, так и RGB-изображения.
%Пример обращения к medfilt2c:
%gf = medfilt2c(gn,[5 5]); %фильтрация цв. шума на изображении gn
%Литература:
%Дьяконов В., Абраменкова И. MATLAB. Обработка сигналов и
% изображений. СПб.: Питер, 2002, с. 550.
kg = ndims(g); %если kg=2, то g - gray, а если kg=3, то g - RGB
if (kg==2) %gray
f = medfilt2(g,nhood);
else %RGB
f(:,:,1) = medfilt2(g(:,:,1),nhood);
f(:,:,2) = medfilt2(g(:,:,2),nhood);
f(:,:,3) = medfilt2(g(:,:,3),nhood);
end