correctOOB

Исправление внеполосного эффекта с помощью спектрального отклика датчика

    Описание

    пример

    newhcube = correctOOB(hcube,spectralResponse) корректирует внеполосный (OOB) эффект во входных спутниковых данных с помощью спектральных характеристик отклика датчика. Этот способ подходит для коррекции OOB в мультиспектральных спутниковых данных.

    Используйте эту функцию для коррекции эффектов OOB в различных областях, таких как чистые воды, мутные воды, зеленая растительность, песок и почва. Этот метод дает лучшие результаты, если входные данные компенсированы для рассеяния Релея и аэрозоля. Чтобы измерить эффект OOB на сценах с большими водоемами, необходимо сначала вычислить воду, выходящую из спектров излучения, по входным спутниковым данным.

    пример

    [newhcube,oobEffect] = correctOOB(hcube,spectralResponse) также возвращает относительный эффект OOB для каждой спектральной полосы.

    пример

    [___] = correctOOB(hcube,spectralResponse,'RegionMask',mask) задает маску области с помощью аргумента пары "имя-значение" 'RegionMask'. Маска области указывает однородные области в входе спутниковых данных.

    newhcube = correctOOB(___,'BlockSize',blocksize) задает размер блока для блочной обработки куба гиперспектральных данных с помощью аргумента пары "имя-значение" 'BlockSize'. Можно задать 'BlockSize' аргумент пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах.

    Функция разделяет входное изображение на отдельные блоки, обрабатывает каждый блок, а затем конкатенирует обработанный выход каждого блока, чтобы сформировать выходную матрицу. Гиперспектральные изображения являются многомерными наборами данных, которые могут быть слишком большими, чтобы помещаться в системной памяти полностью. Это может привести к тому, что в системе закончится память во время запуска correctOOB функция. Если вы столкнулись с такой проблемой, выполните обработку блоков с помощью этого синтаксиса.

    Для примера, correctOOB(hcube,spectralResponse,'BlockSize',[50 50]) разделяет вход изображение на неперекрывающиеся блоки размера 50 на 50 и затем выполняет внеполосную коррекцию каждого блока.

    Примечание

    Чтобы выполнить обработку блоков путем определения 'BlockSize' Аргумент пары "имя-значение", у вас должен быть MATLAB R2021a или более поздний релиз.

    Примечание

    Эта функция требует библиотеки Image Processing Toolbox™ гиперспектральной визуализации. Можно установить библиотеку Image Processing Toolbox Hyperspectral Imaging Library из Add-On Explorer. Дополнительные сведения об установке дополнений см. в разделе Получение и управление Дополнений.

    Примеры

    свернуть все

    Чтение мультиспектральных данных в рабочую область.

    hcube = hypercube('LC08_L1TP_097070_20201101_20201101_01_cropped.dat');

    Преобразуйте значения пикселей из цифровых чисел в верхние значения излучения атмосферы (TOA).

    hcube = dn2radiance(hcube);

    Рассчитать дистанционно измеренную отражающую способность воды.

    [rrshcube,mask] = rrs(hcube);

    Считайте спектральный ответ датчика.

    spectralResponse = readtable('spectralResponse.txt');
    spectralResponse = table2array(spectralResponse);

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

    [newhcube,oobEffect] = correctOOB(rrshcube,spectralResponse,'RegionMask',mask);

    Оцените RGB изображения входных и OOB исправленных выходных данных. Увеличьте контрастность изображения путем применения контрастного растяжения.

    imgIn = colorize(hcube,'Method','rgb','ContrastStretching',true);
    imgOut = colorize(newhcube,'Method','rgb','ContrastStretching',true);

    Отобразите вход и исправленные выходные изображения OOB.

    figure
    montage({imgIn,imgOut})
    title('Input Image | OOB Corrected Image')

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

    свернуть все

    Входные спутниковые данные, заданные как hypercube объект. Функции считывают кубик данных из DataCube свойство объекта. Кубик данных имеет размер M -by- N -by- C. C - количество спектральных полос в вход спутниковых данных.

    Спектральный ответ датчика, заданный как матрица или таблица. Размер матрицы или таблицы должен быть K -by- C + 1. Первый столбец матрицы или таблицы содержит значения длины волны и спектральное разрешение 1 нм.

    Вы можете скачать спектральный ответ для различных датчиков от https://oceancolor.gsfc.nasa.gov/docs/rsr/rsr_tables/.

    Маска области, указывающая однородные области, заданная как матрица размера M -by- N. Маска области является бинарным изображением со значениями интенсивности 0 и 1. Области со значением интенсивности 1 соответствуют однородным областям в вход спутниковых данных.

    Пример: correctOOB(hcube,spectralResponse,'RegionMask',mask)

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

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

    • Если на blocksize значение слишком мало, использование памяти уменьшается за счет увеличения времени выполнения.

    • Если на blocksize значение является большим или равным входом размеру изображения, время выполнения уменьшается за счет увеличения использования памяти.

    Пример: 'BlockSize',[20 20] задает размер каждого блока данных 20 на 20.

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

    свернуть все

    Внеполосные исправленные данные, возвращенные как hypercube.

    Внеполосный эффект для каждой полосы, возвращенный как C-вектор. Эффект вне полосы для каждого спектрального диапазона измеряется как относительное различие между значениями пикселей гомогенных областей во входных данных hcube и исправленные данные newhcube.

    См. также

    | | |

    Введенный в R2020b
    Для просмотра документации необходимо авторизоваться на сайте