decorrstretch

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

Синтаксис

S = decorrstretch(A)
S = decorrstretch(A,Name,Value)

Описание

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

Типы данных: 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-by-1 векторы, T является nBands-by-nBands матрица, и m и m_target является nBands-by-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-by-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