Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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中执行SparseMat(稀疏矩阵)操作_Opencv_Sparse Matrix - Fatal编程技术网

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

在openCV中执行SparseMat(稀疏矩阵)操作,opencv,sparse-matrix,Opencv,Sparse Matrix,我需要在OpenCV中对稀疏矩阵稀疏进行矩阵运算(主要是乘法和求逆)。 我注意到您只能迭代并向SparseMat插入值。 是否有我可以使用的外部代码?(或者我遗漏了什么?只是稀疏矩阵并不真正适合于求逆或矩阵乘法,因此没有内置函数是很合理的。它们实际上更多地用于矩阵向量乘法(通常在求解迭代线性系统时) 你能做的就是解N个线性系统(以恒等矩阵的列为右边)得到逆矩阵。但无论如何,逆矩阵都需要N*N存储,因此使用密集矩阵和通常的分解算法将是更好的方法,因为在执行N个迭代解时,性能增益不会那么高。或者一些

我需要在OpenCV中对稀疏矩阵稀疏进行矩阵运算(主要是乘法和求逆)。
我注意到您只能迭代并向SparseMat插入值。

是否有我可以使用的外部代码?(或者我遗漏了什么?

只是稀疏矩阵并不真正适合于求逆或矩阵乘法,因此没有内置函数是很合理的。它们实际上更多地用于矩阵向量乘法(通常在求解迭代线性系统时)

你能做的就是解N个线性系统(以恒等矩阵的列为右边)得到逆矩阵。但无论如何,逆矩阵都需要N*N存储,因此使用密集矩阵和通常的分解算法将是更好的方法,因为在执行N个迭代解时,性能增益不会那么高。或者一些稀疏直接解算器喜欢或可能会有所帮助,但我怀疑OpenCV是否有这样的功能


如果你真的需要逆矩阵,你也应该考虑一下。通常这类问题也可以通过求解线性系统来解决,这可以通过CG或BiCGStab等方法轻松快速地使用稀疏矩阵。

您可以将稀疏矩阵转换为矩阵,执行所需操作,然后再转换回。

您可以直接使用特征库Eigen与OpenCV配合得非常好

我确实需要逆矩阵本身,因为它将在以后的算法中用作信号的滤波器。我有理由相信逆矩阵也是相当稀疏的,所以稀疏矩阵的逆算法比非稀疏矩阵的逆算法更有效,但你确实有一点…@Boaz我认为,一般来说,稀疏矩阵的逆不一定是稀疏的。欢迎来到。你能不能在你的帖子上详细介绍一下,这样你提到的东西背后的逻辑就可以被理解了?有关更多信息,请参阅有关的一些有用信息。非常感谢。通常,使用SparseMat的原因是因为原始的
Mat
无法放入计算机内存。转换为Mat不是一个选项。如果您有更多内容要添加到自己的答案中,您可以单击“编辑”按钮添加该内容,而不是添加其他答案。您可以随时编辑自己的帖子,如果其他人的帖子需要改进,您也可以建议对其进行编辑。如果您不喜欢此帖子,您可以删除您的答案。把你想在第一个答案中说的话合并起来。