fippi

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

    Описание

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('paviaU.hdr');

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

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

    Вычислите конечные элементы с помощью метода Fast iterative pixel индекса (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);

    Вычислите конечные элементы с помощью метода Fast iterative pixel индекса (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' - Выполнить уменьшение размерности методом максимальной шумовой фракции (МНФ).

    • '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] Chang, C.-I., and A. Plaza. «Быстрый итеративный алгоритм для реализации индекса чистоты пикселей». IEEE Geoscience and Remote Sensing Letters 3, № 1 (январь 2006 года): 63-67. https://doi.org/10.1109/LGRS.2005.856701.

    См. также

    | |

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