exponenta event banner

Определение регионов растительности с использованием интерактивного порогового значения NDVI

В этом примере показано, как идентифицировать типы участков растительности на гиперспектральном изображении с помощью интерактивного порогового значения нормализованной карты индекса различий растительности (NDVI). Карта NDVI гиперспектрального набора данных указывает плотность растительности в различных областях гиперспектральных данных. Значение NDVI вычисляется с использованием изображений ближней инфракрасной области (NIR) и видимой красной (R) спектральной полосы из гиперспектрального куба данных.

NDVI = (NIR-R) (NIR + R)

Значение NDVI пикселя является скаляром от -1 до 1. Пикселы в областях со здоровой или густой растительностью отражают большее количество NIR-света, что приводит к высоким значениям NDVI. Пиксели в областях с нездоровой растительностью или бесплодной землей поглощают больше NIR-света, что приводит к низким или отрицательным значениям NDVI. На основании его значения NDVI можно идентифицировать растительность в регионе как густую растительность, умеренную растительность, разреженную растительность или без растительности. Это типичный диапазон значений NDVI для каждого типа области:

  • Густая растительность - больше или равна 0,6

  • Умеренная растительность - в диапазоне [0,4, 0,6)

  • Разреженная растительность - в диапазоне [0,2 0,4)

  • Растительность отсутствует - ниже 0,2

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

Считывание гиперспектральных данных

Считывание гиперспектральных данных из файла формата ENVI в рабочую область. В этом примере используется выборка данных из набора данных Pavia, который содержит как растительность, так и бесплодные области.

hcube = hypercube('paviaU.dat','paviaU.hdr');

Вычислить NDVI

Вычислите значение NDVI для каждого пикселя в кубе данных с помощью ndvi функция. Функция выводит 2-D изображение, в котором значение каждого пикселя является значением NDVI для соответствующего пикселя в гиперспектральном кубе данных.

ndviImg = ndvi(hcube);

Определение растительных регионов с использованием пороговых значений

Определение различных областей в гиперспектральных данных с помощью многоуровневого порогового значения. Определите матрицу меток для назначения значений меток пикселям на основе указанных пороговых значений. Можно установить пороговые значения на основе вычисленных значений NDVI.

  • Значение метки 1 - укажите пороговое значение как 0,6 и найдите пикселы со значениями NDVI, большими или равными пороговому значению. Это плотные пиксели растительности.

  • Значение метки 2 - укажите нижнее пороговое значение 0,4 и верхнее пороговое значение 0,6. Найдите пикселы со значениями NDVI, больше или равными 0,4 и меньше 0,6. Это умеренные пиксели растительности.

  • Значение метки 3 - укажите нижний пороговый предел 0,2 и верхний пороговый предел 0,4. Найдите пикселы со значениями NDVI больше или равны 0,2 и меньше 0,4. Это разреженные пиксели растительности.

  • Значение метки 4 - Укажите пороговое значение 0,2 и найдите пикселы со значениями NDVI меньше порогового значения. Это не пиксели растительности.

L = zeros(size(ndviImg));
L(ndviImg >= 0.6) = 1;
L(ndviImg >= 0.4 & ndviImg < 0.6) = 2;
L(ndviImg >= 0.2 & ndviImg < 0.4) = 3;
L(ndviImg < 0.2) = 4;

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

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

Определите карту цветов для отображения каждого значения в матрице меток различным цветом. Наложение матрицы меток на изображение RGB.

cmap = [0 1 0; 0 0 1; 1 1 0; 1 0 0];
overlayImg = labeloverlay(rgbImg,L,'Colormap',cmap);

Создание интерактивного интерфейса для пороговых значений NDVI

Чтобы создать интерактивный интерфейс, сначала создайте окно фигуры с помощью uifigure функция. Затем добавьте две панели в окно рисунка для отображения входного изображения и наложенного изображения бок о бок.

h = uifigure('Name','Interactive NDVI Thresholding','Position',[200,50,1000,700]);

viewPanel1 = uipanel(h,'Position',[2 220 400 450],'Title','Input Image');
ax1 = axes(viewPanel1);
image(rgbImg,'Parent',ax1)

viewPanel2 = uipanel(h,'Position',[400 220 400 450],'Title','Types of Vegetation Regions in Input Image');
ax2 = axes(viewPanel2);
image(overlayImg,'Parent',ax2)

Аннотировать окно фигуры цветом для каждой метки и связанной с ней плотностью растительности. Значение цветовой карты для густой растительности - зелёный, умеренной растительности - синий, разреженной растительности - жёлтый, а никакой растительности - красный.

annotation(h,'rectangle',[0.82 0.82 0.03 0.03],'Color',[0 1 0],'FaceColor',[0 1 0]);
annotation(h,'rectangle',[0.82 0.77 0.03 0.03],'Color',[0 0 1],'FaceColor',[0 0 1]);
annotation(h,'rectangle',[0.82 0.72 0.03 0.03],'Color',[1 1 0],'FaceColor',[1 1 0]);
annotation(h,'rectangle',[0.82 0.67 0.03 0.03],'Color',[1 0 0],'FaceColor',[1 0 0]);
annotation(h,'textbox',[0.85 0.80 0.9 0.05],'EdgeColor','None','String','Dense Vegetation');
annotation(h,'textbox',[0.85 0.75 0.9 0.05],'EdgeColor','None','String','Moderate Vegetation');
annotation(h,'textbox',[0.85 0.70 0.9 0.05],'EdgeColor','None','String','Sparse Vegetation');
annotation(h,'textbox',[0.85 0.65 0.9 0.05],'EdgeColor','None','String','No Vegetation');

Создание ползунков для интерактивного изменения пороговых значений. Использовать uislider добавление ползунка для регулировки минимального порогового значения и ползунка для регулировки максимального порогового значения.

