我尝试使用主成分分析(PCA)与支持向量机(SVM)结合进行人脸识别。但我对cv :: pca感到困惑!根据{{3}}计算特征向量和特征值,我们首先应该计算数据的协方差矩阵,然后从共变矩阵计算特征向量和特征值。在它的示例代码中,它不计算协方差矩阵,它只是将数据传递给构造函数。那么cv :: pca计算协变矩阵本身呢?或者我们应该计算它并将其传递给cv :: pca constroctor? 从特征向量和特征值的维度我猜它不会计算它们。我是对的吗?
答案 0 :(得分:2)
cv::PCA
会计算协方差矩阵本身。
请参阅doc:
对于默认构造函数:
默认构造函数初始化一个空的PCA结构。其他构造函数初始化结构并调用PCA :: operator()()。
但在您的链接代码示例中,他们使用其他构造函数。
对于operator()
:
执行PCA
操作员执行所提供数据集的PCA。为多个数据集重用相同的PCA结构是安全的。也就是说,如果结构先前已与其他数据集一起使用,则会回收现有的内部数据,并分配和计算新的特征值,特征向量和均值。
计算出的特征值从最大到最小排序,相应的特征向量存储为特征向量行。