cv :: PCA(openCV)是否计算数据本身的协方差矩阵?或者我们应该将covarince矩阵传递给它?

时间:2015-09-16 19:32:10

标签: c++ opencv pca

我尝试使用主成分分析(PCA)与支持向量机(SVM)结合进行人脸识别。但我对cv :: pca感到困惑!根据{{​​3}}计算特征向量和特征值,我们首先应该计算数据的协方差矩阵,然后从共变矩阵计算特征向量和特征值。在它的示例代码中,它不计算协方差矩阵,它只是将数据传递给构造函数。那么cv :: pca计算协变矩阵本身呢?或者我们应该计算它并将其传递给cv :: pca constroctor? 从特征向量和特征值的维度我猜它不会计算它们。我是对的吗?

1 个答案:

答案 0 :(得分:2)

cv::PCA会计算协方差矩阵本身。

请参阅doc

对于默认构造函数:

  

默认构造函数初始化一个空的PCA结构。其他构造函数初始化结构并调用PCA :: operator()()。

但在您的链接代码示例中,他们使用其他构造函数。 对于operator()

  

执行PCA

     

操作员执行所提供数据集的PCA。为多个数据集重用相同的PCA结构是安全的。也就是说,如果结构先前已与其他数据集一起使用,则会回收现有的内部数据,并分配和计算新的特征值,特征向量和均值。

     

计算出的特征值从最大到最小排序,相应的特征向量存储为特征向量行。