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