Cv :: PCA (openCV) вычисляет ковариационную матрицу самих данных? или мы должны передать коварикант матрицу к нему?

Я пытаюсь сделать распознавание лица с использованием анализа основных компонентов (PCA) в сочетании с машиной опорных векторов (SVM). но я запутался в cv :: pca! в соответствии с этот документ для вычисления собственных векторов и собственных значений мы должны сначала вычислить ковариационную матрицу данных, затем вычислить собственные векторы и собственные значения из коварисной матрицы. в своих примерах кодов он не вычисляет ковариационную матрицу, он просто передает данные в конструктор. так что cv :: pca вычисляет саму ковариационную матрицу? или мы должны вычислить его и передать в cv :: pca constroctor?
по размеру собственных векторов и собственных значений, я думаю, он не рассчитывает их. я прав?

1

Решение

cv::PCA вычисляет саму ковариационную матрицу.

Увидеть доктор:

Для конструктора по умолчанию:

Конструктор по умолчанию инициализирует пустую структуру PCA. Другие конструкторы инициализируют структуру и вызывают PCA :: operator () ().

Но в вашем примере связанного кода они используют другой конструктор.
Для operator():

выполняет PCA

Оператор выполняет PCA предоставленного набора данных. Можно использовать одну и ту же структуру PCA для нескольких наборов данных. То есть, если структура ранее использовалась с другим набором данных, существующие внутренние данные восстанавливаются, а новые собственные значения, собственные векторы и среднее значение выделяются и вычисляются.

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

2

Другие решения


По вопросам рекламы [email protected]