-
Notifications
You must be signed in to change notification settings - Fork 0
/
white_Gaussian_noise_filter.m
36 lines (33 loc) · 1.46 KB
/
white_Gaussian_noise_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
%wiener2c.m, собственная m-функция, Сизиков, MatLab
function f = wiener2c(g,nhood)
%Фильтрация gray- или RGB-шума на gray- или RGB-изображении
%методом адаптивной фильтрации Винера. Рекомендация:
%функция wiener2c наиболее эффективно фильтрует гауссовый белый
%шум. Если же шум импульсный, то рекомендуется использовать
%функцию medfilt2c.m - медианная фильтрация шума.
%Входные параметры (аргументы):
%g - исходное зашумленное gray- или RGB-изображение,
%nhood - скользящее окно (neighborhood) размера mxn,
% в пределах которого выполняется усреднение
% интенсивностей mn пикселов и результат присваивается
% средней точке окна. При этом (некоррелированные) шумы
% подавляются, а полезное изображение - нет.
%Выходной параметр (аргумент):
%f - обработанное изображение такого же типа, класса и размера,
% как g.
%Отличие собственной функции wiener2c от внешней функции
%wiener2 состоит в том, что wiener2 обрабатывает лишь gray-
%изображения, а wiener2c - как gray-, так и RGB-изображения.
%Пример обращения к wiener2c:
%gf = wiener2c(gn,[5 5]); %фильтрация цв. шума на изображении gn
%Литература:
%Дьяконов В., Абраменкова И. MATLAB. Обработка сигналов и
% изображений. СПб.: Питер, 2002, с. 553.
kg = ndims(g); %если kg=2, то g - gray, а если kg=3, то g - RGB
if (kg==2) %gray
f = wiener2(g,nhood);
else %RGB
f(:,:,1) = wiener2(g(:,:,1),nhood);
f(:,:,2) = wiener2(g(:,:,2),nhood);
f(:,:,3) = wiener2(g(:,:,3),nhood);
end