wiener2

2D адаптивная фильтрация удаления шума

Синтаксис wiener2(I,[m n],[mblock nblock],noise) был удален. Используйте wiener2(I,[m n],noise) синтаксис вместо этого.

Описание

J = wiener2(I,[m n],noise) фильтрует полутоновое изображение I использование мудрого пикселем адаптивного lowpass Винеровский фильтр. [m n] задает размер (m- n) из окружения, используемого, чтобы оценить локальное изображение среднее и стандартное отклонение. Аддитивный шум (Гауссов белый шум) степень принят, чтобы быть noise.

Входное изображение было ухудшено постоянным шумом дополнения степени. wiener2 использует pixelwise адаптивный Винеровский метод на основе статистики, оцененной от локального окружения каждого пикселя.

пример

[J,noise_out] = wiener2(I,[m n]) возвращает оценки аддитивной шумовой степени wiener2 вычисляет прежде, чем сделать фильтрацию.

Примеры

свернуть все

В этом примере показано, как использовать wiener2 функция, чтобы применить Винеровский фильтр (тип линейного фильтра) к изображению адаптивно. Винеровский фильтр адаптирует себя в соответствии с локальным отклонением изображений. Где отклонение является большим, wiener2 выполняет мало сглаживания. Где отклонение мало, wiener2 выполняет больше сглаживания.

Этот подход часто приводит к лучшим результатам, чем линейная фильтрация. Адаптивный фильтр является более выборочным, чем сопоставимый линейный фильтр, сохраняя ребра и другие высокочастотные части изображения. Кроме того, нет никаких задач проекта; wiener2 указатели на функцию все предварительные расчеты и реализации фильтр для входного изображения. wiener2, однако, действительно требует большего количества времени вычисления, чем линейная фильтрация.

wiener2 работает лучше всего, когда шум является постоянной степенью ("белый") аддитивный шум, такой как Гауссов шум. Пример ниже применяет wiener2 к изображению Сатурна с добавленным Гауссовым шумом.

Считайте изображение в рабочую область.

RGB = imread('saturn.png');

Преобразуйте изображение от истинного цвета до шкалы полутонов.

I = rgb2gray(RGB);

Добавьте Гауссов шум в изображение

J = imnoise(I,'gaussian',0,0.025);

Отобразите шумное изображение. Поскольку изображение является довольно большим, отображение только фрагмент изображения.

imshow(J(600:1000,1:600));
title('Portion of the Image with Added Gaussian Noise');

Удалите шум с помощью wiener2 функция.

K = wiener2(J,[5 5]);

Отобразите обработанное изображение. Поскольку изображение является довольно большим, отображение только фрагмент изображения.

figure
imshow(K(600:1000,1:600));
title('Portion of the Image with Noise Removed by Wiener Filter');

Входные параметры

свернуть все

Введите изображение, заданное как 2D числовой массив.

Типы данных: single | double | int16 | uint8 | uint16

Размер окружения, заданный как векторный [m n] с 2 элементами где m количество строк и n количество столбцов. Если вы не используете [m n] аргумент, m и n значение по умолчанию к 3.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Аддитивный шум, заданный как числовой массив. Если вы не задаете шум, wiener2 вычисляет среднее значение локального отклонения, mean2(localVar).

Типы данных: single | double

Выходные аргументы

свернуть все

Фильтрованное изображение, возвращенное как числовой массив тот же размер и класс как входное изображение I.

Оценка аддитивной шумовой степени, возвращенной как числовой массив.

Алгоритмы

wiener2 оценивает локальное среднее значение и отклонение вокруг каждого пикселя.

μ=1NMn1,n2ηa(n1,n2)

и

σ2=1NMn1,n2ηa2(n1,n2)μ2,

где η N-by-M локальное окружение каждого пикселя в изображении A. wiener2 затем создает pixelwise Винеровский фильтр с помощью этих оценок,

b(n1,n2)=μ+σ2ν2σ2(a(n1,n2)μ),

где ν2 является шумовым отклонением. Если шумовое отклонение не дано, wiener2 использует среднее значение всех локальных предполагаемых отклонений.

Ссылки

[1] Лим, Джэ С., Двумерная Обработка сигналов и Обработка изображений, Englewood Cliffs, NJ, Prentice Hall, 1990, p. 548, уравнения 9.26, 9.27, и 9.29.

Представлено до R2006a