【问题标题】:Does cv::PCA (openCV) calculate covariance matrix of data itself? or we should pass covarince matrix to it?cv::PCA (openCV) 是否计算数据本身的协方差矩阵?或者我们应该将协方差矩阵传递给它?
【发布时间】:2015-09-16 19:32:09
【问题描述】:

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

【问题讨论】:

    标签: c++ opencv pca


    【解决方案1】:

    cv::PCA 自己计算协方差矩阵。

    doc

    对于默认构造函数:

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

    但在您的链接代码示例中,它们使用了另一个构造函数。 对于operator()

    执行 PCA

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多