exponenta event banner

Улучшение цветоделения с помощью растяжения декорреляции

Растягивание декорреляции усиливает цветоделение изображения со значительной межполосной корреляцией. Преувеличенные цвета улучшают визуальную интерпретацию и облегчают различение признаков. Вы применяете декорреляцию растяжения с decorrstretch функция. Сведения о добавлении дополнительного линейного контрастного растяжения к декорреляционному растягиванию см. в разделе Линейное растягивание контрастности.

Количество цветовых полос, NBANDS, на изображении обычно составляет три. Но можно применить растягивание декорреляции независимо от количества цветовых полос.

Исходные цветовые значения изображения сопоставляются с новым набором цветовых значений с более широким диапазоном. Интенсивности цвета каждого пикселя преобразуются в собственную цветовую область ковариационной или корреляционной матрицы NBANDS-by-NBANDS, растягиваются для выравнивания дисперсий полосы, затем преобразуются обратно в исходные цветовые полосы.

Для определения полосовой статистики можно использовать все исходное изображение или, с помощью subset , любое выбранное подмножество.

Простое растягивание декорреляции

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

Выполнение растяжения декорреляции

Чтение изображения из библиотеки изображений, доступных в imdata папка. В этом примере используется изображение LANDSAT реки Литл-Колорадо. Изображение имеет семь полос, но читается только в трех видимых цветах.

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

Выполните растягивание декорреляции.

B = decorrstretch(A);

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

imshow(A)
title('Little Colorado River Image')

Figure contains an axes. The axes with title Little Colorado River Image contains an object of type image.

imshow(B)
title('Little Colorado River Image After Decorrelation Stretch')

Figure contains an axes. The axes with title Little Colorado River Image After Decorrelation Stretch contains an object of type image.

Создание скеттерплота цветовой области

Сначала разделите три цветовых канала исходного изображения.

[rA,gA,bA] = imsplit(A);

Разделите три цветовых канала изображения после растяжения декорреляции.

[rB,gB,bB] = imsplit(B);

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

figure
plot3(rA(:),gA(:),bA(:),'.')
grid on
xlabel('Red (Band 3)')
ylabel('Green (Band 2)')
zlabel('Blue (Band 1)')
title('Color Scatterplot Before Decorrelation Stretch')

Figure contains an axes. The axes with title Color Scatterplot Before Decorrelation Stretch contains an object of type line.

figure
plot3(rB(:),gB(:),bB(:),'.')
grid on
xlabel('Red (Band 3)')
ylabel('Green (Band 2)')
zlabel('Blue (Band 1)')
title('Color Scatterplot After Decorrelation Stretch')

Figure contains an axes. The axes with title Color Scatterplot After Decorrelation Stretch contains an object of type line.

Линейное растяжение контрастности

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

См. раздел stretchlim для получения дополнительной информации о расчете пределов насыщения.

Примечание

Можно применить линейное контрастное растяжение как отдельную операцию после выполнения декорреляционного растяжения, используя stretchlim и imadjust. Однако эта альтернатива часто дает более низкие результаты для uint8 и uint16 изображения, так как значения пикселей должны быть ограничены до [0 255] (или [0 65535]). Tol опция в decorrstretch обходит это ограничение.

Декорреляционное растяжение с линейным контрастным растяжением

Прочитайте три видимых цветовых канала изображения LANDSAT реки Литл-Колорадо.

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

Примените декорреляционное растягивание, задав линейное контрастное растягивание. Установка значения 'Tol' 0.01 отображает преобразованный цветовой диапазон внутри каждой полосы на нормализованный интервал между 0.01 и 0.99, насыщая 2%.

C = decorrstretch(A,'Tol',0.01);
imshow(C)
title(['Little Colorado River After Decorrelation Stretch and ',...
  'Linear Contrast Stretch'])

Figure contains an axes. The axes with title Little Colorado River After Decorrelation Stretch and Linear Contrast Stretch contains an object of type image.