exponenta event banner

hyperpca

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

    Описание

    пример

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

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

    пример

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

    пример

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

    Примечание

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

    Примеры

    свернуть все

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

    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 куба входных данных с помощью декомпозиции значений Eigen. Укажите количество главных компонентов для извлечения как 3. Выведите полосы, коэффициенты и сохраненную дисперсию главного компонента (ПК).

    [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