ppi

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

    Описание

    пример

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

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

    пример

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

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

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

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('paviaU.hdr');

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

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

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

    endmembers = ppi(hcube.DataCube,numEndmembers);

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

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

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

    hcube = hypercube('paviaU.hdr');

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

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

    Вычислите endmembers использование метода пиксельного индекса чистоты (PPI). Задайте количество единичных векторов, которые будут использоваться для проекции как 100. Кроме того, выберите метод анализа главных компонентов (PCA) для сокращения размерности.

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

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

    Аргументы name-value

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

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

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

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

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

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

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

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

    Если вы задаете значение как 'None', функция не выполняет сокращение размерности. endmember подписи извлечены непосредственно из входных данных.

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

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

    свернуть все

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

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

    Алгоритмы

    Метод пиксельного индекса чистоты (PPI) вычисляет ортогональные проекции гиперспектральных значений данных на наборе случайным образом сгенерированных единичных векторов, известных как skewers. Затем метод вычисляет счет PPI для каждого значения данных. Количество PPI является числом раз, значение данных заканчивается как экстремальная точка, когда спроектировано на этих вертелах. Те значения данных с больше, чем ожидаемым количеством количества PPI включают endmembers гиперспектральных данных. PPI является неитерационным методом, и включенные шаги получены в итоге можно следующим образом:

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

    2. Сгенерируйте количество k вертелов длины то же самое как входные данные.

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

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

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

    6. Расположите пиксельные спектры в порядке убывания их количеств PPI и идентифицируйте первое количество n пиксельных спектров в упорядоченном множестве как endmembers. Количество endmembers, который будет выбран, задано входным параметром numEndmembers.

    Ссылки

    [1] Биржевой маклер J.W, Ф.А. Крюзе и Р.О. Грин, "Сопоставляя целевые подписи через частичное несмешивание данных AVIRIS". Текникэл-Репорт, Калифорния, США, 1995.

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

    | | |

    Введенный в R2020a