2017-01-14 14 views
0

이것은 매우 간단한 질문입니다. 다음은 3D reconstruction from Multiple Images 내지, 달 등 (도 2-13, P (348).)3D 재구성 : 보정되지 않은 이미지에서 3D 점에 대한 방정식을 푸십시오.

주어 두 보정되지 않은 화상

에서

사영 3D 재구성 : 점 대응 집합 m1I1이고 m2I2이며 고정 장면의 두 개의 보정되지 않은 이미지 I1I2 사이에 있습니다.

목표 : 장면의 투영 3 차원 복원 ^M.

알고리즘 :

  1. 컴퓨팅 각 쌍 용 ^F
  2. 계산 × 3 매트릭스
    ^A = −(1/||e2||2) [e2]x ^F
  3. 에서 기본 행렬
  4. 을 계산 에피 폴 e2 대한 추정치 ^F 해당 이미지 포인트,225,659,및 m2, ^M 선형 방정식들의 다음 시스템을 푼다
    ^p1 m1 = ^M
    ^p2 m2 = ^A ^M + e2 (^p1^p2 및 비 - 제로 스칼라이다)

[I는 서식을 드려 죄송합니다. 나는 문자를 통해 모자를 넣어하는 방법을 모르겠어요.]

심지어 그때 난 내가 꽤 많이까지 OK 4 단계까지 해요하지만 내 마지막 선형 대수 클래스 이후 30 년 이상이었다, 그리고 이런 식으로 뭔가를 풀 수있는 방법을 알지 못했습니다. 어떤 도움이나 참고 사항이라도 대단히 감사하겠습니다. 그런데

이 내 다른 게시물에 종류의 후속이다 :

Detecting/correcting Photo Warping via Point Correspondences

이 문제를 해결하기 위해 시도하는 또 다른 방법입니다.

답변

1

일치하는 이미지 포인트들의 쌍은 광학 중심으로부터 대응하는 2 개의 광선으로 인해 측정 잡음에 머물 가능성이 교차하고, (2) 1 및 m을 주어진 m. 결과적으로, 제공된 시스템에 대한 해결책은 (선형) 최소 제곱 센싱, 즉(예를 들어)와 x = argmin_x | C x - d |^2 찾기 :

/   0 \/ \ 
     | I -m1 0 | | M | 
C x = |   0 | | | 
     |  0  | | p1 | 
     | A 0 -m2 | \ p2/
     \  0 /

/0 \ 
    | 0 | 
d = | 0 | 
    |  | 
    | -e2 | 
    \ /

문제는 식 (6)에 대한 5 개의 미지수가있다.

/[m1]x \/ \ 
C = |   | | M | 
    \ [m2]x A/\ /

/ 0 \ 
d = |   | 
    \ -m2 x e2/
:

가능한 대안 제형 정도로 m1 x M = 0m2 x (A M + e2) = 0으로 선형 최소 제곱 문제 x = argmin_x | C x - d |^2을 수득 2는 M과 동일 선상 1 및 m M과 사실을 이용한다

[v]x은의 교차 곱의 3x3 행렬입니다.. 문제는 6 개의 방정식에 대해 3 개의 미지수를 가지며, 이는 비선형 적으로 종속 된 방정식을 유지함으로써 만 4로 감소 될 수 있습니다.

+0

감사합니다. 내가 골똘히 생각한 것은 당신의 첫 번째 해결책과 매우 유사했습니다. 불행히도, 솔루션으로 시도한 샘플 포인트가 제대로 작동하지 않았습니다. 나는 너와 더 가깝게 비교해야 할 것이다. 두 번째 해결 방법도 흥미 롭습니다. – Jabberwock

+0

죄송합니다. 밀도가 높지만 진행 방법을 여전히 잘 모릅니다. 나는 당신이'C','x' &'d'를 어떻게 보았는가. 나는'C'가 정사각형과 역행렬이라면'Cx = d'와 같은 것을 풀 수있는 방법을 알고 있습니다.하지만'argmin_x | Cx - d |^2'와 같이 잃어 버렸습니다. 조금 있지만 Matlab 코드 또는 좋은 참조에 대한 링크가 확실히 도움이 될 것입니다. – Jabberwock

+0

솔버는 일반적으로 행렬 C의 QR 또는 SVD 분해에 의존합니다 (자세한 내용은 [선형 최소 제곱에 대한 Wikipedia 기사] (https://en.wikipedia.org/wiki/Linear_least_squares_ (수학) 참조). NumPy는'linalg.lstsq' 함수를 제공합니다. 나는 MATLAB에 익숙하지 않지만'x = C \ d'가 작동해야한다. – user3146587