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