decorrstretch

Примените фрагмент декорреляции к многоканальному изображению

Описание

S = decorrstretch(A) применяет фрагмент декорреляции к RGB или многоспектральному изображению A и возвращает результат в S. Среднее значение и отклонение в каждой полосе S эквивалентны в A.

Основная цель фрагмента декорреляции является визуальным улучшением. Декорреляция, простирающаяся, является способом улучшить цветовые различия в изображении.

пример

S = decorrstretch(A,Name,Value) пары "имя-значение" использования, чтобы управлять аспектами фрагмента декорреляции, такими как целевое среднее и стандартное отклонение каждой полосы.

Примеры

свернуть все

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

Считайте изображение в рабочую область.

[X, map] = imread('forest.tif');

Примените декорреляцию, расширяющую использование decorrstretch.

S = decorrstretch(ind2rgb(X,map),'tol',0.01);

Отобразите оригинальное изображение и улучшенное изображение.

figure
imshow(X,map)
title('Original Image')

figure
imshow(S)
title('Enhanced Image')

Входные параметры

свернуть все

Отобразите, чтобы быть улучшенными, заданными как изображение RGB или многоспектральное изображение размера m-by-n-by-nBands. Для изображения RGB, nBands = 3.

Типы данных: single | double | int16 | uint8 | uint16

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Mode','covariance'

Метод декорреляции, заданный как разделенная запятой пара, состоящая из 'Mode' и следующих значений.

  • 'correlation' — Использует собственное разложение корреляционной матрицы от полосы к полосе.

  • 'covariance' — Использует собственное разложение ковариационной матрицы от полосы к полосе.

Типы данных: char | string

Целевые средние значения выходных полос, заданных как разделенная запятой пара, состоящая из 'TargetMean' и действительный скаляр или вектор длины nBands. По умолчанию, TargetMean 1 nBands вектор, содержащий демонстрационное среднее значение каждой полосы, которая сохраняет мудрые полосой средние значения до и после фрагмента декорреляции.

TargetMean должен иметь класс double, но использует те же значения в качестве пикселей во входном изображении. Например, если A класс uint8, затем 127.5 была бы рыночная стоимость. Если значения должны быть зафиксированы к стандартной области значений класса ввода/вывода изображений, она может повлиять на результаты.

Типы данных: double

Целевые значения стандартного отклонения выходных полос, заданных как разделенная запятой пара, состоящая из 'TargetSigma' и положительная скалярная величина или вектор длины nBands. По умолчанию, TargetSigma 1 nBands вектор, содержащий демонстрационное стандартное отклонение каждой полосы, которая сохраняет мудрое полосой отклонение до и после фрагмента декорреляции. Целевое стандартное отклонение проигнорировано для универсальной формы (нулевое отклонение) полосы.

TargetSigma должен быть класс double, но использует те же значения в качестве пикселей во входном изображении. Например, если A имеет класс uint8, затем 50.0 была бы рыночная стоимость.

Типы данных: double

Линейный контрастный фрагмент после фрагмента декорреляции, заданного как разделенная запятой пара, состоящая из 'Tol' и числовой скаляр или числовой вектор с 2 элементами класса double. Определение значения Tol заменяет значение TargetMean или TargetSigma. Если вы не задаете Tol, затем decorrstretch по умолчанию не выполняет линейный контрастный фрагмент.

Tol имеет то же значение как в stretchlim, где Tol = [LOW_FRACT HIGH_FRACT] задает часть изображения, чтобы насыщать в низкой и высокой интенсивности. Если вы задаете Tol как скалярное значение, затем LOW_FRACT = Tol и HIGH_FRACT = 1 - Tol, насыщение равных частей в низкой и высокой интенсивности.

Маленькие корректировки Tol может строго влиять на общий вид выхода.

Типы данных: double

Подмножество A использованный для расчета средние значения полосы, ковариация и корреляция, заданная, когда, массив ячеек, содержащий два массива пикселя, преобразовывает в нижний индекс {rowsubs, colsubs}. rowsubs и colsubs векторы или матрицы соответствия с размером, которые содержат индексы строки и столбца, соответственно.

Используйте эту опцию, чтобы уменьшать объем расчета, помешать недопустимым или непредставительным пикселям влиять на преобразование или обоих. Например, можно использовать rowsubs и colsubs исключить области облачного покрова. Если не заданный, decorrstretch использование все пиксели в A.

Типы данных: double

