cvCalcPCAによる画像列の主成分分析

m_SizeImage = height * width * 3;

m_VectorsInput = cvCreateMat( m_FileMax, m_SizeImage, CV_32F );
m_VectorsEigen = cvCreateMat( m_FileMax, m_SizeImage, CV_32F );
m_VectorAverage = cvCreateMat( 1, m_SizeImage, CV_32F );
m_ValuesEigen = cvCreateMat( 1, m_FileMax, CV_32F );

cvCalcPCA(m_VectorsInput, m_VectorAverage, m_ValuesEigen, m_VectorsEigen, CV_PCA_DATA_AS_ROW);

IplImage *imgSrc, *imgTgt, *imgDif;
imgSrc = MyLoadImage( locTarget );
imgTgt = cvCreateImage( m_Size, IPL_DEPTH_8U, 3 );

CvMat *matSrc = cvCreateMat( 1, m_SizeImage, CV_32F );
ConvertRGBToMat( imgSrc, matSrc->data.fl );
///// 特徴ベクトルをどう確保するのか
//CvMat *matAspect = cvCreateMat( 1, m_CountPrincipal, CV_32F );
CvMat *matAspect = cvCreateMat( m_CountPrincipal, 1, CV_32F );

///// 投影
cvProjectPCA( matSrc, m_VectorAverage, m_VectorsEigen, matAspect );
///// 逆投影
cvBackProjectPCA( matAspect, m_VectorAverage, m_VectorsEigen, matSrc );

ConvertMatToRGB( matSrc->data.fl, imgTgt );