exponenta event banner

spectralMatch

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

    Описание

    пример

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

    пример

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

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

    Примечание

    Для выполнения этой функции требуется библиотека гиперспектральных изображений Toolbox™ обработки изображений. Можно установить библиотеку гиперспектральных изображений панели инструментов обработки изображений из проводника надстроек. Дополнительные сведения об установке надстроек см. в разделе Получение надстроек и управление ими.

    Примеры

    свернуть все

    Способ спектрального согласования сравнивает спектральную сигнатуру каждого пикселя в гиперспектральном кубе данных с эталонной спектральной сигнатурой для растительности из файла спектра 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);

    Загрузить a .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-by-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 содержит гиперспектральную базу данных.

    Значения отражательной способности, заданные как вектор 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 расстояния.

    Дополнительные сведения об этих методах спектрального согласования см. в разделе Подробнее.

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

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

    BWoverlap = Wmax Wmin

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

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

    '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-на-N содержит оценку расстояния для спектров каждого пикселя относительно опорной сигнатуры.

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

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

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

    Подробнее

    свернуть все

    Отображение спектрального угла (SAM)

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

    α = cos 1 (∑i=1Ctiri∑i=1Cti2∑i=1Cri2).

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

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

    qi=ri∑i=1Cri.

    .

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

    pi=ti∑i=1Cti.

    .

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

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

    SID-SAM

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

    SIDSAM = SID × tan (α)

    Jeffries Matusita-Spectral Angle Mapper (JMSAM)

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

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

    JMdistance = 2 (1 e − B)

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

    B = 18 (мкт мкр) T [startt + startr2] 1 (мкт мкр) + 12ln [| startt +

    мкр и мкт - средние значения эталонного и тестового спектров соответственно. startr и startt - значения ковариации опорного и тестового спектров соответственно.

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

    α = cos 1 (∑i=1Ctiri∑i=1Cti2∑i=1Cri2).

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

    JMSAM = JMdistance × tan (α)

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

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

    AEuclidean = 1C∑i=1C (ti ri) 2

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

    α = cos 1 (∑i=1Ctiri∑i=1Cti2∑i=1Cri2).

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

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

    См. также

    | | | | | |

    Представлен в R2020a