imnlmfilt

Нелокальное означает фильтрацию изображения

Описание

пример

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

пример

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

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

Примеры

свернуть все

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

I = imread('cameraman.tif');

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

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

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

[filteredImage,estDoS] = imnlmfilt(noisyImage);

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

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

montage({noisyImage,filteredImage})
title(['Estimated Degree of Smoothing, ', 'estDoS = ',num2str(estDoS)])

Figure contains an axes. The axes 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. The axes 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. The axes contains an object of type image.

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

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

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

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

свернуть все

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

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

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

Задайте необязательные разделенные разделенными запятой парами 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. The imnlmfilt функция вычисляет веса подобия, используя c -by c окружающие пиксели. ComparisonWindowSize должно быть меньше или равно SearchWindowSize. Для получения дополнительной информации смотрите Оценку Деноизмененного Пиксельного Значения.

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

свернуть все

Нелокальное означает отфильтрованное изображение, возвращаемое как 2-D полутоновое изображение или 2-D цветное изображение того же размера и типа данных, что и входа изображение, 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' - стандартные отклонения шума, усредненные по каналам.

Оценка деноизмененного значения пикселя

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

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

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

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

    Примечание

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

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

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

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

Ссылки

[1] Buades, A., B. Coll, and J.-M. Морель. «Нелокальный алгоритм шумоподавления изображений». 2005 IEEE® Конференция компьютерного общества по компьютерному зрению и распознаванию шаблонов. Том 2, июнь 2005 года, стр. 60-65.

[2] Immerk, J. «Fast Noise Variance Estimation». Компьютерное зрение и понимание изображений. Том 64, № 2, сентябрь 1996, стр. 300-302.

Введенный в R2018b