sid

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

    Описание

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

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

     hcube = hypercube('jasperRidge2_R198.hdr');

    Задайте количество спектрально различных полос для идентификации в кубе данных.

    numEndmembers = 7;

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

    endmembers = nfindr(hcube,numEndmembers);

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

    figure  
    plot(endmembers)   
    xlabel('Band Number')
    ylabel('Data Value')
    legend('Location','Bestoutside')

    Figure contains an axes. The axes contains 7 objects of type line.

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

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

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

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

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

    rgbImg = colorize(hcube,'Method','RGB');
    figure('Position',[0 0 1100 500])
    subplot('Position',[0 0.2 0.4 0.7])
    imagesc(rgbImg)
    axis off
    colormap default
    title('RGB Image of Hyperspectral Data')
    subplot('Position',[0.5 0.2 0.4 0.7])
    imagesc(matchingIndx);
    axis off
    title('Indices of Matching Endmembers')
    colorbar

    Figure contains 2 axes. Axes 1 with title RGB Image of Hyperspectral Data contains an object of type image. Axes 2 with title Indices of Matching Endmembers contains an object of type image.

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

    hcube = hypercube('jasperRidge2_R198.hdr');

    Найдите 10 конечных элементов куба гиперспектральных данных с помощью метода N-FINDR.

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

    Рассмотрим первый конечный элемент как ссылка спектр, а остальные конечные элементы как тестовый спектр. Вычислите счет SID между ссылкой и тестовым спектрами.

    score = zeros(1,numEndmembers-1);
    refSpectrum = endmembers(:,1);
    for i = 2:numEndmembers
        testSpectrum = endmembers(:,i);
        score(i-1) = sid(testSpectrum,refSpectrum);
    end

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

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

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

    figure
    plot(refSpectrum)
    hold on
    plot(maxMatch,'k')
    plot(minMatch,'r')
    legend('Reference spectrum','Minimum match test spectrum','Maximum match test spectrum',...
           'Location','Southoutside');
    title('Similarity Between Spectra')
    annotation('textarrow',[0.3 0.3],[0.4 0.52],'String',['Min score: ' num2str(minval)])
    annotation('textarrow',[0.6 0.6],[0.4 0.55],'String',['Max score: ' num2str(maxval)])
    xlabel('Band Number')
    ylabel('Data Values')

    Figure contains an axes. The axes with title Similarity Between Spectra contains 3 objects of type line. These objects represent Reference spectrum, Minimum match test spectrum, Maximum match test spectrum.

    Входные параметры

    свернуть все

    Входные гиперспектральные данные, заданные как 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

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

    свернуть все

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

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

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

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

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

    Подробнее о

    свернуть все

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

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

    qi=rii=1Cri.

    .

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

    pi=tii=1Cti.

    .

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

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

    Ссылки

    [1] Чин-И Чанг. «Информационно-теоретический подход к спектральной изменчивости, подобию и дискриминации для гиперспектрального анализа изображений». Транзакции IEEE по теории информации 46, № 5 (август 2000): 1927-32. https://doi.org/10.1109/18.857802.

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