hyperpca

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

    Описание

    пример

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

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

    пример

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

    пример

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

    Примечание

    Эта функция требует Image Processing Toolbox™ Гиперспектральная Библиотека Обработки изображений. Можно установить Image Processing Toolbox Гиперспектральная Библиотека Обработки изображений из 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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

    Метод для PCA в виде одного из этих значений:

    • svd'—, Чтобы вывести основные компоненты при помощи метода сингулярного разложения.

    • eig'—, Чтобы вывести основные компоненты при помощи собственного метода разложения значения.

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

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

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

    • false или 0 — Вычислить полосы основного компонента без среднего значения, сосредотачивающего диапазоны в кубе входных данных.

    Типы данных: логический

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

    свернуть все

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

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

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

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

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

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

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

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

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

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

    | |

    Введенный в R2020a