OpenCV中两个矩阵的广义特征值
你好,我正在从事一个涉及人脸识别的项目,我正在使用线性判别分析(LDA)。LDA需要找到类间散射矩阵和类内散射矩阵的广义特征向量,这就是我被击中的地方。我正在使用opencv和DevC++进行编码。基本上,问题看起来是这样的OpenCV中两个矩阵的广义特征值,opencv,face-recognition,eigenvector,eigenvalue,Opencv,Face Recognition,Eigenvector,Eigenvalue,你好,我正在从事一个涉及人脸识别的项目,我正在使用线性判别分析(LDA)。LDA需要找到类间散射矩阵和类内散射矩阵的广义特征向量,这就是我被击中的地方。我正在使用opencv和DevC++进行编码。基本上,问题看起来是这样的 A*v=lambda*B*v 其中A和B是应找到广义特征向量的矩阵 lambda是特征值,v是向量 在研究这个问题时,许多人建议先计算B的倒数,然后再乘以A*v (inv(B)*A)*v=lambda*v 然后计算inv(B)*A的特征向量 这似乎是一个很好的解决方案
A*v=lambda*B*v
其中A和B是应找到广义特征向量的矩阵
lambda是特征值,v是向量
在研究这个问题时,许多人建议先计算B的倒数,然后再乘以A*v
(inv(B)*A)*v=lambda*v
然后计算inv(B)*A的特征向量
这似乎是一个很好的解决方案,但在我的例子中,散射矩阵B几乎是单峰的。我发现它的行列式的顺序是10^-36。所以我找不到它的逆,继续上面的解决方案。所以,有人能给我一个解决这个问题的方法吗,除了说分别编写广义特征值问题的代码 我在我的github存储库中提供了一个Fisherfaces实现。这包括一般矩阵的特征值解算器的实现,请参见:(我移植了great),这正是您要寻找的 如果你对代码有问题,请在项目页面上给我写个便条