ndvi

Нормализованный индекс растительности

    Описание

    пример

    output = ndvi(hcube) вычисляет нормированное значение индекса растительности (NDVI) для каждого пикселя в кубе данных и возвращает изображение NDVI. Изображение NDVI отображает области растительного покрова входных гиперспектральных данных. Функция вычисляет значение NDVI с помощью красной (R) полосы и ближней инфракрасной (NIR) полосы изображений в кубе данных. The ndvi функция использует значения отражения полосы 670 нм и 800 нм для изображений красного и NIR полосы соответственно.

    output = ndvi(hcube,'BlockSize',blocksize) задает размер блока для блочной обработки куба гиперспектральных данных с помощью аргумента пары "имя-значение" 'BlockSize'.

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

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

    Примечание

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

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('indian_pines.dat');

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

    ndviImg = ndvi(hcube);

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

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

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

    fig = figure('Position',[0 0 1200 600]);
    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.1 0.4 0.8]);
    imagesc(ndviImg,'Parent',axes2)
    colorbar
    title('NDVI Image')

    Растительные области обычно имеют значения NDVI от 0,2 до 0,8. Значения NDVI, меньше или равные 0,2, указывают на отсутствие растительности. Выполнить порог изображения НДВИ для сегментации растительных районов. Задайте пороговое значение.

    threshold = 0.2;

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

    bw = ndviImg > threshold;

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

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

    Вычислите растительный покров на основе общего количества пикселей в спектральной полосе и количества пикселей со значением NDVI, больше 0,2.

    numVeg = find(bw == 1);
    imgSize = size(hcube.DataCube,1)*size(hcube.DataCube,2);
    vegetationCover = length(numVeg)/imgSize
    vegetationCover = 0.5696
    

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

    свернуть все

    Входные гиперспектральные данные, заданные как hypercube объект. Функции считывают кубик гиперспектральных данных из DataCube свойство объекта, а затем вычисляет значение NDVI каждого пикселя.

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

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

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

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

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

    свернуть все

    Выход изображение NDVI, возвращенное как матрица размера M -by- N. M и N являются пространственными размерностями куба входных данных. Если тип данных куба входных данных double, тип выходных данных также double. В противном случае тип выходных данных single.

    Функция вычисляет значение NDVI для каждого пикселя как

    NDVI=NIRRNIR+R,

    и значения находятся в области значений [-1, 1]. Значение, близкое к 1, указывает на здоровую растительность, 0 указывает на нездоровую растительность, а -1 указывает на отсутствие растительности.

    Типы данных: single | double

    Ссылки

    [1] Haboudane, D «. Гиперспектральные индексы растительности и новые алгоритмы предсказания зеленого LAI полог сельскохозяйственных культур: моделирование и валидация в контексте точного сельского хозяйства». Дистанционное зондирование окружения 90, № 3 (15 апреля 2004 года): 337-52. https://doi.org/10.1016/j.rse.2003.12.013.

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