jmsam

Измерьте спектральное подобие с помощью метода Джеффриса Мэтузита-Спектрэла Энгла Мэппера

    Описание

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('paviaU.dat');

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

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

    Постройте спектральные подписи извлеченного endmembers.

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

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

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

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

    [~,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 endmembers гиперспектральных данных.

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

    Рассмотрите первый endmember как ссылочный спектр и остальную часть endmembers как тестовые спектры.

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

    Постройте ссылочный спектр и другие endmember спектры.

    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);

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

    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 свойство объекта.

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

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

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

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

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

    свернуть все

    Счет JMSAM, возвращенный как скаляр или матрица. Выход является a

    • скаляр — Если вы задаете testSpectrum входной параметр. Функция совпадает с тестом спектральная подпись против ссылочной спектральной подписи и возвращает скалярное значение. И тест и ссылочные спектры должны быть векторами из той же длины.

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

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

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

    Больше о

    свернуть все

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

    Ссылки

    [1] Падма, S. и С. Сэндживи. “Основанная на Jeffries Matusita Смешанная Мера для Улучшенного Спектрального Соответствия в Гиперспектральном Анализе изображения”. Международный журнал Прикладного наблюдения Земли и геоинформации 32 (октябрь 2014): 138–51. https://doi.org/10.1016/j.jag.2014.04.001.

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

    | | | | | |

    Введенный в R2020b