denoiseNGMeet

Денуазируйте гиперспектральные изображения, используя нелокальный глобальный подход

Описание

пример

outputData = denoiseNGMeet(inputData) уменьшает шум в гиперспектральных данных при помощи нелокального подхода meets global (NGMeet). Это итерационный подход, который интегрирует как пространственное нелокальное подобие, так и спектральное низкоранговое приближение для оценки исходных значений пикселей. Для получения дополнительной информации см. «Алгоритмы».

пример

outputData = denoiseNGMeet(inputData,Name,Value) также задает опции, использующие один или несколько аргументы пары "имя-значение". Используйте этот синтаксис, чтобы задать значения параметров для подхода NGMeet.

Примечание

Эта функция требует библиотеки Image Processing Toolbox™ гиперспектральной визуализации. Можно установить библиотеку Image Processing Toolbox Hyperspectral Imaging Library из Add-On Explorer. Дополнительные сведения об установке дополнений см. в разделе Получение и управление Дополнений.

Примеры

свернуть все

Чтение гиперспектральных данных в рабочую область.

hcube = hypercube('paviaU.hdr');

Нормализуйте входные данные и добавьте Гауссов шум к нормализованным входным данным.

hcube = hypercube(rescale(hcube.DataCube),hcube.Wavelength);
inputData = imnoise(hcube.DataCube,'Gaussian',0,0.005);
inputData = assignData(hcube,':',':',':',inputData);

Обесценивайте шумные гиперспектральные данные с помощью метода NGmeet.

outputData = denoiseNGMeet(inputData);

Оцените изображения RGB для входного, шумного и деноизированного выходного datacube. Увеличьте контрастность изображения путем применения контрастного растяжения.

originalImg = colorize(hcube,'Method','rgb','ContrastStretching',true);
noisyImg = colorize(inputData,'Method','rgb','ContrastStretching',true);
denoisedImg = colorize(outputData,'Method','rgb','ContrastStretching',true);

Отображение изображений исходных, шумных и деноизированных данных.

figure
montage({originalImg,noisyImg,denoisedImg})
title('Input Image | Noisy Image | Denoised Image');

Чтение гиперспектральных данных в рабочую область.

hcube = hypercube('paviaU.hdr');

Нормализуйте входные данные и добавьте Гауссов шум к нормализованным входным данным.

hcube = hypercube(rescale(hcube.DataCube),hcube.Wavelength);
inputData = imnoise(hcube.DataCube,'Gaussian',0,0.005);
inputData = assignData(hcube,':',':',':',inputData);

Обесценивайте шумные гиперспектральные данные с помощью метода NGmeet. Установите значение параметров сглаживания равное 0,01, а количество итераций равным 4.

outputData = denoiseNGMeet(inputData,'Sigma',0.01,'NumIterations',4);

Оцените изображения RGB для входного, шумного и деноизированного выходного datacube. Увеличьте контрастность изображения путем применения контрастного растяжения.

originalImg = colorize(hcube,'Method','rgb','ContrastStretching',true);
noisyImg = colorize(inputData,'Method','rgb','ContrastStretching',true);
denoisedImg = colorize(outputData,'Method','rgb','ContrastStretching',true);

Отображение изображений исходных, шумных и деноизированных данных.

figure
montage({originalImg,noisyImg,denoisedImg})
title('Input Image | Noisy Image | Denoised Image');

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

свернуть все

Входные гиперспектральные данные, заданные как 3-D числовой массив, который представляет кубик гиперспектральных данных размера M -by- N -by- C или hypercube объект. Если вход является hypercube объект, функция считывает кубик данных, хранящийся в DataCube свойство объекта. Гиперспектральный кубик данных должен быть вещественным и не разреженным.

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: denoiseNGMeet(hcube,'Sigma',0.3)

Параметр сглаживания, заданный как разделенная разделенными запятой парами, состоящая из 'Sigma' и положительная скалярная величина. Значение по умолчанию является 0,1 раза больше отклонение шума (σn). Увеличивая это значение, повышает уровень сглаживания в деноизированном выходе.

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

Количество спектральных полос в низкоранговом приближении, заданное как разделенная разделенными запятой парами, состоящая из 'SpectralSubspace' и положительный целочисленный скаляр в области значений (0, C]. C - количество полос входных данных. Количество конечных элементов в гиперспектральных данных может быть хорошей оценкой для количества спектральных полос для использования при низкоранговом приближении. Вы можете найти количество конечных элементов во входных гиперспектральных данных, используя countEndmembersHFC функция.

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

Количество итераций, заданное как разделенная разделенными запятой парами, состоящая из 'NumIterations' и положительный целочисленный скаляр. Увеличение этого значения для лучшего шумоподавления результатов.

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

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

свернуть все

Денонизированные гиперспектральные данные, возвращенные как 3-D числовой массив или hypercube объект.

Алгоритмы

Метод NGMeet оценивает обесцененный кубик данных с помощью этих шагов. Для каждой итерации i

  1. Вычислите спектральное низкоранговое приближение шумных входных данных (Yi) при помощи сингулярного разложения. Приближение приводит к уменьшенному кубу данных (Mi) и связанным ортогональным базисным Ai.

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

  3. Выполните обратную проекцию. Сопоставьте деноизированное Mi куба сокращенных данных с исходным пространством с помощью ортогонального базиса Ai. Результатом является деноизированный выход (Xi), полученный при итерации i.

  4. Выполните итерационную регуляризацию. Обновите зашумленные входные данные, Yi+1 = λ Xi + (1- λ) Yi.

  5. Повторите шаги с 1 по 4 для заданного количества итераций. Конечным Xi значения являются деноизированные гиперспектральные данные.

Ссылки

[1] Он, Вэй, Цюаньминь Яо, Чао Ли, Наото Ёкоя и Цибинь Чжао. Non-Local Meets Global: Integrated Paradigm for Hyperspectral Denoising (неопр.) (недоступная ссылка). В 2019 году IEEE/CVF Conference on Компьютерное Зрение and Pattern Recognition (CVPR), 6861-70. Лонг Бич, Калифорния, США: IEEE, 2019. https://doi.org/10.1109/CVPR.2019.00703.

См. также

|

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте