Фильтрация Винера
wiener2d(M, win_h, win_w) — выполняет двумерную адаптивную фильтрацию Винера матрицы M, используя локальную область шириной win_w и высотой win_h пикселов.
Фильтрация Винера — это один первых методов, разработанных для сокращения уровня случайных шумов на изображениях. Она основана на предположении, что аддитивный шум — это стационарный случайный процесс, независимый от расположения пиксела; алгоритм минимизирует квадратичную ошибку между исходным и восстановленным изображением. Фильтрация Винера является фильтром низких частот, но вместо использования единственного отсечения частоты фильтр использует нижнюю частоту среза в областях с малой детализацией и верхнюю частоту среза для сохранения деталей в областях с кромками или другими элементами с высокими отклонениями. Размер области определяет общую частоту среза: большее окно соответствует нижним частотам среза, а значит, большему подавлению размытости и шума.
Существует несколько возможных реализаций фильтрации Винера. Реализация, используемая в функции PTC Mathcad, является двумерной попикселной фильтрацией Винера, предложенной Ли в 1980 г. (см. страницы 536-540 книги Jae S. Lim, "Two-Dimensional Signal and Image Processing" (Лим Д. С. Двумерный сигнал и обработка изображений)), где используется фильтр вариации областей, а аддитивный шум считается белым и средненулевым.
В данном алгоритме пиксел y в отфильтрованном изображении наследуется от пиксела x во входном зашумленном изображении с помощью следующего преобразования:
где μx и vx — среднее значение и дисперсия x в окрестностях пиксела (размер окрестности задается аргументами функции win_h и win_w), а vn — дисперсия аддитивного шума, полученного из входного изображения. Каждый выходной пиксел является суммой локального среднего значения из окрестности входного пиксела и локального значения контрастности (x - μx), отмасштабированного так, что в областях с большой детализацией, где дисперсия шума (vn) намного меньше, чем дисперсия изображения (vx), коэффициент масштабирования очень близок к 1, а выходной пиксел y очень близок к входному пикселу x с небольшой фильтрацией, в то время как в областях с низкой детализацией, где дисперсия изображения ниже, выходной пиксел больше похож на локальное среднее значение (т. е. фильтрация низких частот).
Границы изображения считаются нулевыми значениями в оттенках серого, что делает выходные пикселы рядом с границами изображения недействительными (до размера области окрестности). Также область окрестности не должна быть больше входного изображения.
Аргументы
M — матрица изображения.
win_h, win_w — целые числа.
Было ли это полезно?