Я новичок в MATLAB. Я не знаю, как использовать фильтр среднего геометрического для фильтрации зашумленного изображения. Для фильтра среднего арифметического я использую это:
H = fspecial('average',5);
a = imfilter(a, H);
Есть ли аналогичный способ для фильтра среднего геометрического?
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));
Надеюсь, это поможет!
Похожие вопросы
Новые вопросы
matlab
MATLAB - это высокоуровневая языковая и интерактивная среда программирования для численных расчетов и визуализации, разработанная MathWorks. Не используйте оба тега [matlab] и [octave], если явно не задан вопрос о сходстве или различии между ними. При использовании этого тега, пожалуйста, укажите версию MATLAB, с которой вы работаете (например, R2017a).