Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV中两个矩阵的广义特征值_Opencv_Face Recognition_Eigenvector_Eigenvalue - Fatal编程技术网

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

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的特征向量 这似乎是一个很好的解决方案

你好,我正在从事一个涉及人脸识别的项目,我正在使用线性判别分析(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的特征向量


这似乎是一个很好的解决方案,但在我的例子中,散射矩阵B几乎是单峰的。我发现它的行列式的顺序是10^-36。所以我找不到它的逆,继续上面的解决方案。所以,有人能给我一个解决这个问题的方法吗,除了说分别编写广义特征值问题的代码

我在我的github存储库中提供了一个Fisherfaces实现。这包括一般矩阵的特征值解算器的实现,请参见:(我移植了great),这正是您要寻找的

如果你对代码有问题,请在项目页面上给我写个便条