exponenta event banner

jmsam

Измерение спектрального сходства с помощью метода Jeffries Matusita-Spectral Angle Mapper

    Описание

    пример

    score = jmsam(inputData,refSpectrum) измеряет спектральное сходство между спектром каждого пикселя в гиперспектральных данных inputData и указанный эталонный спектр refSpectrum с помощью метода JMSAM Джеффриса Матусита (Jffries Matusita). Этот синтаксис используется для идентификации различных областей или материалов в гиперспектральном кубе данных. Дополнительные сведения о методе JMSAM см. в разделе Дополнительные сведения.

    пример

    score = jmsam(testSpectrum,refSpectrum) измеряет спектральное сходство между указанным тестовым спектром testSpectrum и эталонный спектр refSpectrum с помощью метода JMSAM. Этот синтаксис используется для сравнения спектральной сигнатуры неизвестного материала с эталонным спектром или для вычисления спектральной изменчивости между двумя спектральными сигнатурами.

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('paviaU.dat');

    Извлеките первые 9 спектральных сигнатур конечных элементов из куба данных с помощью алгоритма NFINDR.

    numEndmembers = 9;
    endmembers = nfindr(hcube,numEndmembers);

    Постройте график спектральных сигнатур выделенных конечных элементов.

    figure
    plot(endmembers)
    xlabel('Bands')
    ylabel('Reflectance')
    legend('Location','Bestoutside')

    Вычислите расстояние JM-SAM между каждым конечным элементом и спектром каждого пикселя в кубе данных.

    score = zeros(size(hcube.DataCube,1),size(hcube.DataCube,2),numEndmembers);
    for i = 1:numEndmembers
        score(:,:,i) = jmsam(hcube,endmembers(:,i));
    end

    Вычислите минимальное значение оценки из оценок расстояния, полученных для каждого спектра пикселей, относительно всех конечных элементов. Индекс каждой минимальной оценки идентифицирует спектр конечного элемента, которому спектр пикселя демонстрирует максимальное сходство. Значение индекса n в пространственном местоположении (x, y) в матрице оценки указывает, что спектральная сигнатура пикселя в пространственном местоположении (x, y) в кубе данных лучше всего соответствует спектральной сигнатуре n-го конечного элемента.

    [~,matchingIdx] = min(score,[],3);

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

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

    Отображение изображения RGB и матрицы соответствующих значений индекса.

    figure('Position',[0 0 800 400])
    subplot('Position',[0 0.1 0.4 0.8])
    imagesc(rgbImg)
    axis off
    title('RGB Image of Hyperspectral Data')
    subplot('Position',[0.45 0.1 0.45 0.8])
    imagesc(matchingIdx)
    axis off
    title('Indices of Matching Endmembers')
    colorbar

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

    hcube = hypercube('indian_pines.dat');

    Найдите первые 10 конечных элементов гиперспектральных данных.

    numEndmembers = 10;
    endmembers = nfindr(hcube,numEndmembers);

    Рассмотрим первый конечный элемент в качестве опорного спектра, а остальные конечные элементы в качестве тестовых спектров.

    refSpectrum = endmembers(:,1);
    testSpectra = endmembers(:,2:end);

    Постройте график опорного спектра и других спектров конечных элементов.

    figure
    plot(refSpectrum,'LineWidth',2)
    hold on
    plot(testSpectra)
    hold off
    label = cell(1,numEndmembers-1);
    label{1} = 'Reference';
    for itr = 1:numEndmembers-1
        label{itr+1} = ['endmember-' num2str(itr)];
    end
    xlabel('Bands')
    ylabel('Reflectances')
    legend(label)
    xlim([1 size(hcube.DataCube,3)]);

    Вычислите оценку JM-SAM между опорным и тестовым спектрами.

    score = zeros(1,numEndmembers-1);
    for itr = 1:numEndmembers-1
        score(itr) = jmsam(testSpectra(:,itr),refSpectrum);
    end

    Найдите тестовый спектр, который демонстрирует максимальное сходство (минимальное расстояние) с эталонным спектром. Затем найдите тестовый спектр, который демонстрирует минимальное сходство (максимальное расстояние) с эталонным спектром.

    [minval,minidx] = min(score);
    maxMatch = testSpectra(:,minidx);
    [maxval,maxidx] = max(score);
    minMatch = testSpectra(:,maxidx);

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

    figure
    plot(refSpectrum,'LineWidth',2)
    hold on
    plot(maxMatch,'k')
    plot(minMatch,'r')
    xlabel('Band Number')
    ylabel('Data Values')
    xlim([1 size(hcube.DataCube,3)]);
    legend('Reference spectrum','Maximum match test spectrum','Minimum match test spectrum')
    title('Similarity Between Spectra')
    text(5,1000,['Max score: ' num2str(maxval)],'Color','r')
    text(140,3000,['Min score: ' num2str(minval)],'Color','k')

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

    свернуть все

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

    Тестовый спектр, заданный как вектор С-элемента. Тестовый спектр представляет собой спектральную сигнатуру неизвестной области или материала.

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

    Опорный спектр, заданный как вектор C-элемента. Эталонный спектр представляет собой спектральную сигнатуру известной области или материала. Функция сопоставляет тестовый спектр с этими значениями.

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

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

    свернуть все

    Оценка JMSAM, возвращенная как скаляр или матрица. Выходные данные представляют собой

    • scalar - если указать testSpectrum входной аргумент. Функция сопоставляет тестовую спектральную сигнатуру с эталонной спектральной сигнатурой и возвращает скалярное значение. И тестовый, и эталонный спектры должны быть векторами одинаковой длины.

    • matrix - если указать inputData входной аргумент. Функция сопоставляет спектральную сигнатуру каждого пикселя в кубе данных с эталонной спектральной сигнатурой и возвращает матрицу. Если куб данных имеет размер M-на-N-на-C, а эталонные спектры являются вектором длины C, то выходная матрица имеет размер M-на-N.

    Меньшая оценка JMSAM указывает на сильное соответствие между тестовой подписью и эталонной подписью.

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

    Подробнее

    свернуть все

    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 (α)

    Ссылки

    [1] Падма, S. и С. Сэндживи. «Смешанная мера на основе Джеффриса Матуситы для улучшения спектрального сопоставления в анализе гиперспектральных изображений». Международный журнал прикладных наблюдений Земли и геоинформации 32 (октябрь 2014 года): 138-51. https://doi.org/10.1016/j.jag.2014.04.001.

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