Я новичок в MATLAB. Я не знаю, как использовать фильтр среднего геометрического для фильтрации зашумленного изображения. Для фильтра среднего арифметического я использую это:

H = fspecial('average',5);
a = imfilter(a, H);

Есть ли аналогичный способ для фильтра среднего геометрического?

1
yld 22 Дек 2016 в 19:15

1 ответ

Лучший ответ

Да, есть. Я предлагаю прочитать как страницу Википедии о среднем геометрическом, так и этот блог Стива Эддинса, который работает в The Mathworks.

Чтобы заимствовать объяснение Стива (и на самом деле весь код / ​​пример):

Фильтр локального среднего геометрического умножает все значения пикселей в окрестности, а затем берет корень N-й степени, где N - количество пикселей в окрестности.

Итак, с точки зрения кода Matlab, где h является ядром, заполненным ядрами, имеющими размер соседства, которое вы используете для вычисления среднего значения, а I является вашим изображением:

geo_mean = imfilter(log(I), h, 'replicate');
geo_mean = exp(geo_mean);
geo_mean = geo_mean .^ (1/numel(h));

Надеюсь, это поможет!

1
akurmustafa 25 Окт 2018 в 07:24