2009-10-28 6 views
0

numpy의 최소 제곱 알고리즘을 사용하여 6 개의 알려진 3D -> 2D 점 대응에서 카메라 행렬을 풀고 싶습니다.카메라 매트릭스에 대한 최소 제곱 해답 [numpy]

[[ -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]] 

나는를 제한 할 수 있도록하고 싶습니다 :

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

, 현재 나의 카메라 행렬은 매우 작은 값을 갖고있는 것 같아요 :

나는 참고로이 웹 사이트를 사용하고있다 Camera 행렬이 거의 0 인 사소한 해법을 푸는 것을 막기 위해 숫자가 작은 해법을 사용합니다.
아무도 numpy.linalg.lstsqr()을 구속하는 방법을 알고 있습니까?

+0

numpy가이 작업을 직접 수행하지 않는 경우 (MatLab 및 기타 라이브러리처럼) 좋은 결과를 얻을 수 있으므로 대부분의 값이 더 많은 숫자로 " 친숙한 "(물론, 그렇게하면 어떻게 든 다른 계산을 무효화하지 않습니다.) – mjv

답변

1

scipy.optimize에서 fmin_ * 루틴을 사용해야 할 수도 있습니다. optimization tutorial은 기본 사용을 다루며 scipy.optimize.fmin_slsqp는 제약 조건을 포함 할 수 있습니다.

+0

fmin_slsqp는 내가 원하는 것을 수행 할 것 같습니다. 나는 scipy를 제대로 설치해야합니다. 또한 도움이 될 선형 최적화를 사용하여 카메라 매트릭스를 해결하는 예제 코드를 가르쳐 주실 수 있다면. – freakTheMighty

+0

Scipy는 소스에서 빌드하는 약간 악이다. 개인적으로, 나는 Enthought Python Distribution (http://www.enthought.com/products/epd.php)을 사용합니다. 왜냐하면 대부분의 플랫폼에 5 분만 설치하고 일관된 환경을 제공하기 때문입니다. 또한 EPD 전에 사용했던 Sage (http://www.sagemath.org/)도 우수합니다. –

2

나는 scipy 8.04 깨진 scipy 빌드를 한 이후, 우분투 배포판을 scipy를 설치 제대로 그냥 메모

설치하는 데 필요한. 그것은 최신 9.10 베타 빌드에서 처리되었습니다. 처음부터 scipy를 만들 수는 있지만 일반적으로 쉬운 일은 아닙니다. 그걸 알아 내려면 여기서 우리를 위해 약간의 노력이 필요했기 때문에 그냥 머리를 숙이십시오. 어쩌면 좌절감을 덜어 줄 수 있습니다.)

0

least squares staying near a point x0 가까운 곳에있는 카메라 매트릭스 x0가 있습니까?
"일부 x0에서 멀리하십시오"는 볼록하지 않고 불쾌합니다. x0 또는 x1 ... 근처에 두십시오. 예 :
|Ax-b|^2 + w^2 (|x-x0|^2 + |x-x1|^2 + ...)은 최소화합니다.

관련 문제