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