decorrstretch

Применить удлинение декорреляции к многоканальному изображению

Описание

S = decorrstretch(A) применяет декоративное растяжение к RGB или мультиспектральному изображению A и возвращает результат в S. Среднее значение и отклонение в каждой полосе S те же, что и в A.

Основной целью декорреляционного растяжения является визуальное улучшение. Декорреляционное растяжение - это способ улучшить цветовые различия в изображении.

пример

S = decorrstretch(A,Name,Value) использует пары "имя-значение", чтобы контролировать аспекты растяжения декорреляции, такие как целевое среднее и стандартное отклонение каждой полосы.

Примеры

свернуть все

В этом примере показано, как использовать растяжение декорреляции для подсветки элементов в лесном изображении путем преувеличения различий цветов.

Чтение изображения в рабочую область.

[X, map] = imread('forest.tif');

Нанесите декоративное растяжение с помощью decorrstretch.

S = decorrstretch(ind2rgb(X,map),'tol',0.01);

Отобразите оригинальное изображение и улучшенное изображение.

figure
imshow(X,map)
title('Original Image')

Figure contains an axes. The axes with title Original Image contains an object of type image.

figure
imshow(S)
title('Enhanced Image')

Figure contains an axes. The axes with title Enhanced Image contains an object of type image.

Входные параметры

свернуть все

Улучшаемое изображение, заданное как изображение RGB или мультиспектральное изображение размера m -by- n -by- nBands. Для изображения RGB, nBands = 3.

Типы данных: single | double | int16 | uint8 | uint16

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Mode','covariance'

Метод декорреляции, заданный как разделенная разделенными запятой парами, состоящая из 'Mode' и из следующих значений.

  • 'correlation' - Использует собственное разложение матрицы корреляции между полосами.

  • 'covariance' - Использует собственное разложение ковариационной матрицы между полосами.

Типы данных: char | string

Целевые средние значения выходных полос, заданные как разделенная разделенными запятой парами, состоящая из 'TargetMean' и действительный скаляр или вектор длины nBands. По умолчанию TargetMean является 1-байт- nBands вектор, содержащий среднее значение выборки каждой полосы, который сохраняет полосообразные средства до и после растяжения декоррелирования.

TargetMean должен быть класса double, но использует те же значения, что и пиксели на входном изображении. Для примера, если A является классом uint8, затем 127.5 было бы разумным значением. Если значения необходимо зажать до стандартной области значений класса входного/выходного изображения, это может повлиять на результаты.

Типы данных: double

Целевые стандартные значения отклонений выходных полос, заданные как разделенная разделенными запятой парами, состоящая из 'TargetSigma' и положительная скалярная величина или вектор длины nBands. По умолчанию TargetSigma является 1-байт- nBands вектор, содержащий стандартное отклонение выборки каждой полосы, которое сохраняет полосообразную дисперсию до и после растяжения декорреляции. Целевое стандартное отклонение игнорируется для равномерных (с нулевой дисперсией) полос.

TargetSigma должен быть классом double, но использует те же значения, что и пиксели на входном изображении. Для примера, если A является классом uint8, затем 50.0 было бы разумным значением.

Типы данных: double

Линейное контрастное растяжение после декорреляционного растяжения, заданное как разделенная разделенными запятой парами, состоящая из 'Tol' и числовой скаляр или 2-элементный числовой вектор класса double. Задание значения Tol переопределяет значение TargetMean или TargetSigma. Если вы не задаете Tol, затем по умолчанию decorrstretch не выполняет линейное контрастное растяжение.

Tol имеет то же значение что и в stretchlim, где Tol = [LOW_FRACT HIGH_FRACT] задает долю изображения, которая будет насыщаться при низкой и высокой интенсивности. Если вы задаете Tol в качестве скалярного значения затем LOW_FRACT = Tol и HIGH_FRACT = 1 - Tolнасыщение равными фракциями при низкой и высокой интенсивности.

Небольшие корректировки Tol может сильно повлиять на визуальный внешний вид выхода.

Типы данных: double

Подмножество A используется для вычисления полосы пропускания, ковариации и корреляции, заданной как массив ячеек, содержащий два массива пиксельных индексов {rowsubs, colsubs}. rowsubs и colsubs являются векторами или матрицами совпадающего размера, которые содержат индексы и столбцы, соответственно.

Используйте эту опцию, чтобы уменьшить количество расчетов, чтобы предотвратить влияние преобразований или обоих недопустимых или нерепрезентативных пикселей. Для примера можно использовать rowsubs и colsubs исключить области облачной оболочки. Если не указано, decorrstretch использует все пиксели в A.

Типы данных: double

Выходные аргументы

свернуть все

Декорреляция растянутого изображения, возвращенная как числовой массив того же размера и класса, что и входа изображение, A.

Совет

  • Результаты прямой декорреляции (без опции контрастного растяжения) могут включать значения, которые попадают за пределы численной области значений, поддерживаемого классом 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)

и читая справа налево, видно, что декорреляция растянулась:

  1. Удаляет среднее значение из каждой полосы значений

  2. Нормализует каждую полосу по ее стандартному отклонению (только метод, основанный на корреляции)

  3. Вращает полосы в собственное пространство Corr или Cov

  4. Применение растяжения S в собственном пространстве, оставив изображение декорированным и нормированным в собственном пространстве

  5. Вращается назад в исходное пространство полосы, где полосы остаются декоррелированными и нормированными

  6. Корректирует каждую полосу согласно SIGMA_target

  7. Восстанавливает среднее значение в каждой полосе.

См. также

|

Представлено до R2006a