Этот пример показывает некоторые основные композиции изображений и методы улучшения для использования с мультиспектральными данными. Часто необходимо усилить мультиспектральное сияние или данные о отражении, чтобы создать изображение, подходящее для визуальной интерпретации. В примере используются тематические изображения Landsat mapper, охватывающие часть Парижа, Франция. Семь спектральных полос хранятся в одном файле в формате Erdas LAN. Охватываемые концепции включают:
Чтение мультиспектральных данных из файлов LAN Erdas
Построение цветовых композитов из различных полос комбинаций
Улучшение изображений с контрастным растяжением
Улучшение изображений с декоративной натяжкой
Использование скаттерплотов
Файл LAN, paris.lan
, содержит 7-диапазонное изображение 512 на 512 Landsat. За 128-байтовым заголовком следуют пиксельные значения, которые перемежаются полосой пропускания линией (BIL) в порядке увеличения количества полос. Они хранятся как беззнаковые 8-битные целые числа, в малоэндовом порядке байтов.
Считывайте полосы 3, 2 и 1 из файла LAN с помощью функции MATLAB ® multibandread
. Эти полосы охватывают видимую часть спектра. Когда они отображаются на красный, зеленый и синий плоскости, соответственно, изображения RGB, результатом является стандартный композит truecolor. Конечный входной параметр для multibandread
определяет, какие полосы данных считывать и в каком порядке, чтобы можно было создать композитный файл RGB за один шаг.
truecolor = multibandread('paris.lan',[512, 512, 7],'uint8=>uint8', ... 128,'bil','ieee-le',{'Band','Direct',[3 2 1]});
Композитный материал truecolor имеет очень мало контраста, и цвета не сбалансированы.
imshow(truecolor) title('Truecolor Composite (Un-Enhanced)') text(size(truecolor,2),size(truecolor,1)+15,... 'Image courtesy of Space Imaging, LLC',... 'FontSize',7,'HorizontalAlignment','right')
При просмотре гистограммы красной полосы, например, можно увидеть, что данные сосредоточены в небольшой части доступной динамической области значений. Это одна из причин, почему композитный труколор выглядит тусклым.
imhist(truecolor(:,:,1))
title('Histogram of the Red Band (Band 3)')
Другой причиной тусклого внешнего вида композита является то, что видимые полосы сильно коррелируют друг с другом. Двух- и трехполосные рассеянные графики являются отличным способом оценить степень корреляции среди спектральных полос. Вы можете сделать их легко, просто используя plot
. Линейный тренд красно-зелено-синего скаттерплота указывает, что видимые полосы сильно коррелируют. Это помогает объяснить монохроматический внешний вид неусиленного композита truecolor.
r = truecolor(:,:,1); g = truecolor(:,:,2); b = truecolor(:,:,3); plot3(r(:),g(:),b(:),'.') grid('on') xlabel('Red (Band 3)') ylabel('Green (Band 2)') zlabel('Blue (Band 1)') title('Scatterplot of the Visible Bands')
Когда вы используете imadjust
чтобы применить линейное контрастное растяжение к составному изображению truecolor, функции легче распознать.
stretched_truecolor = imadjust(truecolor,stretchlim(truecolor));
imshow(stretched_truecolor)
title('Truecolor Composite after Contrast Stretch')
Гистограмма красной полосы после применения контрастного растяжения показывает, что данные были распространены на гораздо больше доступную динамическую область значений. Создайте гистограмму всех значений красных пикселей на изображении при помощи imhist
функция.
imhist(stretched_truecolor(:,:,1))
title('Histogram of Red Band (Band 3) after Contrast Stretch')
Другой способ улучшения композиционного материала truecolor заключается в использовании декоративного растяжения, которое улучшает разделение цвета через сильно коррелированные каналы. Использование decorrstretch
для выполнения декорреляционного растяжения. Задайте необязательную пару "имя-значение" 'Tol',0.1
для выполнения линейного контрастного растяжения после декорреляционного растяжения. Опять же, функции стали гораздо более четко видны, но по-другому. Спектральные различия по сцене были преувеличены. Заметным примером является площадь зеленого цвета на левом крае, которая выглядит черной в контрастно-растянутом композите. Эта зеленая зона является Буа де Булонь, большой парк на западном ребре Парижа.
decorrstretched_truecolor = decorrstretch(truecolor,'Tol',0.01); imshow(decorrstretched_truecolor) title('Truecolor Composite after Decorrelation Stretch')
Как ожидалось, рассеянный график, следующий за декоративным растяжением, показывает сильное уменьшение корреляции.
r = decorrstretched_truecolor(:,:,1); g = decorrstretched_truecolor(:,:,2); b = decorrstretched_truecolor(:,:,3); plot3(r(:),g(:),b(:),'.') grid('on') xlabel('Red (Band 3)') ylabel('Green (Band 2)') zlabel('Blue (Band 1)') title('Scatterplot of the Visible Bands after Decorrelation Stretch')
Так же, как и в случае видимых полос, информация из полос Landsat, охватывающих невидимые фрагменты спектра, может быть просмотрена путем создания и улучшения композитных изображений RGB. Ближняя инфракрасная (NIR) полоса (Полоса 4) важна из-за высокой отражательной способности хлорофилла в этой части спектра. Еще более полезно в сочетании с видимыми красным и зеленым (полосы 3 и 2 соответственно) формировать цветное инфракрасное (CIR) композитное изображение. Цветные инфракрасные (CIR) композиты обычно используются для идентификации растительности или оценки ее состояния роста и/или здоровья.
Создайте композит CIR путем чтения из исходного файла LAN и составления изображения RGB, которое преобразует полосы 4, 3 и 2 в красные, зеленые и синие, соответственно.
CIR = multibandread('paris.lan',[512, 512, 7],'uint8=>uint8', ... 128,'bil','ieee-le',{'Band','Direct',[4 3 2]});
Даже несмотря на то, что ближняя инфракрасная полоса (NIR) полосы 4 меньше коррелирует с видимыми полосами, чем видимые полосы друг с другом, растяжение декорреляции облегчает просмотр многих функций. Свойство цветных инфракрасных композитов заключается в том, что они выглядят красными в областях с высокой плотностью растительности (хлорофилл). Заметьте, что парк Bois de Boulogne является красным в композите CIR, что согласуется с его зеленым внешним видом в растянутой декорацией композите truecolor.
stretched_CIR = decorrstretch(CIR,'Tol',0.01); imshow(stretched_CIR) title('CIR after Decorrelation Stretch')
decorrstretch
| imadjust
| imhist
| multibandread
| plot3
| stretchlim