opencv - OpenCV中两个矩阵的广义特征值

标签 opencv face-recognition eigenvector eigenvalue

您好,我正在从事一个涉及人脸识别的项目,该项目正在使用线性判别分析(LDA)。 LDA要求找到类散点矩阵之间以及类散点矩阵之间的广义特征 vector ,这就是我的印象。我在DevC++中使用opencv进行编码。基本上问题看起来像

A*v=lambda*B*v

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

在搜索了这个问题后,许多人建议去计算B的逆,然后乘以A * v
(inv(B)*A)*v=lambda*v 

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

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

最佳答案

我在https://github.com/bytefish/opencv/tree/master/lda的github存储库中提供了Fisherfaces实现。这包括针对一般矩阵的特征值求解器的实现,请参见:https://github.com/bytefish/opencv/blob/master/lda/include/decomposition.hpp(我已经移植了伟大的JAMA solver),这正是您所需要的。

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

关于opencv - OpenCV中两个矩阵的广义特征值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059849/

相关文章:

python - 如何保存OpenCV检测到的面部

Android:如何使用opencv获得良好的canny边缘检测的高低阈值

opencv - 棋盘识别质量度量的最佳实践

python-2.7 - 查找一列中 “mean positioned”白色像素并为每列重复该过程的算法

python - MATLAB 中对称矩阵的复特征向量

matlab - 在 Matlab 中以数值方式查找广义特征向量

python - 计算检测到的物体像素数占图片总像素数的百分比

python - 尝试人脸识别时出现明显的过时警告和值错误

c++ - 如何快速准确地获得特征值和特征向量?