Processing math: 0%

2013년 10월 25일 금요일

두개의 투사 행렬과 이미지 좌표에서 3차원 점 계산: DLT

DLT는 Direct Linear Transformation의 약자이다.
두 투사 행렬(projection matrix) P_1, P_2가 있다고 가정하자.  공간 상에 점 X가 있다. 이 점이 두 이미지에 투사되면 다음과 같다:

m_1=P_1\cdot X
m_2=P_2\cdot X

여기서 X는 homogeneous 4-vector이다.
m_1, m_2을 안다고 할 때, 공간 점 X를 복원해 보자.
DLT를 적용한다.


m_1 \times m_1 = m_1 \times (P_1 \cdot X) = 0
m_2 \times m_2 = m_2 \times (P_2 \cdot X) = 0

이다. 크기 3x1의 m_1벡터는 3x3의 skew matrix로 표현할 수 있다.

m_1 = [0, -1, v_1; 1, 0, -u_1; -v_1, u_1, 0]

이다. 따라서

[m_1]\cdot(P_1 \cdot X) =
 [0, -1, v_1; 1, 0, -u_1; -v_1, u_1, 0] \cdot    
 [p_{11}X+p_{12}Y+p_{13}Z+p_{14};
   p_{21}X+p_{22}Y+p_{23}Z+p_{24};
   p_{31}X+p_{32}Y+p_{33}Z+p_{34}]

= [  -(p_{21}X+p_{22}Y+p_{23}Z+p_{24}) +
     v_1(p_{31}X+p_{32}Y+p_{33}Z+p_{34});
         (p_{11}X+p_{12}Y+p_{13}Z+p_{14}) -
    u_1(p_{31}X+p_{32}Y+p_{33}Z+p_{34}) ;
    -v_1(p_{11}X+p_{12}Y+p_{13}Z+p_{14}) +
    u_1(p_{21}X+p_{22}Y+p_{23}Z+p_{24}) ] 

= [(v_1p_{31}-p_{21}), (v_1p_{32}-p_{22}), (v_1p_{33}-p_{23}), (v_1p_{34}-p_{24});
(u_1p_{31}-p_{11}). (u_1p_{32}-p_{12}), (u_1p_{33}-p_{13}), (u_1p_{34}-p_{14});
(u_1p_{21}-v_1p_{11}), (u_1p_{22}-v_1p_{12}), (u_1p_{23}-v_1p_{13}), (u_1p_{24}-v_1p_{14}) ] \cdot X  = 0

여기서 1행과 2행만 가져온다 (3행은 1, 2행의 조합으로 만들 수 있다).

[v_1\cdot p_3-p_2;
  u_1\cdot p_3-p_1] \cdot X = 0

단, 여기서 p_3 = [p_{31}, p_{32}, p_{33}, p_{34}], p_2=[p_{21}, p_{22}, p_{23}, p_{24}], p_1=[p_{11}, p_{12}, p_{13}, p_{14}] 이다.

그런데 m_2로부터 또 다른 P_2도 있으므로 2개의 행이 추가 될 수 있다.

[v_1 \cdot p_3-p_2;
  u_1\cdot p_3-p_1;
  v'_1\cdot p'_3-p'_2;
  u'_1\cdot p'_3-p'_1]\cdot X = AX = 0

행렬 A를 특이값 분해(SVD)하고 얻어진 V행렬의 마지막 행이 X가 된다.  A행렬의 크기는 4x4이다.

A행렬의 각 행은 독립된 하나의 식으로 스케일 모호성이 있다.  즉, X의 크기에 대한 모호성을 준다.  각 행이 영향을 주는 X의 스케일이 다르면 안되므로 정규화가 필요하다.
각 행은 독립적으로 크기 정규화 가능하다. 





    

댓글 없음:

댓글 쓰기