0

我想使用 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()

4

3 回答 3

2

我需要正确安装 scipy

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

于 2009-10-28T17:08:43.793 回答
1

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

于 2009-10-28T15:41:19.193 回答
0

停留在点 x0 附近的最小二乘法 是否有用,即是否有您想要靠近的相机矩阵 x0 ?
“远离一些 x0”是非凸的,讨厌的;保持在 x0 或 x1 ...附近,即最小化
|Ax-b|^2 + w^2 (|x-x0|^2 + |x-x1|^2 + ...)很容易。

于 2009-11-02T13:08:33.140 回答