exponenta event banner

fippi

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

    Описание

    пример

    endmembers = fippi(inputData,numEndmembers) извлечения сигнатур конечных элементов из гиперспектральных данных inputData используя алгоритм быстрого итеративного индекса чистоты пикселей (FIPPI). numEndmembers - количество сигнатур конечных элементов, извлекаемых с помощью алгоритма FIPPI. Дополнительные сведения о методе FIPPI см. в разделе Алгоритмы.

    пример

    endmembers = fippi(inputData,numEndmembers,'ReductionMethod',method) дополнительно задает опцию для выбора метода уменьшения размерности, который будет использоваться перед вычислением конечных элементов.

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('paviaU.hdr');

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

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

    Вычислите конечные элементы с помощью метода быстрого итеративного индекса чистоты пикселей (FIPPI). По умолчанию fippi функция использует преобразование максимальной доли шума (MNF) для предварительной обработки.

    endmembers = fippi(hcube.DataCube,numEndmembers);

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

    figure
    plot(endmembers)
    xlabel('Band Number')
    ylabel('Pixel Values')
    ylim([0 9000])
    title({'Endmembers Spectra',['Number of Endmembers = ' num2str(numEndmembers)]});

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

    hcube = hypercube('paviaU.hdr');

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

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

    Вычислите конечные элементы с помощью метода быстрого итеративного индекса чистоты пикселей (FIPPI). Выберите анализ главных компонентов (PCA) в качестве метода уменьшения размерности для предварительной обработки.

    endmembers = fippi(hcube.DataCube,numEndmembers,'ReductionMethod','PCA');

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

    figure
    plot(endmembers)
    xlabel('Band Number')
    ylabel('Pixel Values')
    ylim([0 9000])
    title({'Endmembers Spectra',['Number of Endmembers = ' num2str(numEndmembers)]});

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

    свернуть все

    Входные гиперспектральные данные, указанные как 3-D числовой массив или hypercube объект. Если входным значением является hypercube объект, затем функция считывает гиперспектральные данные из его DataCube собственность.

    Гиперспектральные данные представляют собой числовой массив размера M-by-N-by-C. M и N - количество строк и столбцов в гиперспектральных данных соответственно. C - число спектральных полос в гиперспектральных данных.

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

    Число извлекаемых конечных элементов, указанное как положительное скалярное целое число. Значение должно быть в диапазоне [1 C]. C - количество спектральных полос во входных гиперспектральных данных. Вы можете найти количество спектрально различных конечных элементов во входных данных, используя countEndmembersHFC функция.

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

    Метод уменьшения размерности, заданный как разделенная запятыми пара 'ReductionMethod"и один из 'MNF' или 'PCA'.

    Укажите значение как

    • 'MNF' - Для уменьшения размерности методом максимальной доли шума (MNF).

    • 'PCA' - Выполнить уменьшение размерности методом анализа основных компонентов (PCA).

    Функция вычисляет конечные элементы из сокращенных данных.

    Типы данных: char | string

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

    свернуть все

    Сигнатуры конечных элементов, возвращаемые в виде матрицы размера C-by-K и типа данных, совпадающих с входными гиперспектральными данными.

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

    Алгоритмы

    FIPPI - итеративный подход, который итеративно выбирает лучших кандидатов в конечные члены после каждой итерации. В отличие от метода индекса чистоты пикселей (PPI), метод FIPPI выбирает начальный набор перекосов с помощью процесса автоматического формирования цели (ATGP) [1]. В результате алгоритм быстрее сходится и генерирует уникальный пиксель для каждого конечного элемента. Шаги, связанные с подходом FIPPI, резюмируются следующим образом:

    1. Вычислите полосы главных компонентов и уменьшите спектральную размерность входных данных с помощью MNF или PCA. Число полос главных компонентов, которые должны быть извлечены, устанавливается равным числу конечных элементов, которые должны быть извлечены.

    2. Найдите начальный набор конечных элементов с помощью метода ATGP. Начальный набор конечных элементов образует набор скошенных элементов {skewerj (1)} j = 1p, на которые проецируются входные данные.

    3. Для итерации 1 Пусть R1 является вектором выборки, который обозначает пиксельные спектры. Затем ортогонально спроецируйте вектор выборки на каждый перекос и найдите крайность.

    4. Сохраните расположение каждого экстремального значения и подсчитайте их вхождения. Число вхождений называется количеством PPI.

    5. Найдите число PPI для каждого пиксельного спектра и определите набор векторов выборки {rk} с максимальным количеством PPI в качестве конечных элементов.

    6. Создайте новый набор перекосов, объединив набор новых конечных элементов с начальным набором перекосов.

      {skewerj (2)} = {rk (1)} ∪{skewerj (1)}

    7. Для итерации 2 спроецируйте все векторы выборки на новый набор перекосов и определите новый набор конечных элементов. Затем создайте новый набор перекосов для следующей итерации {skewerj (3)}.

    8. Итерация останавливается, если набор перекосов, созданных в двух последовательных итерациях, остается прежним. Этот окончательный набор перекосов является конечными элементами входных данных.

      {skewerj (n + 1)} = {skewerj (n)}

    Ссылки

    [1] Чанг, С.-И. и А. Плаза. «Быстрый итеративный алгоритм реализации индекса чистоты пикселей». IEEE Geoscience and Remote Sensing Letters 3, No. 1 (январь 2006 года): 63-67. https://doi.org/10.1109/LGRS.2005.856701.

    См. также

    | |

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