fippi

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

    Описание

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('paviaU.hdr');

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

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

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

    endmembers = fippi(hcube.DataCube,numEndmembers);

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

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

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

    hcube = hypercube('paviaU.hdr');

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

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

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

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

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

    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 andN является количеством строк и столбцов в гиперспектральных данных соответственно. C является количеством диапазонов в гиперспектральных данных.

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

    Количество endmembers, который будет извлечен в виде положительного скалярного целого числа. Значение должно быть в области значений [1 C. C является количеством диапазонов во входе гиперспектральные данные. Можно найти количество спектрально отличного endmembers во входных данных при помощи countEndmembersHFC функция.

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

    Метод сокращения размерности в виде разделенной запятой пары 'ReductionMethod'и один из 'MNF' или 'PCA'.

    Задайте значение как

    • 'MNF' — Выполнять сокращение размерности с помощью метода максимальной шумовой части (MNF).

    • 'PCA' — Выполнять сокращение размерности с помощью метода анализа главных компонентов (PCA).

    Функция вычисляет endmembers из уменьшаемых данных.

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

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

    свернуть все

    Подписи Endmember, возвращенные как матрица размера C-by-K и тип данных то же самое как вход гиперспектральные данные.

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

    Алгоритмы

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

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

    2. Найдите начальный набор endmembers при помощи метода ATGP. Начальный набор endmembers формирует набор вертелов {skewerj(1)}j=1p на который вы проектируете входные данные.

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

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

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

    6. Сгенерируйте новый набор вертелов путем объединения набора нового endmembers с начальным набором вертелов.

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

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

    8. Остановки итерации, если набор вертелов, сгенерированных в двух последовательных итерациях, остается то же самое. Этот итоговый набор вертелов является endmembers входных данных.

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

    Ссылки

    [1] Чанг, C.-I., и A. Площадь. “Быстрый Итеративный алгоритм для Реализации Пиксельного индекса Чистоты”. Геонаука IEEE и Буквы Дистанционного зондирования 3, № 1 (январь 2006): 63–67. https://doi.org/10.1109/LGRS.2005.856701.

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

    | |

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