sid

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

    Описание

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

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

     hcube = hypercube('jasperRidge2_R198.hdr');

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

    numEndmembers = 7;

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

    endmembers = nfindr(hcube,numEndmembers);

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

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

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

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

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

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

    [~,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 objects. Axes object 1 with title RGB Image of Hyperspectral Data contains an object of type image. Axes object 2 with title Indices of Matching Endmembers contains an object of type image.

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

    hcube = hypercube('jasperRidge2_R198.hdr');

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

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

    Рассмотрите первый endmember как ссылочный спектр и остальную часть endmembers как тестовый спектр. Вычислите счет 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);

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

    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 object. The axes object 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, возвращенный как скаляр или матрица. Выход является a

    • скаляр — Если вы задаете 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