empiricalLine

Эмпирическая калибровка линии на гиперспектральном кубе данных

    Описание

    пример

    newhcube = empiricalLine(hcube,imgSpectra,fieldSpectra,fieldWL) применяет эмпирическую калибровку линии к гиперспектральным данным, hcube. Функция вычисляет эмпирические факторы линии, чтобы обеспечить изображение спектральные данные, imgSpectra, совпадать с полевыми спектрами коэффициента отражения, fieldSpectra, с длинами волн fieldWL.

    Примечание

    Эта функция требует Image Processing Toolbox™ Гиперспектральная Библиотека Обработки изображений. Можно установить Image Processing Toolbox Гиперспектральная Библиотека Обработки изображений из Add-On Explorer. Для получения дополнительной информации об установке дополнений, смотрите, Получают и Управляют Дополнениями.

    Примеры

    свернуть все

    Считайте гиперспектральные данные в рабочую область. Эти данные от датчика Гипериона и заданы как цифровые числа.

    hcube = hypercube('EO1H0440342002212110PY_cropped.hdr');

    Удалите плохие полосы из входных данных.

    hcube = removeBands(hcube,'BandNumber',find(~hcube.Metadata.BadBands));

    Вычислите значения сияния TOA.

    hcube_toa = dn2radiance(hcube);

    Выберите низкий пиксель значения яркости во входных данных как целевой пиксель. Сохраните пиксельное значение как массив ячеек при помощи фигурных скобок. Пиксель принадлежит области tar во входных данных.

    imgSpec = {permute(hcube_toa.DataCube(100,86,:),[3,1,2])};

    Считайте коэффициент отражения спектральная подпись материала tar от библиотеки ECOSTRESS.

    filename = 'manmade.road.tar.solid.all.0099uuutar.jhu.becknic.spectrum.txt';
    info = readEcostressSig(filename);

    Получите полевые спектры коэффициента отражения и соответствующую информацию о длине волны от метаданных подписи. Сохраните эти значения как массив ячеек при помощи фигурных скобок.

    refSpec = {info.Reflectance};
    refWL = {info.Wavelength};

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

    hcube_empirical = empiricalLine(hcube_toa,imgSpec,refSpec,refWL);

    Для осмотра результатов выберите любое изображение полосы от входа и выходных данных. В этом примере номер полосы выбран в качестве 159. Для цели визуализации перемасштабируйте значения изображений полосы ввода и вывода к области значений [0, 1].

    inputBand = rescale(hcube.DataCube(:,:,159));
    outputBand = rescale(hcube_empirical.DataCube(:,:,159));
    diffBand = abs(inputBand-outputBand);

    Отобразите исходное и опытным путем откорректированное изображение диапазона. Кроме того, отобразите абсолютную разность между входом и выходными изображениями полосы, чтобы визуализировать изменения.

    figure('Position',[0 0 700 800])
    subplot('Position',[0 0.15 0.25 0.8])
    imagesc(inputBand)
    title('Input Band')
    axis off
    subplot('Position',[0.35 0.15 0.25 0.8])
    imagesc(outputBand)
    axis off
    title('Output Band')
    subplot('Position',[0.7 0.15 0.25 0.8])
    imagesc(diffBand)
    axis off
    title('Difference Image')
    colormap gray     

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

    свернуть все

    Введите гиперспектральные данные, заданные как hypercube объект. DataCube свойство hypercube объектно-ориентированная память гиперспектральный куб данных.

    Значения входного пикселя могут быть цифровыми числами, сиянием TOA или значениями коэффициента отражения TOA. Чтобы преобразовать гиперкуб, содержащий цифровые числа к гиперкубу, содержащему сияние TOA или данные о коэффициенте отражения TOA, используйте dn2radiance или dn2reflectance функции, соответственно.

    Отобразите спектральные данные в виде N-by-1 массив ячеек, где N является количеством пикселей или полей, используемых в эмпирической калибровке линии. Каждая ячейка содержит C-by-1 числовой вектор, где C является количеством гипердиапазонов, существующих в hcube.

    Полевые спектры коэффициента отражения в виде N-by-1 массив ячеек, где N является количеством пикселей или полей, используемых в эмпирической калибровке линии. Каждая ячейка содержит вектор из полевых коэффициентов отражения из различных длин. Длина вектора в каждой ячейке fieldSpectra и fieldWL должен соответствовать.

    Длина волны полевых спектров коэффициента отражения, в нанометрах в виде N-by-1 массив ячеек, где N является количеством пикселей или полей, используемых в эмпирической калибровке линии. Каждая ячейка содержит P-by-1 вектор из полевых длин волн из различных длин. Длина вектора в каждой ячейке fieldSpectra и fieldWL должен соответствовать.

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

    свернуть все

    Калиброванные гиперспектральные данные, возвращенные как hypercube возразите или 3-D числовой массив, сопоставимый с входными данными, inputData. Типом данных числового выхода является single. Когда входные данные в inputData имеет тип данных double, затем исправленные данные имеют также тип данных double. В противном случае исправленные данные имеют тип данных single.

    Алгоритмы

    empiricalLine функция выполняет линейную регрессию для каждой полосы, чтобы приравнять цифровой номер (DN), или сияние TOA или коэффициент отражения TOA, с поверхностным коэффициентом отражения. Решение уравнения линейной регрессии обеспечивает усиление и значения смещения для каждой полосы. Это уравнение показывает, как эмпирическое усиление факторов линии и значения смещения вычисляются:

    ρsurfaceλ=mrλ+offset

    Усиление (m) и значения смещения (offset) является неизвестными параметрами в эмпирическом уравнении линии. ρλ является известным поверхностным значением коэффициента отражения ссылочного материала во входе гиперспектральные данные (известный как спектры ссылки поля). является измеренным значением для ссылочного материала во входе гиперспектральные данные (известный как изображение спектральные данные). Измеренное значение может быть цифровым номером, сиянием TOA или коэффициентом отражения TOA.

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

    empiricalLine функция автоматически передискретизирует спектры поля ввода, чтобы совпадать с выбранными длинами волн данных в hcube.

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

    Ссылки

    [1] Робертс, D. A. Ямагучи, Y. и Лион, R. "Сравнение различных методов для калибровки данных о AIS". В материалах 2-го Бортового Семинара Анализа данных Спектрометра Обработки изображений, 1986, Публикация 86-35 JPL, стр 21–30.

    [2] Ф. А. Крюзе, К. С. Кирейн-Янг и Дж. В. Боардмен, "Минеральное отображение в Капрайте, Невада с 63 каналами спектрометр обработки изображений" Photogramm. Дистанционное зондирование инженера 56 (1), 83–92 (1990).

    Смотрите также

    | | | | | |

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