【问题标题】:Generalized eigenvalue for two matrices in OpenCVOpenCV中两个矩阵的广义特征值
【发布时间】:2012-02-22 00:13:58
【问题描述】:

您好,我正在从事一个涉及人脸识别的项目,为此我正在使用线性判别分析 (LDA)。 LDA 要求找到类间散布矩阵和类内散布矩阵的广义特征向量,这就是我印象深刻的地方。我正在使用带有 DevC++ 的 opencv 进行编码。基本上问题看起来像

A*v=lambda*B*v

其中 A 和 B 是应该找到广义特征向量的矩阵 lambda 是特征值,v 是向量

很多人在搜索这个问题时建议去计算B的倒数,然后乘以A*v

(inv(B)*A)*v=lambda*v 

然后计算 inv(B)*A 的特征向量。

这似乎是一个很好的解决方案,但在我的情况下,散布矩阵 B 几乎是奇异的。我发现它的行列式是 10^-36 的顺序。所以我找不到它的倒数并继续上述解决方案。所以有人可以建议我一种摆脱这个问题的方法,除了单独为广义特征值问题编写代码。

【问题讨论】:

    标签: opencv face-recognition eigenvector eigenvalue


    【解决方案1】:

    我在我的 github 存储库 https://github.com/bytefish/opencv/tree/master/lda 中提供了一个 Fisherfaces 实现。这包括实现一般矩阵的特征值求解器,请参阅:https://github.com/bytefish/opencv/blob/master/lda/include/decomposition.hpp(我已经移植了很棒的 JAMA solver),这正是您正在寻找的。​​p>

    如果您对代码有任何疑问,请在项目页面上给我留言http://www.bytefish.de/blog/fisherfaces_in_opencv

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 2019-04-27
      • 2011-09-29
      • 1970-01-01
      相关资源
      最近更新 更多