opencv计算矩阵排名

时间:2012-07-18 18:47:32

标签: c++ visual-studio-2008 opencv

我正在努力寻找矩阵的排名。在matlab中,这是相当简单的,但我使用的是visual studio 2008(c ++)。我最近安装了openCV,它适用于我的大部分矩阵算法,除了我无法弄清楚如何使用openCV来获得矩阵的等级。在我的在线研究中,我发现显然cvSVD可以给我排名 http://www.emgu.com/wiki/files/1.3.0.0/html/55d6f4d2-223d-8c55-2770-2b6a9c6eefa2.htm

但我不知道cvSVD将如何返回此特定属性。关于从openCV获得矩阵等级的任何想法

感谢。

1 个答案:

答案 0 :(得分:2)

阅读以下内容

http://en.wikipedia.org/wiki/Singular_value_decomposition#Applications_of_the_SVD

范围,零空间和等级部分中,它解释了如何从奇异值中获取Rank。引用此页面:

  

因此,M的等级等于非零奇异的数   值

所以基本上你可以计算非零奇异值的数量,即排名。根据您在问题中提供的链接,您在opencv中的SVD计算函数应该返回奇异值的矩阵或向量 - 如果它是矩阵,则奇异值位于此矩阵的主对角线上。从这里你应该没问题。可能有一种更简单的方法,但我不熟悉opencv。