【问题标题】:least square solution to camera matrix [numpy]相机矩阵的最小二乘解[numpy]
【发布时间】:2023-03-23 01:20:01
【问题描述】:

我想使用 numpy 的最小二乘算法从 6 个已知的 3D -> 2D 点对应关系中求解相机矩阵。

我一直使用这个网站作为参考:

http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/OWENS/LECT9/node4.html

目前我的相机矩阵似乎有非常小的值:

[[ -1.01534118e-11   3.87508914e-11  -2.75515236e-11   5.57599976e+02]
 [ -1.84008233e-11   2.78083388e-11  -9.67788509e-11   9.77599976e+02]
 [ -2.59237076e-14  -8.57647287e-15  -9.09272657e-14   1.00000000e+00]]

我希望能够约束 numpy 求解器,以防止它求解 Camera 矩阵几乎为零的平凡解。
有谁知道如何约束numpy.linalg.lstsqr()?

【问题讨论】:

  • 如果 numpy 不能自行执行此操作(很有可能,MatLab 和其他库也是如此),也许您可​​以对矩阵进行归一化,使其大部分值都在一个范围内这在数字上更“友好”(当然,如果这样做不会使其他一些计算等无效)

标签: python numpy computer-vision


【解决方案1】:

我需要正确安装 scipy

安装 scipy 的注意事项,自 8.04 以来的 ubuntu 发行版有一个损坏的 scipy 构建。这已在最新的 9.10 beta 版本中得到解决。您可以从头开始构建 scipy,但这通常不是一件容易的事情。只是提醒一下,因为我们在这里花了一些努力才弄清楚这一点。也许它会为您节省一些挫败感 =)

【讨论】:

    【解决方案2】:

    我怀疑您可能需要使用 scipy.optimize 中的 fmin_* 例程。 optimization tutorial 涵盖基本使用,scipy.optimize.fmin_slsqp 可以包含约束。

    【讨论】:

    • 你可能是对的,fmin_slsqp 看起来可以做我想做的事。我需要正确安装 scipy。另外,如果有人可以向我指出使用线性优化解决相机矩阵的示例代码,那将很有帮助。
    • 从源代码构建 Scipy 有点邪恶。就个人而言,我使用 Enthought Python Distribution (enthought.com/products/epd.php),因为在大多数平台上安装只需要 5 分钟,然后提供一致的环境。 Sage (sagemath.org) 也很出色,我在 EPD 之前使用过。
    【解决方案3】:

    会least squares staying near a point x0 有什么用,即是否有一个你想靠近的相机矩阵 x0?
    “远离一些 x0”是非凸的,讨厌的;靠近 x0 或 x1 ...,即最小化
    |Ax-b|^2 + w^2 (|x-x0|^2 + |x-x1|^2 + ...) 很容易。

    【讨论】:

      猜你喜欢
      • 2020-05-30
      • 2012-07-10
      • 1970-01-01
      • 2015-12-13
      • 2021-06-06
      • 2015-09-26
      • 2018-05-16
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多