spectralIndices

Вычислите гиперспектральные индексы

Описание

пример

indices = spectralIndices(hcube) вычисляет индексы зелености: расширенный индекс растительности (EVI), модифицированный индекс отношения поглощения хлорофилла (MCARI) и индекс простого отношения (SR) гиперспектральных данных. Функция читает куб данных и значения длины волны, сохраненные в объекте hcube гиперкуба вычислить индексы зелености.

пример

indices = spectralIndices(hcube,indexNames) вычисляет один или несколько спектральных индексов, заданных indexNames.

indices = spectralIndices(hcube,'all') вычисляет все поддерживаемые спектральные индексы.

indices = spectralIndices(___,'BlockSize',blocksize) задает размер блока для обработки блока гиперспектрального куба данных при помощи аргумента пары "имя-значение" 'BlockSize'. Можно задать 'BlockSize' аргумент пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах.

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

Например, spectralIndices(hcube,'BlockSize',[50 50]) делит входное изображение на неперекрывающиеся блоки размера 50 50 и затем вычисляет спектральные индексы для пикселей в каждом блоке.

Примечание

Выполнять обработку блока путем определения 'BlockSize' аргумент пары "имя-значение", у вас должен быть MATLAB® R2021a или более поздний релиз.

Примечание

Эта функция требует Image Processing Toolbox™ Гиперспектральная Библиотека Обработки изображений. Можно установить Image Processing Toolbox Гиперспектральная Библиотека Обработки изображений из Add-On Explorer. Для получения дополнительной информации об установке дополнений, смотрите, Получают и Управляют Дополнениями.

Примеры

свернуть все

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

hcube = hypercube('indian_pines.dat');

Вычислите спектральное значение индексов для каждого пикселя в кубе данных. По умолчанию, spectralIndices функция возвращает индекс простого отношения (SR), расширенный индекс растительности (EVI) и модифицированный индекс отношения поглощения хлорофилла (MCARI).

indices = spectralIndices(hcube);

Смотрите имена индексов в выходном struct indices. Считайте соответствующие изображения индекса, возвращенные при выходе.

indices.IndexName
ans = 
"Simple Ratio (SR)"
ans = 
"Enhanced Vegetation Index (EVI)"
ans = 
"Modified Chlorophyll Absorption Ratio Index (MCARI)"
srImg = indices(1).IndexImage;
eviImg = indices(2).IndexImage;
mcariImg = indices(3).IndexImage;

Оцените расширенное от контраста изображение RGB от исходного куба данных при помощи colorize функция.

rgbImg = colorize(hcube,'Method','RGB','ContrastStretching',true);

Отобразите оригинал и вычисленные изображения индекса. Значение индекса SR, больше, чем 3, показывает растительность. Индекс EVI идентифицирует, что плотная растительность и типичное значение индекса EVI для здоровой растительности находятся между 0,2 и 0.8. Индекс MCARI показывает распространенность хлорофилла в области.

fig = figure('Position',[0 0 800 700]);

axes1 = axes('Parent',fig,'Position',[0 0.54 0.42 0.42]);
imagesc(rgbImg,'Parent',axes1);
axis off
title('RGB Image of Data Cube')

axes2 = axes('Parent',fig,'Position',[0.5 0.54 0.45 0.42]);
imagesc(srImg,'Parent',axes2);
axis off
title('SR Image')
colorbar

axes3 = axes('Parent',fig,'Position',[0 0.035 0.45 0.42]);
imagesc(eviImg,'Parent',axes3);
axis off
title('EVI Image')
colorbar

axes4 = axes('Parent',fig,'Position',[0.5 0.035 0.45 0.42]);
imagesc(mcariImg,'Parent',axes4);
axis off
title('MCARI Image')
colorbar

Figure contains 4 axes objects. Axes object 1 with title RGB Image of Data Cube contains an object of type image. Axes object 2 with title SR Image contains an object of type image. Axes object 3 with title EVI Image contains an object of type image. Axes object 4 with title MCARI Image contains an object of type image.

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

hcube = hypercube('jasperRidge2_R198.img');

Вычислите значение MNDWI для каждого пикселя в кубе данных и считайте водное изображение индекса.

indices = spectralIndices(hcube,'MNDWI');
mndwiImg = indices.IndexImage;

Оцените расширенное от контраста изображение RGB от исходного куба данных при помощи colorize функция.

rgbImg = colorize(hcube,'Method','RGB','ContrastStretching',true);

Отобразите оригинал и изображение MNDWI.

