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