我正在尝试在 EmguCV 中执行 PCA:
Matrix matrix = new Matrix(noOfSamples, noOfFeatures);
// put data in matrix
Matrix pMean = new Matrix(1, noOfFeatures);
Matrix pEigVals = new Matrix(noOfFeatures, 1);
Matrix pEigVecs = new Matrix(noOfFeatures, noOfFeatures);
CvInvoke.cvCalcPCA(matrix, pMean, pEigVals, pEigVecs, PCA_TYPE.CV_PCA_DATA_AS_ROW);
但是当noOfFeatures > noOfSamples
. 它在其他情况下工作正常。这意味着如果我有 size 的图像32*32=1024=noOfFeatures
,那么我将需要至少 1024 个样本,这是不切实际的。我只有大约 100 个样本。在这种情况下如何执行 PCA?