slidePanel1 = uipanel(h,'Position',[400,120,400,70],'Title','Minimum Threshold Value');
minsld = uislider(slidePanel1,'Position',[30,40,350,3],'Value',-1,'Limits',[-1 1],'MajorTicks',-1:0.4:1);
slidePanel2 = uipanel(h,'Position',[400,30,400,70],'Title','Maximum Threshold Value');
maxsld = uislider(slidePanel2,'Position',[30,35,350,3],'Value',1,'Limits',[-1 1],'MajorTicks',-1:0.4:1);

Figure Interactive NDVI Thresholding contains 2 axes and other objects of type uipanel. Axes 1 contains an object of type image. Axes 2 contains an object of type image.

Изменить порог в интерактивном режиме

Используйте функцию ndviThreshold для изменения минимального и максимального пороговых пределов. При перемещении ползунка и отпускании кнопки мыши ValueChangedFcn обратный вызов обновляет значение ползунка и устанавливает значение ползунка в качестве нового порога. Вы должны позвонить ndviThreshold функция отдельно для ползунка минимального порога и ползунка максимального порога. Измените пороговые пределы, настроив ползунки. Это позволяет проверять типы растительных областей в пределах заданных пороговых значений.

minsld.ValueChangedFcn = @(es,ed) ndviThreshold(minsld,maxsld,ndviImg,rgbImg,ax2,cmap);
maxsld.ValueChangedFcn = @(es,ed) ndviThreshold(minsld,maxsld,ndviImg,rgbImg,ax2,cmap);

ndviThreshold функция генерирует новую матрицу меток, используя обновленные пороговые значения, и динамически обновляет наложенное изображение в окне рисунка.

Создание функции обратного вызова

Создайте функцию обратного вызова для интерактивного изменения пороговых значений и динамического обновления результатов.

function ndviThreshold(minsld,maxsld,ndviImg,rgbImg,ax2,cmap)
L = zeros(size(ndviImg));
minth = round(minsld.Value,2);
maxth = round(maxsld.Value,2);

if minth > maxth
    error('Minimum threshold value must be less than the maximum threshold value')
end  

if minth >= 0.6
    % Label 1 for Dense Vegetation
    L(ndviImg >= minth & ndviImg <= maxth) = 1;
    overlayImg = labeloverlay(rgbImg,L,'Colormap',cmap);
elseif minth >= 0.4 && minth < 0.6
    % Label 1 for Dense Vegetation
    % Label 2 for Moderate Vegetation
    if maxth >= 0.6
        L(ndviImg >= minth & ndviImg < 0.6) = 2;
        L(ndviImg >= 0.6 & ndviImg <= maxth) = 1;
    else
        L(ndviImg >= minth & ndviImg < maxth) = 2;
    end
    overlayImg = labeloverlay(rgbImg,L,'Colormap',cmap);
elseif minth >= 0.2 && minth <0.4
    % Label 1 for Dense Vegetation
    % Label 2 for Moderate Vegetation
    % Label 3 for Sparse vegetation
    if maxth < 0.4
        L(ndviImg >= minth & ndviImg <= maxth) = 3;
    elseif maxth >=0.4 && maxth < 0.6
        L(ndviImg >= minth & ndviImg < 0.4) = 3;
        L(ndviImg >= 0.4 & ndviImg <= maxth) = 2;
    elseif maxth >= 0.6
        L(ndviImg >= minth & ndviImg < 0.4) = 3;
        L(ndviImg >= 0.4 & ndviImg < 0.6) = 2;
        L(ndviImg >= 0.6 & ndviImg <= maxth) = 1;
    end
    overlayImg = labeloverlay(rgbImg,L,'Colormap',cmap);
elseif minth < 0.2
    % Label 1 for Dense Vegetation
    % Label 2 for Moderate Vegetation
    % Label 3 for Sparse vegetation
    % Label 4 for No Vegetation
    L(ndviImg >= minth & ndviImg < 0.2) = 4;
    
    if maxth >= 0.6
        L(ndviImg >= 0.6 & ndviImg <= maxth) = 1;
        L(ndviImg >= 0.4 & ndviImg < 0.6) = 2;
        L(ndviImg >= 0.2 & ndviImg < 0.4) = 3;
    elseif maxth >=0.4 && maxth < 0.6
        L(ndviImg >= 0.4 & ndviImg <= maxth) = 2;
        L(ndviImg >= 0.2 & ndviImg < 0.4) = 3;
    elseif maxth >=0.2 && maxth < 0.4
        L(ndviImg >= maxth & ndviImg < 0.4) = 3;
    end
    overlayImg = labeloverlay(rgbImg,L,'Colormap',cmap);
elseif minth == maxth
    if maxth < 0.2
        L(ndviImg == minth) = 4;
    elseif maxth >=0.4 && maxth < 0.6
        L(ndviImg == maxth) = 2;
    elseif maxth >=0.2 && maxth < 0.4
        L(ndviImg == maxth) = 3;
    elseif maxth >= 0.6
        L(ndviImg == maxth) = 1;
    end
    overlayImg = labeloverlay(rgbImg,L,'Colormap',cmap);
end
% Display the overlay image.
image(overlayImg,'parent',ax2);
% Store updated labelled image
minsld.UserData = L;
maxsld.UserData = L;
end

Ссылки

[1] Дж.У. Руз, Р.Х. Хасс, Дж.А. Шелл и Д.В. Диринг. «Мониторинг систем растительности на Великих равнинах с помощью ERTS». На слушаниях третьего технологического спутника земных ресурсов - 1 симпозиум, 1:309-17. Гринбелт, SP-351 НАСА, Вашингтон, округ Колумбия, 1973 год.

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

См. также

| | | | |

Связанные темы