相机矩阵的最小二乘解[numpy]

时间:2009-10-28 00:37:54

标签: python numpy computer-vision

我想使用numpy的最小二乘算法来解决来自6个已知3D的相机矩阵 - >二维点对应。

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

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()

3 个答案:

答案 0 :(得分:2)

  

我需要正确安装scipy

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

least squares staying near a point x0 是否有用,即你想要靠近的相机矩阵x0? “远离某些x0”是非凸的,令人讨厌的;保持接近x0或x1 ......,即最小化
|Ax-b|^2 + w^2 (|x-x0|^2 + |x-x1|^2 + ...)很简单。