sam

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

    Описание

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

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

    hcube = hypercube('jasperRidge2_R198.hdr');

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

    numEndmembers = countEndmembersHFC(hcube)
    numEndmembers = 14
    

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

    endmembers = nfindr(hcube,numEndmembers);

    Постройте спектральные подписи endmembers. Результат показывает 14 спектрально отличных областей в кубе данных.

    figure
    plot(endmembers)
    legend('Location','Bestoutside')

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

    score = zeros(size(hcube.DataCube,1),size(hcube.DataCube,2),numEndmembers);
    for i = 1:numEndmembers
        score(:,:,i) = sam(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.15 0.4 0.8])
    imagesc(rgbImg)
    axis off
    title('RGB Image of Hyperspectral Data')
    subplot('Position',[0.45 0.15 0.4 0.8])
    imagesc(matchingIndx)
    axis off
    title('Indices of Matching Endmembers')
    colorbar

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

    hcube = hypercube('indian_pines.dat');

    Найдите десять endmembers гиперспектральных данных.

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

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

    score = zeros(1,numEndmembers-1);
    refSpectra = endmembers(:,1);
    for i = 2:numEndmembers
        testSpectra = endmembers(:,i);
        score(i-1) = sam(testSpectra,refSpectra);
    end

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

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

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

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

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

    свернуть все

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

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

    свернуть все

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

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

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

    Каждым элементом счета SAM является спектральный угол в радианах в области значений [0, 3.142]. Меньший счет SAM указывает на близкое соответствие между тестовой подписью и ссылочной подписью.

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

    Больше о

    свернуть все

    Спектральный угловой картопостроитель

    Учитывая тестовый спектр t и ссылочный спектр r длины C, выигрывают SAM, α вычисляется как

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

    Ссылки

    [1] Крюзе, F.A., А.Б. Лефкофф, Дж.В. Боардмен, К.Б. Хейдебречт, А.Т. Шапиро, П.Дж. Барлун и A.F.H. Goetz. “Спектральная система обработки изображений (SIPS) — Интерактивная Визуализация и Анализ Обработки изображений Данных о Спектрометре”. Дистанционное зондирование Среды 44, № 2-3 (май 1993): 145–63. https://doi.org/10.1016/0034-4257 (93) 90 013 Н.

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

    | | | | |

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