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

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

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

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

Чтобы задать мудрую полосой статистику, можно использовать целое оригинальное изображение или, с опцией subset, любым выбранным подмножеством ее.

Простое протяжение декорреляции

Этот пример показывает, как выполнить декорреляцию, простирающуюся к трем цветным полосам изображения. Цветная полоса scatterplot изображений показывает, как полосы декоррелируются и компенсируются.

Выполните фрагмент декорреляции

Считайте изображение из библиотеки изображений, доступных в папке 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')

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

Создайте цветную полосу Scatterplot

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

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

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

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

Отобразите цвет scatterplot оригинального изображения. Затем отобразите цвет scatterplot изображения после протяжения декорреляции.

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
plot3(rB(:),gB(:),bB(:),'.')
grid on
xlabel('Red (Band 3)')
ylabel('Green (Band 2)')
zlabel('Blue (Band 1)')
title('Color Scatterplot After Decorrelation Stretch')

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

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