Одномерный медианный фильтр
А что там реализовывать-то? Сортировку трех чисел по возрастанию?
Сортировка хрен сним.У меня на входе N чисел, длина окна, ну пусть будет три.После сортировки на выходе я должен получить N отфильтрованых чисел.
Как это сделать ведь при длине окна 3 на выходе N-2 чисел,5 - N-4.Мне нулями восполнять эти пробелы,т.е при длине окна 3 фильтровать массив 0,0,N,0,0.
Хотелось бы посмотреть как это реализуется.
Как это сделать ведь при длине окна 3 на выходе N-2 чисел,5 - N-4.Мне нулями восполнять эти пробелы,т.е при длине окна 3 фильтровать массив 0,0,N,0,0.
Хотелось бы посмотреть как это реализуется.
Обычно при использовании таких фильтров призывается смириться с уменьшением выхода.
Т.е корректно крайние значения ты все-равно не обработаешь.
Если для некоторых фильтров можно бы было попробовать считать по меньшему числу соседей, то для медианного это бесполезно.
Т.е корректно крайние значения ты все-равно не обработаешь.
Если для некоторых фильтров можно бы было попробовать считать по меньшему числу соседей, то для медианного это бесполезно.
ЗЫ. я бы на твоем месте крайние значения оставил как есть
to demonstrate the median filter will be applied to the following array with a window size of 3
x = [2 80 6 3]
y[1] = Median[0 2 80] = 2
y[2] = Median[2 80 6] = Median[2 6 80] = 6
y[3] = Median[80 6 3] = Median[3 6 80] = 6
y[4] = Median[6 3 0] = Median[0 3 6] = 3
so
y = [2 6 6 3]
where y is the median filtered output of x
Да, нулями.
Хотя, конечно, хз =)
Вот например если у тебя бывают отрицательные значения, то получится явно фигня.
Если смысл задачи позволяет, то можно закольцевать массив.
Или можно оставить их нефильтрованными. Или, если вообще окно достаточно длинное, уменьшать размер окна (с 5 до 3 до 1 (то есть до отсутствия фильтра.
Вот например если у тебя бывают отрицательные значения, то получится явно фигня.
Если смысл задачи позволяет, то можно закольцевать массив.
Или можно оставить их нефильтрованными. Или, если вообще окно достаточно длинное, уменьшать размер окна (с 5 до 3 до 1 (то есть до отсутствия фильтра.
Спасибо сомнений стало меньше.Но если взять длину окна больше чем 3 нули вылезут вначале и в конце моего сигнала.Я так понимаю,что надо вместо этих нулей повставлять крайние ненулевые значения.
Чисто визуально нефильтрованные значения корректнее должны выглядеть
вместо этих нулей повставлять крайние ненулевые значения.Вот этого я не стал бы делать ни за что, потому что тогда сама идея фильтрации выделяющихся значений полностью теряет смысл.
она все-равно не работает для крайних
Я бы рассматривал продолжение сигнала как отражение (как будто к краю приставлено зеркало). Так делают, не знаю, с медианой ли. А вообще
наверное надо принимать во внимание, как результат будет использоваться.
наверное надо принимать во внимание, как результат будет использоваться.
Отражение равнозначно уменьшению окна в два раза. А невозможность фильтрации краев - это проблема всех матричных фильтров (где есть движущееся окно). Оставь границы нефильтроваными или вообще обрежь, если объем данных позволяет.
Оставить комментарий
nats
Есть ли у кого готовый алгоритм сабжа на С#, С++, С?