使用OpenCV和C++解决线性方程组问题

5

您能否向我解释一下OpenCV C++中有多少种方法可以解决线性方程组?如果已经存在已编写的工具或函数,我可以列出最有效的方法吗? 我的系统必须解决有关数字图像处理的方程。

1个回答

11
如果您有一个系统 A*x = B,则您的解决方案是 x=A^(-1)*B。 OpenCV允许您使用三种不同的 invert() 方法参数选择:
  1. 使用选择最佳主元素的高斯消元法。

  2. 奇异值分解(SVD)方法。

  3. Cholesky分解;矩阵必须是对称的和正定的。

更多信息请参见: http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#invert 编辑: 此外,还有一个 solve() 方法,具有附加方法: http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#solve 编辑2: 这里有一个所有三种方法的简短性能比较: Fastest method in inverse of matrix

1
可能是openCV文档中的错误,我会在答案中进行更改,并添加一些关于性能的参考。 - Micka
1
如果你想解决 Ax=b,你应该总是使用 solve(),而不是求逆矩阵(为了稳定性、准确性和性能)。 - Ela782

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接