Filtr średniej geometrycznej - Geometric mean filter
Średniej geometrycznej filtra jest procesem filtrowania obrazu przeznaczone do wygładzania i zmniejszenia hałasu obrazu. Opiera się na matematycznej średniej geometrycznej . Obraz wyjściowy G(x,y) średniej geometrycznej jest określony wzorem
Gdzie S(x,y) to oryginalny obraz, a maska filtra to m na n pikseli.
Każdy piksel obrazu wyjściowego w punkcie (x,y) jest iloczynem pikseli w masce średniej geometrycznej podniesionej do potęgi 1/min. Na przykład, używając maski o rozmiarze 3 na 3, piksel (x,y) w obrazie wyjściowym będzie iloczynem S(x,y) i wszystkich 8 otaczających go pikseli podniesionych do potęgi 1/9.
Używając następującego oryginalnego obrazu z pikselem (x,y) na środku:
Daje wynik: (5*16*22*6*3*18*12*3*15)^(1/9) = 8,77.
Podanie
Filtr średniej geometrycznej jest najczęściej używany do odfiltrowywania szumu Gaussa . Ogólnie rzecz biorąc, pomoże to wygładzić obraz przy mniejszej utracie danych niż filtr średniej arytmetycznej .
Przykład kodu
Poniższy kod przedstawia zastosowanie filtra średniej geometrycznej do obrazu przy użyciu MATLAB .
% Applies geometric mean filter to image input_noise that has added gaussian noise
[m, n] = size(input_noise);
output = zeros(m, n); % output image set with placeholder values of all zeros
val = 1; % variable to hold new pixel value
for i = 2:m-2 % loop through each pixel in original image
for j = 2:n-2 % compute geometric mean of 3x3 window around pixel
p = input_noise(i - 1, j - 1);
q = input_noise(i - 1, j);
r = input_noise(i - 1, j + 1);
s = input_noise(i, j - 1);
t = input_noise(i, j);
u = input_noise(i, j + 1);
v = input_noise(i + 1, j - 1);
w = input_noise(i + 1, j);
x = input_noise(i + 1, j + 1);
val = (p * q * r * s * t * u * v * w * x) ^ (1 / 9);
output(i, j) = val; % set output pixel to computed geometric mean
val = 1; % reset val for next pixel
end
end