Выходные аргументы

свернуть все

Декорреляция расширила изображение, возвращенное как числовой массив, одного размера и класс как входное изображение, A.

Советы

  • Результаты прямой декорреляции (без контрастной опции фрагмента) могут включать значения, которые выходят за пределы числовой области значений, поддержанной классом uint8 или uint16 (отрицательные величины или значения, превышающие 255 или 65535, соответственно). В этих случаях, decorrstretch фиксирует его выход к поддерживаемой области значений.

  • Для класса double, decorrstretch фиксирует выход только, когда вы вводите значение для Tol, определение линейного контрастного фрагмента, сопровождаемого путем зажима к интервалу [0 1].

  • Дополнительные параметры не взаимодействуют, за исключением того, что линейный фрагмент обычно изменяет и мудрые полосой средние значения и мудрые полосой стандартные отклонения. Таким образом, в то время как можно задать TargetMean и TargetSigma наряду с Tol, их эффекты будут изменены.

Алгоритмы

Фрагмент декорреляции является линейной, мудрой пикселем операцией, в которой определенные параметры зависят от значений фактической и желаемой (целевой) статистики изображений. Векторный a содержание значения данного пикселя в каждой полосе входа отображает A преобразовывается в соответствующий пиксель b в выходном изображении B можно следующим образом:

b = T * (a - m) + m_target.

a и b nBands- 1 вектор, T nBands- nBands матрица и m и m_target nBands- 1 векторизовал таким образом что

  • m содержит среднее значение каждой полосы в изображении, или в подмножестве пикселей изображения, которые вы задаете

  • m_target содержит желаемое выходное среднее значение в каждой полосе. Выбором по умолчанию является m_target = m.

Матрица линейного преобразования T зависит от следующего:

  • Выборочная ковариация от полосы к полосе изображения, или подмножества изображения, которое вы задаете (то же подмножество, как используется в m), представленный матричным Cov

  • Желаемое выходное стандартное отклонение в каждой полосе. Это удобно представлено диагональной матрицей, SIGMA_target. Выбором по умолчанию является SIGMA_target = SIGMA, где SIGMA диагональная матрица, содержащая демонстрационное стандартное отклонение каждой полосы. SIGMA должен быть вычислен из тех же пикселей, которые использовались в m и Cov, что означает просто что:

    SIGMA(k,k) = sqrt(Cov(k,k), k = 1,..., nBands).

Cov\sigma, и SIGMA_target nBands- nBands, как матрицы Corr\lambda, и V, заданный ниже.

Первый шаг в вычислении T должен выполнить собственное разложение любого ковариационная матрица Cov или корреляционная матрица

Corr = inv(SIGMA) * Cov * inv(SIGMA).

  • В основанном на корреляции методе, Corr анализируется: Corr = V LAMBDA V'.

  • В основанном на ковариации методе, Cov анализируется: Cov = V LAMBDA V'.

LAMBDA диагональная матрица собственных значений и V ортогональная матрица, которая преобразовывает любой Corr или Cov к LAMBDA.

Следующий шаг должен вычислить фактор фрагмента для каждой полосы, которая является обратным квадратным корнем из соответствующего собственного значения. Удобно задать диагональный матричный S содержа факторы фрагмента, такие, что:

S(k,k) = 1 / sqrt(LAMBDA(k,k)).

Наконец, матричный T вычисляется из также

T = SIGMA_target V S V' inv(SIGMA) (основанный на корреляции метод)

или

T = SIGMA_target V S V' (основанный на ковариации метод).

Эти два метода дают к идентичным результатам, если отклонения полосы универсальны.

Замена T в выражение для b:

b = m_target + SIGMA_target V S V' inv(SIGMA) * (a - m)

или

b = m_target + SIGMA_target V S V' * (a - m)

и читая справа налево, вы видите, что декорреляция простирается:

  1. Удаляет среднее значение из каждой полосы

  2. Нормирует каждую полосу ее стандартным отклонением (только основанный на корреляции метод)

  3. Вращает полосы в eigenspace Corr или Cov

  4. Применяет фрагмент S в eigenspace, оставляя изображение декоррелируемым и нормированным в eigenspace

  5. Вращается назад к исходному пробелу полосы, где полосы остаются декоррелируемыми и нормированными

  6. Перешкалы каждая полоса согласно SIGMA_target

  7. Восстанавливает среднее значение в каждой полосе.

Смотрите также

|

Представлено до R2006a