我想使用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()
?
答案 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 + ...)
很简单。