imnlmfilt

Нелокальный означает фильтровать изображения

Синтаксис

J = imnlmfilt(I)
J = imnlmfilt(I,Name,Value)
[J,estDoS] = imnlmfilt(___)

Описание

пример

J = imnlmfilt(I) применяет нелокальный основанный на средних значениях фильтр к полутоновому или цветному изображению I и возвращает получившееся изображение в J.

пример

J = imnlmfilt(I,Name,Value) пары "имя-значение" использования, чтобы изменить поведение нелокального среднего фильтра.

[J,estDoS] = imnlmfilt(___) также возвращает степень сглаживания, estDoS, используемого, чтобы оценить denoised пиксельное значение.

Примеры

свернуть все

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

I = imread('cameraman.tif');

Добавьте белый Гауссов шум с нулевым средним значением и 0,0015 отклонениями к изображению с помощью функции imnoise.

noisyImage = imnoise(I,'gaussian',0,0.0015);

Удалите шум от изображения до средних значений нелокального фильтровать. imnlmfilt оценивает степень сглаживания на основе стандартного отклонения шума в изображении.

[filteredImage,estDoS] = imnlmfilt(noisyImage);

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

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

montage({noisyImage,filteredImage})
title (['Estimated degree of smoothing, ', 'estDoS = ',num2str(estDoS)]);

Считайте цветное изображение.

imRGB = imread('peppers.png');

Добавьте белый Гауссов шум с нулевым средним значением и 0,0015 отклонениями к изображению с помощью функции the imnoise. Отобразите шумное изображение RGB.

noisyRGB = imnoise(imRGB,'gaussian',0,0.0015);
imshow(noisyRGB)

Преобразуйте шумное изображение RGB в цветовое пространство L*a*b, так, чтобы нелокальный средний фильтр сглаживал перцепционно схожие цвета.

noisyLAB = rgb2lab(noisyRGB);

Извлеките гомогенную закрашенную фигуру L*a*b шумного происхождения, чтобы вычислить шумовое стандартное отклонение.

roi = [210,24,52,41];
patch = imcrop(noisyLAB,roi);

В этой закрашенной фигуре L*a*b вычислите Евклидово расстояние от источника, edist. Затем вычислите стандартное отклонение edist, чтобы оценить шум.

patchSq = patch.^2;
edist = sqrt(sum(patchSq,3));
patchSigma = sqrt(var(edist(:)));

Установите 'значение DegreeOfSmoothing', чтобы быть выше, чем стандартное отклонение закрашенной фигуры. Отфильтруйте шумный L*a*b*, изображение с помощью нелокального означает фильтровать.

DoS = 1.5*patchSigma;
denoisedLAB = imnlmfilt(noisyLAB,'DegreeOfSmoothing',DoS);

Преобразуйте отфильтрованное изображение L*a*b в цветовое пространство RGB. Отобразите отфильтрованное изображение RGB.

denoisedRGB = lab2rgb(denoisedLAB,'Out','uint8');
imshow(denoisedRGB)

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

roi2 = [178,68,110,110];
montage({imcrop(noisyRGB,roi2),imcrop(denoisedRGB,roi2)})

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

свернуть все

Отобразите, чтобы отфильтровать, заданный как 2D полутоновое изображение размера m-by-n или 2D цветное изображение размера m-by-n-by-3. Размер I должен быть больше, чем или равным 21 21.

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: J = imnlmfilt(I,'DegreeOfSmoothing',10);

Степень сглаживания, заданного как пара, разделенная запятой, состоящая из 'DegreeOfSmoothing' и положительного числа. Как это повышения стоимости, сглаживание в получившемся изображении увеличения J. Если вы не задаете 'DegreeOfSmoothing', то значение по умолчанию является стандартным отклонением шума, оцененного от изображения. Для получения дополнительной информации смотрите Степень По умолчанию Сглаживания.

Размер окна поиска, заданный как пара, разделенная запятой, состоящая из 'SearchWindowSize' и положительного целого числа с нечетным знаком, s. Поиск подобных окружений к пикселю ограничивается s-by-s область, окружающая тот пиксель. SearchWindowSize влияет на производительность линейно с точки зрения времени. SearchWindowSize не может быть больше, чем размер входного изображения, I.

