【发布时间】: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