【问题标题】:Incorrect results with invert in opencv在opencv中反转结果不正确
【发布时间】:2014-04-09 15:42:41
【问题描述】:

我在 c++ 中使用 opencv 库进行矩阵求逆。我使用带有 DECOMP_SVD 标志的函数 invert 。对于非奇异矩阵,它使用 SVD 方法计算。

但是,当我将奇异矩阵(行列式 = 0)与 Matlab 中的输出进行比较以进行相同的求逆时,它给了我一个不正确的答案。

答案相差 1e+4!

我在matlab中使用的方法是pinv()和svd()。 pinv() 使用 moore-Penrose 方法。 需要帮忙 提前致谢!

例子:

original =

    0.2667    0.0667   -1.3333    2.2222
    0.0667    0.0667   -0.0000    0.8889
   -1.3333   -0.0000    8.8889   -8.8889
    2.2222    0.8889   -8.8889   20.7408


Inverse from matlab =

   1.0e+04 *

    9.8888   -0.0000    0.7417   -0.7417
   -0.0000    9.8888   -0.7417   -0.7417
    0.7417   -0.7417    0.1113    0.0000
   -0.7417   -0.7417    0.0000    0.1113

【问题讨论】:

    标签: c++ matlab opencv matrix matrix-inverse


    【解决方案1】:

    您的矩阵是病态的(弱主对角线)。 尝试增加主要的对角线元素,我认为误差应该会减少。

    【讨论】:

    • 谢谢,我将 1E-5 添加到主要对角线元素,这给了我正确的结果!
    猜你喜欢
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多