Одномерный медианный фильтр
А что там реализовывать-то? Сортировку трех чисел по возрастанию?
Как это сделать ведь при длине окна 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 (то есть до отсутствия фильтра.
Спасибо сомнений стало меньше.Но если взять длину окна больше чем 3 нули вылезут вначале и в конце моего сигнала.Я так понимаю,что надо вместо этих нулей повставлять крайние ненулевые значения.
Чисто визуально нефильтрованные значения корректнее должны выглядеть
вместо этих нулей повставлять крайние ненулевые значения.Вот этого я не стал бы делать ни за что, потому что тогда сама идея фильтрации выделяющихся значений полностью теряет смысл.
она все-равно не работает для крайних
наверное надо принимать во внимание, как результат будет использоваться.
Отражение равнозначно уменьшению окна в два раза. А невозможность фильтрации краев - это проблема всех матричных фильтров (где есть движущееся окно). Оставь границы нефильтроваными или вообще обрежь, если объем данных позволяет.
Оставить комментарий
nats
Есть ли у кого готовый алгоритм сабжа на С#, С++, С?