exponenta event banner

PPI

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

    Описание

    пример

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

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

    пример

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

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

    • извлечение сигнатур конечных элементов из уменьшенных гиперспектральных данных.

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('paviaU.hdr');

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

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

    Вычислите конечные элементы с помощью метода индекса чистоты пикселей (PPI). По умолчанию ppi функция использует преобразование максимальной доли шума (MNF) для предварительной обработки. Количество перекосов, используемых по умолчанию для проекции, равно 104ten, увеличенное до четырех.

    endmembers = ppi(hcube.DataCube,numEndmembers);

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

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

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

    hcube = hypercube('paviaU.hdr');

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

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

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

    endmembers = ppi(hcube.DataCube,numEndmembers,'NumVectors',100,'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 - количество спектральных полос во входных гиперспектральных данных.

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

    Аргументы пары «имя-значение»

    Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

    Пример: ppi(inputData,7,'NumVectors',100,'Method','None')

    Число случайных единичных векторов, указанных как разделенная запятыми пара 'NumVectors"и положительное скалярное целое число. Точность выделенных конечных элементов увеличивается с числом векторов, используемых для проекции. Однако увеличение числа векторов также увеличивает вычислительную сложность.

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

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

    Если указать значение как 'MNF' или 'PCA', функция сначала уменьшает спектральную размерность входных данных с помощью указанного способа. Затем он вычисляет сигнатуры конечных элементов из сокращенных данных.

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

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

    Если указать значение как 'None', функция не выполняет уменьшение размерности. Сигнатуры конечных элементов извлекаются непосредственно из входных данных.

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

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

    свернуть все

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

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

    Алгоритмы

    Метод индекса чистоты пикселя (PPI) вычисляет ортогональные проекции значений гиперспектральных данных на множество случайно сформированных единичных векторов, известных как перекосы. Затем метод вычисляет счетчик PPI для каждого значения данных. Число PPI - это число раз, когда значение данных становится экстремальной точкой при проецировании на эти перекосы. Эти значения данных с более чем ожидаемым количеством PPI составляют конечные элементы гиперспектральных данных. ИЦП является неитеративным методом, и соответствующие этапы суммируются следующим образом:

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

    2. Создайте k перекосов такой же длины, что и входные данные.

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

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

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

    6. Упорядочить спектры пикселей в порядке убывания их количества PPI и идентифицировать первое n спектров пикселей в упорядоченном наборе как конечные элементы. Количество выбираемых конечных элементов определяется входным аргументом numEndmembers.

    Ссылки

    [1] J.W Boardman, F.A. Kruse и R.O. Green, «Отображение целевых сигнатур посредством частичного объединения данных AVIRIS»., Технический отчет, Калифорния, США, 1995.

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