fig = figure('Position',[0 0 700 400]);
axes1 = axes('Parent',fig,'Position',[0 0.1 0.4 0.8]);
imshow(rgbImg,'Parent',axes1)
title('RGB Image of Data Cube')
axes2 = axes('Parent',fig,'Position',[0.45 0.15 0.47 0.7]);
imagesc(mndwiImg,'Parent',axes2)
colorbar
axis off
title('MNDWI Image')

Figure contains 2 axes objects. Axes object 1 with title RGB Image of Data Cube contains an object of type image. Axes object 2 with title MNDWI Image contains an object of type image.

Водные области обычно имеют значения MNDWI, больше, чем 0,09. Выполните пороговую обработку изображения MNDWI, чтобы сегментировать водные области. Задайте пороговое значение.

threshold = 0.09;

Сгенерируйте бинарное изображение со значением интенсивности 1 для пикселей со счетом, больше, чем или равный заданному порогу. Все другие пиксели имеют значение 0. Области в бинарном изображении со значением 1 соответствуйте водным областям в кубе данных со значениями MNDWI, больше, чем порог.

bw = mndwiImg > threshold;

Наложите бинарное изображение на RGB, отображают и отображают наложенное изображение.

overlayImg = imoverlay(rgbImg,bw,[0 0 1]);
figure
imagesc(overlayImg)
axis off
title('Water Region Overlaid on RGB Image') 

Figure contains an axes object. The axes object with title Water Region Overlaid on RGB Image contains an object of type image.

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

свернуть все

Введите гиперспектральные данные в виде hypercube объект. DataCube свойство hypercube объект содержит гиперспектральный куб данных.

Имя спектрального индекса, чтобы вычислить в виде вектора символов или строкового скаляра. Можно также задать имена нескольких спектральных индексов как массив ячеек или векторов символов или строковых скаляров. Значение indexNames должно быть одно из имен, перечисленных в этой таблице.

Поддерживаемые спектральные индексы
indexNamesОписание
'CAI'Индекс поглощения целлюлозы
'CMR'Глиняное отношение полезных ископаемых
'EVI'Расширенный индекс растительности
'GVI'Зеленый индекс растительности
'MCARI'Модифицированный индекс отношения поглощения хлорофилла
'MIVI'Модифицированный треугольный индекс растительности
'MNDWI'Измененный нормированный индекс воды различия
'MSI'Индекс недостатка влаги
'NBR'Нормированное отношение записи
'NDBI'Нормированное различие составной индекс
'NDMI'Нормированный индекс грязи различия
'NDNI' Нормированный индекс азота различия
'NDVI'Нормированный индекс растительности различия
'OSAVI'Оптимизированная почва настроила индекс растительности
'PRI'Фотохимический индекс коэффициента отражения
'SR'Простое отношение

Пример: indexNames = 'PRI'indexNames = "PRI"indexNames = {'NDVI,'OSAVI'}indexNames = {"GVI","NDMI"}

Типы данных: char | string

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

  • Если blocksize значение слишком мало, использование памяти функции уменьшает за счет увеличенного времени выполнения.

  • Если blocksize значение является большим или равным входному размеру изображения, время выполнения уменьшает за счет увеличенного использования памяти.

Пример: 'BlockSize',[20 20] задает размер каждого блока данных как 20 20.

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

свернуть все

Спектральные значения индекса гиперспектральных данных, возвращенных как структура с двумя полями: IndexName и IndexImage.

Поля Описание
IndexNameИмена спектральных индексов вычисляются для гиперспектральных данных, возвращенных как строка.
IndexImageИндексируйте изображение, возвращенное как матрица. Каждое пиксельное значение является спектральным значением индекса, вычисленным через все диапазоны. Если размером гиперспектрального куба данных, заданного во входе, является M-by-N-by-C, размером изображения индекса является M-by-N.

Размер структуры output зависит от количества спектральных индексов, вычисленных для гиперспектральных данных.

  • Если второй входной параметр indexNames не задан, выход является массивом структур размера 1 3. Массив структур содержит изображения индекса, соответствующие EVI, MCARI и индексу SR.

  • Если второй входной параметр indexNames задан и длины 1 k, выход является массивом структур размера 1 k. Можно использовать запись через точку, чтобы считать выходные параметры, полученные для каждого спектрального индекса, заданного во входе.

  • Если вторым входным параметром является 'all', выход является массивом структур размера 1 16. Массив структур содержит изображения индекса, соответствующие всем поддерживаемым спектральным индексам.

Типы данных: struct

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

|

Введенный в R2020b