我需要在OpenCV中对稀疏矩阵SparseMat进行矩阵运算(主要是乘法和逆运算)。
我注意到你只能迭代并向SparseMat插入值
我可以使用外部代码吗? (或者我错过了什么?)
答案 0 :(得分:6)
只是稀疏矩阵不适合反演或矩阵 - 矩阵乘法,所以没有内置函数是非常合理的。它们实际上更多地用于矩阵向量乘法(通常在求解迭代线性系统时)。
您可以做的是求解N个线性系统(将单位矩阵的列作为右侧)以获得逆矩阵。但是,无论如何你需要N * N存储用于逆矩阵,因此使用具有通常分解算法的密集矩阵将是更好的方法,因为在进行N次迭代解决方案时性能增益不会那么高。或者像SuperLU或TAUCS这样的稀疏直接求解器可能有所帮助,但我怀疑OpenCV是否具有这样的功能。
您还应该考虑是否确实需要逆矩阵。这种问题通常也可以通过求解线性系统来解决,这可以通过例如非常容易和快速的稀疏矩阵来完成。 CG或BiCGStab。
答案 1 :(得分:-2)
您可以将SparseMat转换为Mat,执行您需要的操作然后转换回来。
答案 2 :(得分:-5)
您可以直接使用 Eigen 库。 Eigen 与 OpenCV 一起使用非常好。