问一下:求协方差矩阵的时候得出的矩阵大小是多少?我看公式,得出的应该是列数*列数,即如果图像大小为m*n,得出的协方差矩阵应该是n*n的,但是看别人的程序,得出的矩阵大小怎么是样本数*样本数呢?

解决方案 »

  1.   

    opencv的cvCalcCovarMatrix可以用来计算协方差矩阵
      

  2.   

    1.OpenCV和matlab计算出来的协方差是不同的,关键之处是除以n还是n-1的问题,我看过有人对此的解释,还是不知用谁的,提醒楼主注意一下。
    2.如果你用的是一维PCA的方法,你说的两个都不对:一般是将图像转成一列,就是一列有m*n个元素,有k个样本的话,就是一个(m*n)*k的矩阵,这时协方差矩阵一般应该是(m*n)*(m*n).
      

  3.   

    我现在用的是分块加权的行列二维主成分分析算法,先把图像分成2*2,然后再利用行列二维主成分分析算法(即(2D)^2PCA)每块大小为56*46,样本数200,现在是 对每个子图像进行处理,我已经计算好了去均值图像,现在求协方差,不懂这个协方差怎么求?能否详细说一下?
      

  4.   

    我的理解:
    1.关于任意一个矩阵的协方差的计算:
    http://www.pinkyway.info/2010/08/31/covariance/;
    2.对于PCA做人脸识别:中心化(也就是你说的去均值)后的矩阵再乘以它的转置矩阵,结果就是论文中说的协方差矩阵了,之后求它的特征值和特征向量了就可以了... 对于1维PCA,是我说的那样的,对于2维PCA我记得不太清了,可能也是这样计算的。
      

  5.   

    我已经知道了,二维的也是这样算,算出来的是n*n的,但是提取的特征维数较高,为m*p(m表示图像矩阵行,n表示图像矩阵列,p表示投影轴个数),不过还是谢谢你!我还在实践阶段,有问题再请教你哈!
      

  6.   

    显然协方差应该是个方阵啊,做成 样本数*样本数 这个矩阵小 好处理啊 你还是好好看看PCA的算法吧