OpenCV3.0中实现矩阵求逆有四种方法(LU、cholesky、eig以及SVD),使用187*187矩阵测试,100轮计算耗时如下(cholesky方法并没有得到结果):
179*179矩阵测试,100轮耗时如下:
Cholesky方法对输入矩阵限制严格(共轭对称和正定矩阵)LU分解耗时较短且对输入矩阵没有限制,因此重点对LU分解进行分析。其实现源码如下
LU分解比列主元消去法耗时短很多。
OpenCV实现的LU分解并没有按照原始的LU分解求解L和U矩阵的逆然后再进行矩阵乘法。
其思想是对增广矩阵做初等行变换,为了将除法转换为乘法,将对角线矩阵设置为其倒数,后面只计算乘法即可。由于工作需求,需要将其进行定点化在DSP上实现,下一篇博客分享定点化代码。
// LU decompose method to solv