exponenta event banner

ndvi

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

    Описание

    пример

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

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

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

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

    Примечание

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

    Примечание

    Для выполнения этой функции требуется библиотека гиперспектральных изображений Toolbox™ обработки изображений. Можно установить библиотеку гиперспектральных изображений панели инструментов обработки изображений из проводника надстроек. Дополнительные сведения об установке надстроек см. в разделе Получение надстроек и управление ими.

    Примеры

    свернуть все

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

    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, указывают на отсутствие растительности. Выполнение пороговой обработки изображения NDVI для сегментации областей растительности. Укажите пороговое значение.

    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 = NIR RNIR + R,

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

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

    Ссылки

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

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