ns3

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

    Описание

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('jasperRidge2_R198.hdr');

    Оцените количество спектрально отличных конечных элементов в кубе данных при помощи countEndmembersHFC функция.

    numEndmembers = countEndmembersHFC(hcube,'PFA',10^-7);

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

    endmembers = nfindr(hcube,numEndmembers);

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

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

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

    score = zeros(size(hcube.DataCube,1),size(hcube.DataCube,2),numEndmembers);
    for i = 1:numEndmembers
        score(:,:,i) = ns3(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('jasperRidge2_R198.hdr');

    Найдите первые 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,'Location','Bestoutside')

    Вычислите NS3 счета между ссылкой и тестовым спектрами.

    score = zeros(1,numEndmembers-1);
    for itr = 1:numEndmembers-1
        score(itr) = ns3(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')
    legend('Reference spectrum','Maximum match test spectrum','Minimum match test spectrum',...
           'Location','Southoutside')
    title('Similarity Between Spectra')
    text(40,500,['Max score: ' num2str(maxval)],'Color','r')
    text(120,1900,['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

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

    свернуть все

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

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

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

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

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

    Подробнее о

    свернуть все

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

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

    AEuclidean=1Ci=1C(tiri)2

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

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

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

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

    Ссылки

    [1] Нидаманури, Рама Рао и Бернд Збелл. "Нормированная оценка спектрального подобия (NS3) как эффективный метод поиска спектральной библиотеки для классификации гиперспектральных изображений ". Журнал IEEE по отдельным темам в области прикладных наблюдений Земли и дистанционного зондирования 4, № 1 (март 2011 года): 226-40. https://doi.org/10.1109/JSTARS.2010.2086435.

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