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

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

Создайте Color Band Scatterplot

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

[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]). The 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.