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