Медианный фильтр
Медианный фильтр — это нелинейный цифровой фильтр, используемый для обработки сигналов и изображений, основная задача которого — подавление импульсных помех (шума типа «соль и перец») и выбросов при сохранении резких перепадов (границ). В отличие от линейных фильтров (например, фильтра Гаусса), медианный фильтр заменяет значение центрального элемента окрестности на медиану всех значений в этой окрестности, что позволяет эффективно удалять аномальные точки, не размывая края.
Принцип работы
Медианный фильтр основан на вычислении медианы — значения, которое делит упорядоченный набор данных на две равные половины. Для двумерного сигнала (изображения) фильтр использует скользящее окно (апертуру) — прямоугольную или крестообразную область фиксированного размера (обычно 3×3, 5×5 или 7×7 пикселей). Процесс обработки состоит из следующих шагов:
- Для каждого пикселя изображения выбирается окрестность заданного размера.
- Все значения пикселей в этой окрестности сортируются по возрастанию.
- Центральный пиксель заменяется на медиану отсортированного ряда.
- Окно смещается на один пиксель, и процедура повторяется для всех точек изображения.
Например, для окна 3×3 с пикселями [10, 12, 15, 11, 200, 13, 9, 14, 16] отсортированный ряд будет [9, 10, 11, 12, 13, 14, 15, 16, 200]. Медиана — 13, поэтому центральный пиксель со значением 200 заменяется на 13, что устраняет импульсную помеху.
История
Метод медианной фильтрации был впервые предложен Джоном Тьюки в 1974 году в контексте анализа временных рядов. Тьюки, американский математик и статистик, разработал эту технику для сглаживания данных с выбросами, не искажая основную структуру сигнала. В 1980-х годах метод был адаптирован для обработки изображений, где он быстро зарекомендовал себя как эффективное средство борьбы с импульсным шумом. С развитием вычислительной техники медианный фильтр стал стандартным инструментом в библиотеках компьютерного зрения (например, OpenCV, scikit-image) и цифровой обработки сигналов.
Классификация
Медианные фильтры классифицируются по нескольким признакам:
По размеру и форме окна
- Квадратное окно — наиболее распространённый тип, обычно нечётного размера (3×3, 5×5, 7×7). Чем больше окно, тем сильнее подавление шума, но больше искажение мелких деталей.
- Крестообразное окно — включает только центральную строку и столбец, что снижает размытие по диагоналям.
- Круглое окно — аппроксимирует окружность, используется для сохранения изотропности.
По способу обработки краёв
- Без обработки краёв — пиксели на границах изображения не изменяются, что приводит к необработанной рамке.
- Расширение изображения — края изображения дополняются пикселями (например, отражением, нулями или повторением крайних значений), чтобы окно всегда было полностью заполнено.
- Уменьшение размера окна на краях — для граничных пикселей используется окно меньшего размера, что требует дополнительных вычислений.
По модификациям алгоритма
- Взвешенный медианный фильтр — каждому пикселю в окне присваивается вес, и медиана вычисляется с учётом повторений (например, центральный пиксель может иметь больший вес).
- Адаптивный медианный фильтр — размер окна изменяется в зависимости от локальной дисперсии шума: в областях с низким шумом окно уменьшается, с высоким — увеличивается.
- Рекурсивный медианный фильтр — результат обработки предыдущего пикселя используется при вычислении медианы для следующего, что ускоряет сходимость, но может внести артефакты.
Применение
Медианный фильтр широко используется в различных областях, где требуется подавление импульсных помех без потери резкости границ.
Обработка изображений
- Удаление шума «соль и перец» — наиболее типичная задача. Шум этого типа проявляется как случайные белые и чёрные пиксели на изображении. Медианный фильтр с окном 3×3 часто полностью устраняет такой шум при его плотности до 10–20 %.
- Предобработка для компьютерного зрения — перед применением алгоритмов сегментации, детекции границ (например, оператора Кэнни) или распознавания образов медианная фильтрация удаляет выбросы, не размывая контуры.
- Медицинская визуализация — в рентгеновских снимках, МРТ и КТ медианный фильтр используется для подавления артефактов, вызванных датчиками или цифровым шумом.
Обработка сигналов
- Анализ временных рядов — в экономике, метеорологии и геофизике медианный фильтр применяется для сглаживания данных с выбросами, например, для удаления аномальных значений температуры или котировок акций.
- Аудиообработка — подавление импульсных помех в аудиозаписях (например, щелчков и тресков), особенно в восстановлении старых фонограмм.
Другие области
- Робототехника — фильтрация данных с лидаров и сонаров для удаления случайных выбросов.
- Фотограмметрия — улучшение качества цифровых моделей рельефа, полученных с БПЛА.
- Криминалистика — восстановление повреждённых изображений, например, с камер видеонаблюдения.
Преимущества и недостатки
Преимущества
- Сохранение границ — в отличие от линейных фильтров, медианный фильтр не размывает резкие перепады яркости, что критично для задач сегментации и детекции.
- Устойчивость к выбросам — единичные аномальные пиксели полностью удаляются, не влияя на соседние значения.
- Простота реализации — алгоритм не требует сложных математических операций (только сортировка), что позволяет реализовать его на аппаратном уровне.
Недостатки
- Вычислительная сложность — сортировка окна требует O(n² log n) операций для каждого пикселя, где n — размер окна. Для больших изображений это может быть медленнее линейных фильтров.
- Искажение тонких деталей — при большом размере окна (например, 7×7) медианный фильтр может удалять мелкие объекты, такие как линии толщиной в один пиксель.
- Неэффективность против гауссовского шума — медианный фильтр плохо подавляет равномерный шум с нормальным распределением, для этого лучше подходят линейные фильтры.
- Зависимость от размера окна — выбор оптимального размера окна требует эмпирической настройки: слишком маленькое окно не удаляет шум, слишком большое — искажает изображение.
Сравнение с другими фильтрами
| Характеристика | Медианный фильтр | Фильтр Гаусса | Фильтр среднего |
|---|---|---|---|
| Тип | Нелинейный | Линейный | Линейный |
| Подавление импульсного шума | Отличное | Плохое | Плохое |
| Сохранение границ | Хорошее | Плохое (размытие) | Плохое (размытие) |
| Подавление гауссовского шума | Плохое | Хорошее | Умеренное |
| Вычислительная сложность | Высокая (сортировка) | Низкая (свёртка) | Низкая (среднее) |
Реализация
В современных библиотеках компьютерного зрения медианный фильтр реализован как стандартная функция. Например, в OpenCV (библиотека с открытым исходным кодом) используется функция cv2.medianBlur(), которая принимает изображение и размер окна. В Python с библиотекой scikit-image доступна функция skimage.filters.median(). Для аппаратной реализации, например, на ПЛИС (программируемые логические интегральные схемы), применяются параллельные алгоритмы сортировки, такие как сортировка пузырьком или битонная сортировка, что позволяет обрабатывать видеопоток в реальном времени.
Интересные факты
- Медианный фильтр является частным случаем порядковых фильтров (rank-order filters), к которым также относятся фильтры минимума и максимума.
- В цветной обработке изображений медианный фильтр применяется к каждому каналу (RGB) независимо, что может привести к цветовым артефактам. Для цветных изображений часто используют векторный медианный фильтр, который учитывает расстояния между цветами в пространстве RGB.
- В задачах восстановления изображений медианный фильтр часто комбинируется с другими методами, например, с адаптивным шумоподавлением или вейвлет-преобразованием, для достижения лучшего качества.
Источники
- Тьюки, Дж. (1974). Exploratory Data Analysis. Addison-Wesley.
- Гонсалес, Р., Вудс, Р. (2008). Цифровая обработка изображений. Техносфера.
- OpenCV Documentation. Image Filtering. OpenCV.org.
- scikit-image Documentation. Filters. Median. scikit-image.org.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →