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)])

Figure contains an axes object. The axes object with title Estimated Degree of Smoothing, estDoS = 11.4833 contains an object of type image.

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

imRGB = imread('peppers.png');

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

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

Figure contains an axes object. The axes object contains an object of type image.

Преобразуйте шумное изображение 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)

Figure contains an axes object. The axes object contains an object of type image.

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

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

Figure contains an axes object. The axes object contains an object of type image.

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

свернуть все

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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® Конференция Общества эпохи компьютеризации по Компьютерному зрению и Распознаванию образов. Издание 2, июнь 2005, стр 60–65.

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

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

| | |

Введенный в R2018b