exponenta event banner

ns3

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

    Описание

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

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

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

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

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

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

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

    свернуть все

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

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

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

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

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

    Подробнее

    свернуть все

    Нормализованная оценка спектрального подобия (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

    Ссылки

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

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