有什么方法可以计算OpenCV中的矩阵对数吗?我知道它不能作为库函数使用,但是,如果能找到一个好的来源(论文、教科书等),我们将不胜感激。
事实上,我正在对Eigen库中的矩阵对数进行编程,该库显然在一些Willow Garage库中使用;不确定OpenCV。在我看来,Higham的书(见aix的答案)是最好的参考,我正在他的书中实现算法11.11。不过,这是一个相当复杂的算法。
对角化(如Alexandre的评论)是一种易于编程的方法,它对对称正定矩阵非常有效。它也适用于许多通用矩阵。然而,它对于特征值接近的矩阵是不准确的,对于不可对角化的矩阵也是失败的。
如果你想要比对角化更稳健但比Higham的算法11.11更复杂的东西,那么我建议你先进行Schur分解,然后进行逆缩放和平方。这是海厄姆书中的算法11.10,并在"将矩阵的对数近似到指定精度"一文中进行了描述(http://dx.doi.org/10.1137/S0895479899364015,预印本http://eprints.ma.man.ac.uk/318/)。
如果您使用OpenCV矩阵,您可以很容易地将映射到Eigen3阵。见此帖:
OpenCV CV::Mat和特征::矩阵
然后,Eigen3库有一个可以使用的矩阵对数函数:
http://eigen.tuxfamily.org/dox/unsupported/group__MatrixFunctions__Module.html
它在不受支持的模块下,但这不是问题,这只是意味着:
这些模块是来自不同用户的贡献。已提供"照原样";,没有任何支持
--http://eigen.tuxfamily.org/dox/unsupported/
希望这能有所帮助。