Примените фрагмент декорреляции к многоканальному изображению
S = decorrstretch(A)
S = decorrstretch(A,Name,Value)
применяет фрагмент декорреляции к RGB или многоспектральному изображению S
= decorrstretch(A
)A
и возвращает результат в S
. Среднее значение и отклонение в каждой полосе S
эквивалентны в A
.
Основная цель фрагмента декорреляции является визуальным улучшением. Декорреляция, простирающаяся, является способом улучшить цветовые различия в изображении.
пары "имя-значение" использования, чтобы управлять аспектами фрагмента декорреляции, такими как целевое среднее и стандартное отклонение каждой полосы.S
= decorrstretch(A
,Name,Value
)
Результаты прямой декорреляции (без контрастной опции фрагмента) могут включать значения, которые выходят за пределы числовой области значений, поддержанной классом 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)
и читая справа налево, вы видите, что декорреляция простирается:
Удаляет среднее значение из каждой полосы
Нормирует каждую полосу ее стандартным отклонением (только основанный на корреляции метод)
Вращает полосы в eigenspace Corr
или Cov
Применяет фрагмент S
в eigenspace, оставляя изображение декоррелируемым и нормированным в eigenspace
Вращается назад к исходному пробелу полосы, где полосы остаются декоррелируемыми и нормированными
Перешкалы каждая полоса согласно SIGMA_target
Восстанавливает среднее значение в каждой полосе.