Размер окна сравнения, заданный как пара, разделенная запятой, состоящая из 'ComparisonWindowSize' и положительного целого числа с нечетным знаком, c. Функция imnlmfilt вычисляет веса подобия с помощью c-by-c окружение окружающие пиксели. ComparisonWindowSize должен быть меньше чем или равен SearchWindowSize. Для получения дополнительной информации смотрите Оценку Пиксельное значение Denoised.

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

свернуть все

Нелокальные средние значения отфильтровали изображение, возвращенное как 2D полутоновое изображение или 2D цветное изображение, одного размера и тип данных как входное изображение, I.

Предполагаемая степень сглаживания, возвращенного как положительное число. Если вы задаете DegreeOfSmoothing, то imnlmfilt возвращает то же значение в estDoS. В противном случае imnlmfilt возвращает степень по умолчанию сглаживания предполагаемой использующей Степени По умолчанию Сглаживания.

Советы

  • Сглаживать перцепционно близко раскрашивает изображение RGB, преобразуйте изображение в CIE L*a*b* цветовое пространство с помощью rgb2lab прежде, чем применить нелокальный средний фильтр. Чтобы просмотреть результаты, сначала преобразуйте отфильтрованный L*a*b* изображение к цветовому пространству RGB с помощью lab2rgb.

  • Если типом данных I является double, то вычисления выполняются в типе данных double. В противном случае вычисления выполняются в типе данных single.

Алгоритмы

свернуть все

Степень по умолчанию сглаживания

Значение по умолчанию 'DegreeOfSmoothing' является стандартным отклонением шума, оцененного от изображения. Чтобы оценить стандартное отклонение, imnlmfilt применяет операцию свертки к изображению с 3х3 фильтром, предложенным Дж. Иммерксром [2]. Когда I является цветным изображением, значение по умолчанию 'DegreeOfSmoothing' является стандартными отклонениями шума, усредненного через каналы.

Оцените пиксельное значение Denoised

Нелокальный средний алгоритм фильтрации оценивает denoised значение пикселя p с помощью этих шагов.

  1. Для определенного пикселя q, в окне поиска, вычисляет взвешенное Евклидово расстояние между пиксельными значениями в c - для-сравнения-c окна, окружающие p и q. Для цветных изображений включайте все каналы в Евклидов расчет расстояния.

    Вес является уменьшающейся показательной функцией, чей уровень затухания определяется квадратом 'DegreeOfSmoothing'. Когда изображение является шумным, 'DegreeOfSmoothing' является большим, и только пиксели с подобными значениями способствуют Евклидову расчету расстояния. Когда изображение имеет мало шума, 'DegreeOfSmoothing' является маленьким, и все пиксели способствуют Евклидову расчету расстояния.

    Результатом является числовой скаляр, который указывает на подобие между окружением p и окружением q.

    Примечание

    В реализации А. Буэдесом и др. [1], к Евклидову расстоянию между двумя окнами сравнения применяют операцию свертки с Гауссовым ядром размера c-by-c. Эта свертка дает больше веса Евклидову расстоянию между пиксельными значениями для пикселей около центра окна сравнения. Функция imnlmfilt не использует этот шаг для вычислительной эффективности.

  2. Повторите это вычисление для каждого из других пикселей в s-by-s окно поиска, найдя взвешенное Евклидово расстояние между пикселем p и каждым из тех пикселей. Результатом является s-by-s матрица подобия, которая указывает на подобие между окружением p и другими окружениями в окне поиска.

  3. Нормируйте матрицу подобия.

  4. Используя веса в нормированной матрице подобия, вычислите взвешенное среднее пиксельных значений в s-by-s окно поиска вокруг пикселя p. Результатом является denoised значение p.

Ссылки

[1] Buades, A. B. Колледж и J.-M. Сморчок. "Нелокальный Алгоритм для Шумоподавления Изображений". 2 005 Конференций IEEE® Computer Society по Компьютерному зрению и Распознаванию образов. Издание 2, июнь 2005, стр 60–65.

[2] Immerkær, J. "Быстрая Шумовая Оценка Отклонения". Компьютерное зрение и Распознавание изображений. Издание 64, Номер 2, сентябрь 1996, стр 300–302.

Смотрите также

| | |

Введенный в R2018b