exponenta event banner

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

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

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

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

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

Ссылки

[1] Буадес, А., Б. Колл и Ж.-М. Морель. Конференция IEEE ® Computer Society 2005 по компьютерному зрению и распознаванию образов. Том 2, июнь 2005 года, стр. 60-65.

[2] Иммеркер, J. «Оценка быстрой дисперсии шума». Компьютерное зрение и понимание изображений. Том 64, номер 2, сентябрь 1996, стр. 300-302.

Представлен в R2018b