MATLAB è Simulink íà ðóññêîì

https://hub.exponenta.ru/

Обработка сигналов и изображений\image Processing Toolbox

И.М.Журавель "Краткий курс теории обработки изображений"

В оглавление \ К предыдущему разделу

Поиск растительности на мультиспектральных изображениях

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

В примере продемонстрированы различия между красной и ультракрасной составляющими LANDSAT-изображения. Эти различия могут использоваться для идентификации областей, содержащих растительность. Для этого используем изображение части Парижа (Франция), содержащее семь спектральных шаров и представленное в формате Erdas LAN.

Содержание:

  • Шаг 1: Импортирование мультиспектральных шаров из файла изображения.
  • Шаг 2: Улучшение мультиспектральных составляющих с помощью декорреляционного растяжения.
  • Шаг 3: Формирование инфракрасного изображения.
  • Шаг 4: Вычисление признаков растительности на основе проведения арифметических операций с MATLAB-массивом.
  • Шаг 5: Локализация растительности - пороговая обработка изображений.
  • Шаг 6: Анализ спектральных и пространственных составляющих.

Шаг 1: Импортирование мультиспектральных шаров из файла изображения.

LAN-файл paris.lan содержит 7-слойное Landsat-изображение с размерностью 512512. 128-битный заголовок представляет собой последовательность значений пикселей, которые являются метками начала информации в порядке возрастания числа слоев. Они хранятся в виде 8-битных чисел без знака.

Первый шаг заключается в считывании 4, 3 и 2 слоев из LAN-файла с использованием функции MATLAB multibandread. Слои 4, 3 и 2 рассматриваемого изображения получены в инфракрасной области, а также видимой красной и видимой зеленой частях электромагнитного спектра. Когда их представить в виде красной, зеленой и синей составляющей соответственно, то такое RGB-изображение представляет стандартные составляющие инфракрасного изображения. Последний исходный аргумент в функции multibandread описывает соответственно красную и другие составляющие, которые были рассмотрены выше.

CIR = multibandread('paris.lan', [512, 512, 7], 'uint8=>uint8',...
                    128, 'bil', 'ieee-le', {'Band','Direct',[4 3 2]});

Считываемые данные хранятся в виде массива с размерностью 5125123, представленного в формате uint8. По сути, это является RGB-изображением, представленным псевдоцветами. При визуализации такого изображения его красная составляющая соответствует ультракрасному слою, зеленая - красному и синяя - зеленому слою. На изображении CIR река Сена представлена в виде потемнения, а зеленая растительность представлена красным (парки и тени деревьев). Повсюду на изображении низкий контраст, а цвета не насыщены.

figure
imshow(CIR)
title('CIR Composite (Un-enhanced)')
text(size(CIR,2), size(CIR,1) + 15,...
  'Image courtesy of Space Imaging, LLC',...
  'FontSize', 7, 'HorizontalAlignment', 'right')

Шаг 2: Улучшение мультиспектральных составляющих с помощью декорреляционного растяжения.

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

decorrCIR = decorrstretch(CIR, 'Tol', 0.01);
figure
imshow(decorrCIR)
title('CIR Composite with Decorrelation Stretch')

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

Кроме того, из этих изображений можно получить информацию о различных характеристиках растительности. Особенно отчетливо это проявляется в ультракрасной области. Поэтому ультракрасные изображения отображаются красным каналом в нашем представлении и несут информацию о растительности. В качестве примера отметим, что ярко красным цветом представлен парк (маслины г. Булонь), который находится в западной части Парижа около изгиба Сены.

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

Шаг 3: Формирование инфракрасного изображения.

Интересные результаты дает сравнение изображений ультракрасной (отображается красной составляющей) и красной (отображается зеленой составляющей) части спектра. Это удобно для получения некоторых индивидуальных свойств объектов. Это также удобно для преобразования формата uint8 в формат single.

NIR = im2single(CIR(:,:,1));
red = im2single(CIR(:,:,2));

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

figure
imshow(red)
title('Visible Red Band')
figure
imshow(NIR)
title('Near Infrared Band')

Приведем пример с использованием команды plot. Используя эту команду можно попиксельно отобразить разброс точек или, другими словами, график рассеяния (в данном случае синей составляющей), где X-координата определяет значение пикселя в синей составляющей изображения, а Y-координата, соответствующее значение в ультракрасной составляющей.

figure
plot(red, NIR, '+b')
set(gca, 'XLim', [0 1], 'XTick', 0:0.2:1,...
         'YLim', [0 1], 'YTick', 0:0.2:1);
axis square
xlabel('red level')
ylabel('NIR level')
title('NIR vs. Red Scatter Plot')

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

Шаг 4: Вычисление признаков растительности на основе проведения арифметических операций с MATLAB-массивом.

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

ndvi = (NIR - red) ./ (NIR + red);

Отметим, что система MATLAB позволяет проводить описанную выше операцию с помощью одной командной строки.

Переменная ndvi представляется в виде двумерного массива в формате single с теоретическим диапазоном [-1 1]. Этот теоретический диапазон нужно описать при визуализации данных в виде полутонового изображения.

figure
imshow(ndvi,'DisplayRange',[-1 1])
title('Normalized Difference Vegetation Index')

Река Сена отображается на ndvi-изображении в виде потемнения. Большие светлые области у левого и правого края изображения отображают парки.

Шаг 5: Локализация растительности - пороговая обработка изображений.

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

threshold = 0.4;
q = (ndvi > threshold);

В процентном соотношении это можно представить так

100 * numel(NIR(q(:))) / numel(NIR)
ans =
 
    5.2204
 

или 5 процентов.

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

figure
imshow(q)
title('NDVI with Threshold Applied')

Шаг 6: Анализ спектральных и пространственных составляющих.

При помощи спектрального и пространственного представления, а также соответствующей пороговой обработки можно локализировать объекты интереса и представить их в более контрастном виде. Для этого используется не только пороговая обработка соответствующих составляющих изображения, но и анализ графика рассеяния.

% Создание изображения с характеристическим отношением 12.
h = figure;
p = get(h,'Position');
set(h,'Position',[p(1,1:3),p(3)/2])
subplot(1,2,1)
% Создание графика рассеяния.
plot(red, NIR, '+b')
hold on
plot(red(q(:)), NIR(q(:)), 'g+')
set(gca, 'XLim', [0 1], 'YLim', [0 1])
axis square
xlabel('red level')
ylabel('NIR level')
title('NIR vs. Red Scatter Plot')
% Отображение NDVI-изображения.
subplot(1,2,2)
imshow(q)
set(h,'Colormap',[0 0 1; 0 1 0])
title('NDVI with Threshold Applied')

Сопутствующие функции: decorrstretch, im2single, ipexlanstretch, landsatdemo, multibandread.

В оглавление \ К предыдущему разделу


Поиск по сайту:


Система Orphus