hyperpca

Анализ основных компонентов гиперспектральных данных

    Описание

    пример

    outputDataCube = hyperpca(inputData,numComponents) вычисляет заданное количество основных компонентов из спектральных полос куба гиперспектральных данных. Функция возвращает новый кубик данных, который содержит полосы основных компонентов. Количество спектральных полос в кубе выходных данных равно количеству заданных главных компонентов numComponents. Чтобы достичь сокращения спектральной размерности, заданное количество главных компонентов должно быть меньше, чем количество спектральных полос в кубе гиперспектральных данных inputData.

    [outputDataCube,coeff] = hyperpca(___) также возвращает коэффициенты основного компонента, оцененные по спектральной размерности куба гиперспектральных данных.

    пример

    [outputDataCube,coeff,var] = hyperpca(___) возвращает процент отклонения, сохраненный полосами основных компонентов в дополнение к выходным аргументам, упоминаемым в предыдущих синтаксисах.

    пример

    [___] = hyperpca(___,Name,Value) задает метод анализа основных компонентов (PCA) и дополнительные опции с помощью аргументов пары "имя-значение".

    Примечание

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

    Примеры

    свернуть все

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

    hcube = hypercube('paviaU.dat');

    Вычислите полосы основных компонентов куба гиперспектральных данных. Укажите количество основных компонентов для извлечения как 10. По умолчанию функция использует метод сингулярного разложения (SVD) для извлечения главных компонентов.

    reducedDataCube = hyperpca(hcube,10);

    Отобразите первые 10 спектральные полосы в кубе входных данных.

    figure
    montage(hcube.DataCube(:,:,1:10),'BorderSize',[10 10],'Size',[2 5],'DisplayRange',[]);

    Для визуализации перерассчитайте значения основного компонента, чтобы они лежали в области значений [0, 1]. Отображение всех полос основных компонентов, извлеченных из куба данных.

    figure
    rescalePC = rescale(reducedDataCube,0,1);
    montage(rescalePC,'BorderSize',[10 10],'Size',[2 5]);
    title('Principal Component Bands of Data Cube')

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

    hcube = hypercube('paviaU.dat');

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

    [outputDataCube,coeff,var] = hyperpca(hcube,3,'Method','Eig');

    Для визуализации перерассчитайте значения основного компонента, чтобы они лежали в области значений [0, 1]. Отображение всех полос основных компонентов, извлеченных из куба данных.

    figure
    rescalePC = rescale(outputDataCube,0,1);
    montage(rescalePC,'BorderSize',[10 10],'Size',[1 3]);
    title('Principal Component Bands of Data Cube')

    Постройте график коэффициентов основного компонента и отобразите процент отклонения, сохраненный каждым из главных компонентов. Суммирование сохраненных значений отклонения означает, что почти 99% информации во входных гиперспектральных данных получено 3 основными компонентами.

    figure
    plot(hcube.Wavelength,coeff);
    legend(['PC1';'PC2';'PC3'],'Location','SouthEast')
    text(430,0.19,'Retained variance');
    text(430,0.17,['PC1: ' num2str(var(1))])
    text(430,0.15,['PC2: ' num2str(var(2))])
    text(430,0.13,['PC3: ' num2str(var(3))])
    xlabel('Wavelength')
    ylabel('PC Coefficients')

    Входные параметры

    свернуть все

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

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

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

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

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

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

    Пример: hyperpca(hcube,10,'Method','eig')

    Метод для PCA, заданный как одно из следующих значений:

    • 'svd'- Вывести основные компоненты с помощью метода разложения сингулярных значений.

    • 'eig'- Выведение основных компонентов с помощью метода разложения собственных значений.

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

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

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

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

    Типы данных: logical

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

    свернуть все

    PCA преобразованный кубик данных, возвращенный как 3-D числовой массив размера M -by- N -by- numComponents. Пространственная размерность куба выходных данных такая же, как и у куба входных данных. Спектральная размерность куба выходных данных равна заданному числу главных компонентов numComponents.

    Если тип входных данных двойной, тип выходных данных также двойной. В противном случае выход данных является единичным.

    Типы данных: single | double

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

    Если тип входных данных двойной, тип данных coeff также двойной. В противном случае тип данных является единичным.

    Типы данных: single | double

    Отклонение, сохраненная каждым основным компонентом, возвращается как вектор длины, равной numComponents. Сохраненное отклонение задает общий процент отклонения, объясняемый каждым основным компонентом.

    Если тип входных данных двойной, тип данных var также двойной. В противном случае тип данных является единичным.

    Типы данных: single | double

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