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