spectralMatch

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

    Описание

    пример

    score = spectralMatch(libData,hcube) идентифицирует области в кубе гиперспектральных данных путем согласования спектральной сигнатуры каждого пикселя со спектральными данными, считанными из спектральной библиотеки ECOSTRESS libData.

    пример

    score = spectralMatch(libData,reflectance,wavelength) определяет область или материал путем согласования его спектральных значений отражательной способности, заданных как reflectance и wavelength, со значениями, доступными в спектральной библиотеке ECOSTRESS libData.

    score = spectralMatch(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в сложение с любой комбинацией входных параметров в предыдущих синтаксисах.

    Примечание

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

    Примеры

    свернуть все

    Способ спектрального согласования сравнивает спектральную сигнатуру каждого пикселя в кубе гиперспектральных данных с ссылкой спектральной сигнатурой для растительности из файла спектра ECOSTRESS.

    Прочтите спектральную сигнатуру растительности из спектральной библиотеки ECOSTRESS.

    fileroot = matlabshared.supportpkg.getSupportPackageRoot();
    filename = fullfile(fileroot,'toolbox','images','supportpackages','hyperspectral','hyperdata',...
                   'ECOSTRESSSpectraFiles','vegetation.tree.tsuga.canadensis.vswir.tsca-1-47.ucsb.asd.spectrum.txt');
    libData = readEcostressSig(filename);

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

    hcube = hypercube('paviaU.hdr');

    Вычислите счета расстояния спектра пикселей гиперспектральных данных относительно спектра ссылки.

    score = spectralMatch(libData,hcube);

    Отобразите счета расстояния. Пиксели с счетами с низким расстоянием являются более сильными, совпадающими с ссылкой спектром и с большей вероятностью относятся к области растительности.

    figure
    imagesc(score)
    colorbar

    Задайте порог для обнаружения счетов расстояния, которые соответствуют области растительности.

    threshold = 0.3;

    Сгенерируйте бинарное изображение путем присвоения значения интенсивности 1 для пикселей с счетом меньше заданного порога. Другим областям присваивается значение интенсивности 0. Области максимальной интенсивности в бинарное изображение соответствуют областям растительности в кубе гиперспектральных данных.

    bw = score < threshold;

    Сегментируйте растительные области куба гиперспектральных данных с помощью индексов областей максимальной интенсивности в бинарном изображении.

    T = reshape(hcube.DataCube,[size(hcube.DataCube,1)*size(hcube.DataCube,2) size(hcube.DataCube,3)]);
    Ts = zeros(size(T));
    Ts(bw == 1,:) = T( bw==1 ,:);
    Ts = reshape(Ts,[size(hcube.DataCube,1) size(hcube.DataCube,2) size(hcube.DataCube,3)]);

    . Создайте новую hypercube объект, который содержит только сегментированные области растительности.

    segmentedDataCube = hypercube(Ts,hcube.Wavelength);

    Оцените цветное изображение RGB куба исходных данных и куба сегментированных данных с помощью colorize функция.

    rgbImg = colorize(hcube,'Method','rgb','ContrastStretching',true);
    segmentedImg = colorize(segmentedDataCube,'Method','rgb','ContrastStretching',true);

    Наложите бинарное изображение на версию RGB исходного куба данных с помощью imoverlay функция.

    B = imoverlay(rgbImg,bw,'Yellow');

    Отображение цветных изображений RGB исходного куба данных и сегментированного куба данных вместе с наложенным изображением. Сегментированное изображение содержит только области растительности, которые сегментированы от исходного куба данных.

    figure
    montage({rgbImg segmentedImg B},'Size',[1 3])
    title(['Original Image | ' 'Segmented Image | ' 'Overlayed Image'])

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

    fileroot = matlabshared.supportpkg.getSupportPackageRoot();
    dirname = fullfile(fileroot,'toolbox','images','supportpackages','hyperspectral','hyperdata','ECOSTRESSSpectraFiles');
    libData = readEcostressSig(dirname);

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

    load spectralData 'reflectance' 'wavelength'

    Вычислите спектральное соответствие между спектром ссылки и тестовым спектром с помощью метода спектрального информационного расхождения (SID). Функция вычисляет счет расстояния только для тех эталонных спектров, которые имеют перекрытие полосы пропускания с тестовым спектром. Функция отображает предупреждающее сообщение для всех других спектров.

    score = spectralMatch(libData,reflectance,wavelength,'Method','SID');
    Warning: Unable to find overlapping wavelengths between test spectra and library signature number 8
    
    Warning: Unable to find overlapping wavelengths between test spectra and library signature number 9
    
    Warning: Unable to find overlapping wavelengths between test spectra and library signature number 11
    

    Отобразите счета расстояний тестового спектра. Пиксели с более низкими счетами расстояния являются более сильными, совпадающими с ссылкой спектром. Дистанционное значение баллов NaN указывает, что соответствующий эталонный спектр и тестовый спектр не соответствуют порогу полосы перекрытия.

    score
    score = 1×15
    
      297.8016  122.5567  203.5864  103.3351  288.7747  275.5321  294.2341       NaN       NaN  290.4887       NaN  299.5762  171.6919   46.2072  176.6637
    
    

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

    [value,ind] = min(score);

    Найдите совпадающий эталонный спектр при помощи индекса минимального счета расстояния и отобразите детали совпадающих спектральных данных в библиотеке ECOSTRESS. Результат показывает, что тестовый спектр наиболее близко совпадает со спектральной сигнатурой морской воды.

    matchingSpectra = libData(ind)
    matchingSpectra = struct with fields:
                         Name: "Sea Foam"
                         Type: "Water"
                        Class: "Sea Water"
                     SubClass: "none"
                 ParticleSize: "Liquid"
                        Genus: [0×0 string]
                      Species: [0×0 string]
                     SampleNo: "seafoam"
                        Owner: "Dept. of Earth and Planetary Science, John Hopkins University"
              WavelengthRange: "TIR"
                       Origin: "JHU IR Spectroscopy Lab."
               CollectionDate: "N/A"
                  Description: "Sea foam water. Original filename FOAM Original ASTER Spectral Library name was jhu.becknic.water.sea.none.liquid.seafoam.spectrum.txt"
                  Measurement: "Directional (10 Degree) Hemispherical Reflectance"
                  FirstColumn: "X"
                 SecondColumn: "Y"
               WavelengthUnit: "micrometer"
                     DataUnit: "Reflectance (percent)"
                  FirstXValue: "14.0112"
                   LastXValue: "2.0795"
              NumberOfXValues: "2110"
        AdditionalInformation: "none"
                   Wavelength: [2110×1 double]
                  Reflectance: [2110×1 double]
    
    

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

    figure
    testReflectance = rescale(reflectance,0,1);
    refReflectance = rescale(matchingSpectra.Reflectance,0,1);
    testLength = length(testReflectance);
    newLength = length(testReflectance)/length(refReflectance);
    testReflectance = interp1(1:testLength,testReflectance,1:newLength:testLength);
    
    plot(refReflectance)
    hold on
    plot(testReflectance,'r')
    hold off
    legend('Matching reference reflectance','Test reflectance')
    xlabel('Number of samples')
    ylabel('Reflectance value')

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

    свернуть все

    Спектральные данные из файлов ECOSTRESS, возвращенные как массив структур 1 K байта. K - количество файлов спектра, считанных функцией. Каждый элемент массива структур имеет 24 поля, которые содержат информацию заголовка файлов спектра.

    Имена полейОписание
    NameИмя измеренной выборки или материала
    TypeТип выборки, такой как "mineral", "rock", "tree", или "manmade"
    Class

    Класс типа выборки

    Для примера, если тип выборки "mineral" тогда класс может быть: "native elements", "silicates", "oxides", "sulfides", "sulfates", "halides", "carbonates", "phosphates", или "mineraloids".

    SubClass

    Подкласс типа выборки

    Это поле содержит пустой массив или "none", если только не Type значение "mineral", "rock", "manmade", "soil", "lunar", или "meteorite".

    ParticleSize

    Размер частиц типа образца

    Это поле содержит пустой массив, кроме Type значение "mineral", "rock", "manmade", "soil", "lunar", или "meteorite".

    Genus

    Род выборки

    Это поле содержит пустой массив, кроме Type значение "vegetation" или "nonphotosynthetic".

    Species

    Виды выборки

    Это поле содержит пустой массив, кроме Type значение "vegetation" или "nonphotosynthetic".

    SampleNo

    Номер выборки

    Это значение является идентификатором для связанной выборки.

    OwnerВладелец выборки
    WavelengthRange

    Область значений длин волн измеренной выборки

    Значение должно быть "All", "TIR", или "VSWIR".

    OriginРасположение, из которого были получены данные
    CollectionDate

    Дата, на которую был собранная выборка

    Это значение в mm/dd/yy формат.

    Description

    Описание измеренной выборки

    Это поле предоставляет дополнительную информацию о характеристиках выборки.

    MeasurementСпектральный режим измерения, используемый для измерения выборки
    FirstColumnПервый столбец значений данных в файле спектра
    SecondColumnВторой столбец значений данных в файле спектра
    WavelengthUnit

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

    Значение для каждого типа выборки "micrometer". Это поле соответствует X Units поле данных заголовка в файле спектра ECOSTRESS.

    DataUnit

    Модуль режима спектральных измерений

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

    FirstXValueПервое значение в первом столбце значений данных в файле спектра
    LastXValueПоследнее значение в первом столбце значений данных в файле спектра
    NumberofXValuesОбщее количество значений данных в первом столбце файла спектра
    AdditionalInformation

    Дополнительная информация о выборке

    Это поле включает информацию, которая не является частью спектральных данных.

    WavelengthЗначения длины волны, при которых измерялись отражения
    ReflectanceЗначения отражательной способности, измеренные на каждой длине волны

    Входные гиперспектральные данные, заданные как hypercube объект. The DataCube свойство hypercube объект содержит гиперспектральный datacube.

    Значения отражающей способности, заданные как C-вектор. C - количество длин волн, для которых были измерены значения отражательной способности.

    Значения длины волны, заданные как C-вектор. C - количество длин волн, для которых были измерены значения отражательной способности .

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

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

    Пример: spectralMatch(libData,hcube,'MinBandWidth',0.5)

    Метод спектрального согласования, заданный как разделенная запятыми пара, состоящая из 'Method' и одно из следующих значений:

    • 'sam' - метод спектрального преобразования углов (SAM), который измеряет подобие между двумя спектрами путем вычисления углового расстояния между ними.

    • 'sid' - метод спектрального информационного расхождения (SID), который измеряет подобие между двумя спектрами путем вычисления различия между их значениями вероятностного распределения.

    • 'sidsam' - Смешанный метод спектрального подобия, который измеряет сходство между двумя спектрами путем объединения измерений расстояния SID и SAM.

    • 'jmsam' - Jeffries Matusita-Spectral Angle Mapper (JMSAM), который измеряет сходство между двумя спектрами путем объединения измерений расстояния Jeffries Matusita (JM) и SAM.

    • 'ns3' - Метод нормированной оценки спектрального подобия (NS3), который измеряет подобие между двумя спектрами путем объединения измерений расстояния Евклида и SAM.

    Для получения дополнительной информации об этих методах спектрального согласования, см. More About.

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

    Минимальная полоса перекрытия, заданная как разделенная разделенными запятой парами, состоящая из 'MinBandWidth' и положительная скалярная величина в нанометрах. Ширина полосы перекрытия между спектром ссылки и тестовыми спектрами определяется как:

    BW перекрытия = W max W min

    W мин - это максимум минимальных длин волн в эталонном и тестовом спектрах .

    W max является максимумом максимальных длин волн в эталонном и тестовом спектрах.

    The 'MinBandWidth' Аргумент определяет минимальное ожидаемое значение для полосы перекрытия между спектральными значениями тестового материала и спектральными данными ECOSTRESS.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

    свернуть все

    Значения расстояния, возвращенные как 3-D числовой массив, матрица K вектор-столбец или скаляр. Размерности выходного счета зависят от размерностей libData и являются ли тестовые данные hypercube объект или wavelength и reflectance пара.

    Если тестовые спектральные сигнатуры заданы как hypercube объект, hcube и кубик данных имеет размер M -by- N -by- C:

    Размерность входного параметра, libDataРазмерность выхода, score
    1-by - K, содержащая K ссылочные сигнатуры K считанные из количества файлов спектра

    3-D массив размера M -by- N -by- K, содержащий счет расстояния для каждого пикселя относительно K ссылочных сигнатур

    Значения в каждом канале K являются счетами расстояний спектров каждого пикселя относительно спектральных данных в соответствующей строке libData. Точно так же значения во втором канале относятся к спектральным данным во второй строке libData.

    1 на 1, содержащая ссылочную сигнатуру, считанную из одного файла спектра (K = 1)матрица размера M -by - N, Матрица содержит счет расстояния для спектров каждого пикселя относительно опорной сигнатуры.

    Если тестовая спектральная сигнатура задана как reflectance и wavelength значения:

    Размерность входного параметра, libDataРазмерность выхода, score
    1-by - K, содержащая K ссылочные сигнатуры K считанные из количества файлов спектраK-элементный вектор, содержащий счет расстояния тестовых спектров относительно K эталонных сигнатур. Каждый элемент вектора является счетом расстояния тестовых значений отражающей способности относительно спектральных данных в соответствующей строке libData.
    1 на 1, содержащая ссылочную сигнатуру, считанную из одного файла спектра (K = 1)скаляр

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

    Подробнее о

    свернуть все

    Спектральный преобразователь угла (SAM)

    Учитывая t тестовых спектров и r эталонных спектров длины C, α счета SAM вычисляется как

    α=cos1(i=1Ctirii=1Cti2i=1Cri2).

    Расхождение спектральной информации (SID)

    Метод спектрального информационного расхождения (SID) вычисляет спектральное подобие на основе расхождения между распределениями вероятностей двух спектров. Позвольте r и t быть ссылкой и тестовым спектрами соответственно. Вычислите значения распределения для ссылки спектров как:

    qi=rii=1Cri.

    .

    Вычислите значения распределения для тестовых спектров как:

    pi=tii=1Cti.

    .

    Затем вычислите значение SID с помощью распределений вероятностей опорного и тестового спектров:

    SID=i=1Cpilog(piqi)+i=1Cqilog(qipi).

    SID-SAM

    Метод SID-SAM вычисляет спектральное сходство как:

    SIDSAM=SID×tan(α)

    Jeffries Matusita-Spectral Angle Mapper (JMSAM)

    Метод JMSAM вычисляет спектральное сходство на основе расстояний Jeffris Matusita (JM) и SAM между двумя спектрами. Позвольте r и t быть ссылкой и тестовым спектрами соответственно.

    Сначала вычислите расстояние JM,

    JMdistance=2(1eB)

    где B - расстояние Бхаттачарьи,

    B=18(μtμr)T[σt+σr2]1(μtμr)+12ln[|σt+σr2||σt||σr|]

    μr и μt являются средними значениями эталонного и тестового спектров соответственно. σr и σt являются ковариацией значениями ссылки и тестового спектров соответственно.

    Затем вычислите значение SAM α используя t тестовых спектров и r эталонных спектров длины C,

    α=cos1(i=1Ctirii=1Cti2i=1Cri2).

    Наконец, вычислите счет JMSAM как:

    JMSAM=JMdistance×tan(α)

    Нормированный счет спектрального подобия (NS3)

    Метод NS3 вычисляет спектральное сходство на основе расстояний Евклида и SAM между двумя спектрами. Позвольте r и t быть ссылкой и тестовым спектрами соответственно. Вычислите евклидово расстояние между двумя спектрами как:

    AEuclidean=1Ci=1C(tiri)2

    Затем вычислите значение SAM α

    α=cos1(i=1Ctirii=1Cti2i=1Cri2).

    Наконец, вычислите счет NS3 как:

    NS3=AEuclidean2+(1cos(α))2

    См. также

    | | | | | |

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