在openCV中执行SparseMat(稀疏矩阵)操作

时间:2011-07-29 11:14:46

标签: opencv sparse-matrix

我需要在OpenCV中对稀疏矩阵SparseMat进行矩阵运算(主要是乘法和逆运算)。
我注意到你只能迭代并向SparseMat插入值 我可以使用外部代码吗? (或者我错过了什么?)

3 个答案:

答案 0 :(得分:6)

只是稀疏矩阵不适合反演或矩阵 - 矩阵乘法,所以没有内置函数是非常合理的。它们实际上更多地用于矩阵向量乘法(通常在求解迭代线性系统时)。

您可以做的是求解N个线性系统(将单位矩阵的列作为右侧)以获得逆矩阵。但是,无论如何你需要N * N存储用于逆矩阵,因此使用具有通常分解算法的密集矩阵将是更好的方法,因为在进行N次迭代解决方案时性能增益不会那么高。或者像SuperLUTAUCS这样的稀疏直接求解器可能有所帮助,但我怀疑OpenCV是否具有这样的功能。

您还应该考虑是否确实需要逆矩阵。这种问题通常也可以通过求解线性系统来解决,这可以通过例如非常容易和快速的稀疏矩阵来完成。 CG或BiCGStab。

答案 1 :(得分:-2)

您可以将SparseMat转换为Mat,执行您需要的操作然后转换回来。

答案 2 :(得分:-5)

您可以直接使用 Eigen 库。 Eigen OpenCV 一起使用非常好。