Я пытаюсь выполнить PCA в EmguCV как:
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
. Работает нормально в других случаях. Это означает, что если у меня есть изображения размером 32*32=1024=noOfFeatures
, то мне понадобится как минимум 1024 образца, что очень непрактично. У меня просто около 100 образцов. Как я могу выполнить PCA в этом случае?