Мне дали изображение с "пятнистым шумом", моя задача - удалить каждый слой отдельно, а затем рекомбинировать чистое изображение. Мне не разрешено использовать med2flt() только медианный фильтр. Я уже разделил 3 разных слоя: красный, зеленый и синий, но не знаю, как применить к ним медианный фильтр. Как бы я это сделал?
Создание медианного фильтра
Ответы (1)
Используя nlfilter
Если вам разрешено использовать nlfilter
, вы можете попробовать использовать flt = @(x) median(x(:))
в качестве функции фильтра. Вы найдете больше информации об этом, если наберете doc nlfilter
.
Написание собственного
Возможно, это упражнение посвящено тому, как самостоятельно реализовать операцию фильтрации. Во-первых, вы можете захотеть выделить память для отфильтрованного изображения с помощью imf = zeros(size(im, 1) - 2, size(im, 2) - 2);
Это изображение немного меньше, потому что один из способов обработки краев — их отбрасывание. Затем рассмотрите две петли for
поверх x
и y
для изображения im
, как в
for x = 1 : size(im, 2) - 2
for y = 1 : size(im, 1) - 2
roi = im(y : y + 2, x : x + 2);
imf(y, x) = median(roi(:));
end
end
roi
сохраняет локальную окрестность 3x3 im
, а median(roi(:))
позволяет вычислить медиану этих 9 значений интенсивности.
colfilt
илиnlfilter
? Проблема очень проста с этими функциями. - person chappjc   schedule 31.10.2013