spectralMatch

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

    Описание

    пример

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

    пример

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

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

    Примечание

    Эта функция требует Image Processing Toolbox™ Гиперспектральная Библиотека Обработки изображений. Можно установить Image Processing Toolbox Гиперспектральная Библиотека Обработки изображений из 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 объект. DataCube свойство hypercube объект содержит гиперспектральный datacube.

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

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

    Аргументы name-value

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

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

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

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

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

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

    • 'jmsam' — Джеффрис Мэтузита-Спектрэл Энгл Мэппер (JMSAM), который измеряет подобие между двумя спектрами путем объединения Хеффрьеса Матуситы (JM) и мер по расстоянию SAM.

    • 'ns3' — Нормированный спектральный счет подобия (NS3) метод, который измеряет подобие между двумя спектрами путем объединения Евклидовых и мер по расстоянию SAM.

    Для получения дополнительной информации об этих спектральных методах сопоставления, смотрите Больше О.

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

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

    Перекрытие BW = W макс.min W

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

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

    '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 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 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-спектральный угловой картопостроитель (JMSAM)

    Метод JMSAM вычисляет спектральное подобие на основе Jeffries 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
    Для просмотра документации необходимо авторизоваться на сайте