WikiDer > Медианный фильтр - Википедия
В медианный фильтр нелинейный цифровая фильтрация техника, часто используемая для удаления шум из изображения или сигнала. Такой подавление шума это типичный этап предварительной обработки для улучшения результатов последующей обработки (например, обнаружение края на изображении). Медианная фильтрация очень широко используется в цифровых технологиях. обработка изображений потому что при определенных условиях он сохраняет края при удалении шума (но см. обсуждение ниже), а также имеет приложения в обработка сигналов.
Описание алгоритма
Основная идея медианного фильтра состоит в том, чтобы проходить по каждой записи сигнала, заменяя каждую запись на медиана соседних записей. Шаблон соседей называется «окном», которое скользит, вход за входом, по всему сигналу. Для одномерных сигналов наиболее очевидным окном являются только несколько первых предшествующих и последующих записей, тогда как для двумерных (или многомерных) данных окно должно включать все записи в пределах заданного радиуса или эллипсоидальный область (т.е. медианный фильтр не отделяемый фильтр).
Работал одномерный пример
Чтобы продемонстрировать, используя размер окна три с одной записью, непосредственно предшествующей и следующей за каждой записью, медианный фильтр будет применен к следующему простому одномерному сигналу:
- Икс = (2, 3, 80, 6, 2, 3).
Итак, медианный отфильтрованный выходной сигнал у будет:
- у1 = med (2, 3, 80) = 3,
- у2 = med (3, 80, 6) = med (3, 6, 80) = 6,
- у3 = med (80, 6, 2) = med (2, 6, 80) = 6,
- у4 = med (6, 2, 3) = med (2, 3, 6) = 3,
т.е. у = (3, 6, 6, 3).
Граничные вопросы
В приведенном выше примере, поскольку нет записи, предшествующей первому значению, первое значение повторяется, как и последнее значение, чтобы получить достаточно записей для заполнения окна. Это один из способов обработки пропущенных оконных записей на границах сигнала, но есть и другие схемы, которые имеют другие свойства, которые могут быть предпочтительнее в определенных обстоятельствах:
- Избегайте обработки границ с последующей обрезкой границы сигнала или изображения или без нее,
- Получение записей из других мест в сигнале. Например, с изображениями могут быть выбраны записи от дальней горизонтальной или вертикальной границы,
- Уменьшение окна по краям, чтобы каждое окно было заполнено.
Псевдокод двумерного медианного фильтра
Код для простого двумерного алгоритма медианного фильтра может выглядеть так:
1. выделить outputPixelValue [ширина изображения] [высота изображения] 2. выделить окно [ширина окна × высота окна] 3. edgex: = (ширина окна / 2) с округлением вниз 4. edgey: = (высота окна / 2) с округлением вниз за Икс от edgex до ширины изображения - edgex делать за у от края до высоты изображения - по краю делать я = 0 за FX от 0 до ширины окна делать за фу от 0 до высоты окна делать window [i]: = inputPixelValue [x + fx - edgex] [y + fy - edgey] i: = i + 1 сортировать записи в окне [] outputPixelValue [x] [y]: = window [ширина окна * высота окна / 2]
Этот алгоритм:
- Обрабатывает только один цветовой канал,
- Использует подход «без обработки границ» (см. Обсуждение вопросов границ выше).
Проблемы с реализацией алгоритма
Обычно большая часть вычислительных усилий и времени тратится на вычисление медианы каждого окна. Поскольку фильтр должен обрабатывать каждую запись в сигнале, для больших сигналов, таких как изображения, эффективность этого вычисления медианы является критическим фактором при определении того, насколько быстро может работать алгоритм. Наивная реализация, описанная выше, сортирует каждую запись в окне, чтобы найти медиану; однако, поскольку требуется только среднее значение в списке чисел, алгоритмы выбора может быть намного эффективнее. Кроме того, в некоторых типах сигналов (очень часто в случае изображений) используются представления целых чисел: в этих случаях гистограмма Медианы могут быть гораздо более эффективными, потому что гистограмму просто обновлять от окна к окну, а поиск медианы гистограммы не является особенно обременительным.[1]
Свойства сохранения края
Медианная фильтрация - это один из методов сглаживания, как и линейная гауссова фильтрация. Все методы сглаживания эффективны для удаления шума на гладких участках или гладких участках сигнала, но отрицательно влияют на края. Однако часто, одновременно с уменьшением шума в сигнале, важно сохранить края. Например, края имеют решающее значение для внешнего вида изображений. Для малых и средних уровней гауссовского шума медианный фильтр явно лучше, чем Размытие по Гауссу при удалении шума с сохранением краев для заданного фиксированного размера окна.[2] Однако его производительность не намного лучше, чем размытие по Гауссу для высоких уровней шума, тогда как для спекл-шум и шум соли и перца (импульсный шум), он особенно эффективен.[3] Из-за этого медианная фильтрация очень широко используется в цифровых технологиях. обработка изображений.
Смотрите также
- Шум изображения
- Взвешенная медиана
- псевдо-медианный фильтр
- Лулу сглаживание
- Двусторонний фильтр
- Среднее с ограниченной достоверностью данных
- Сглаживание
Рекомендации
- ^ Хуанг, Томас С .; Ян, Джордж Дж .; Тан, Грегори Ю. (февраль 1979 г.). «Быстрый алгоритм двумерной медианной фильтрации» (PDF). Транзакции IEEE по акустике, речи и обработке сигналов. 27 (1): 13–18. Дои:10.1109 / ТАССП.1979.1163188.
- ^ Ариас-Кастро, Эри; Донохо, Дэвид Л. (июнь 2009 г.). «Действительно ли медианная фильтрация сохраняет края лучше, чем линейная фильтрация?». Анналы статистики. 37 (3): 1172–2009. arXiv:математика / 0612422. Bibcode:2006математика ..... 12422A. Дои:10.1214 / 08-AOS604. МИСТЕР 2509071. Zbl 1160.62086.
- ^ Арсе, Гонсало Р. (2005). Нелинейная обработка сигналов: статистический подход. Нью-Джерси, США: Wiley. ISBN 0-471-67624-1.
внешняя ссылка
- Быстрая реализация одномерного медианного фильтра в MATLAB
- Функция Mathematica MedianFilter
- Медианный фильтр
- Быстрый двумерный медианный фильтр
- Реализация двумерного медианного фильтра за постоянное время (лицензия GPL) - время выполнения на пиксель этого алгоритма пропорционально количеству элементов в гистограмме (обычно это , куда п - количество бит на канал), хотя это, в свою очередь, является константой.
- Реализация написана на разных языках программирования (на Код Розетты)
- Статья доктора Доббса
- Взвешенный медианный фильтр в 100+ раз быстрее
- Круговой средний фильтр Медианный фильтр для данных с круговыми значениями, таких как изображения фазы или ориентации (C ++ / Matlab)