2013년 10월 26일 토요일

공간점의 깊이

공간 상의 한 점은 카메라 주축 면의 앞이나 뒤에 놓일 수 있다.

카메라 행렬

$P = [M | p_4]=[P_1^T; P_2^T; P_3^T]$
(단, 여기서 $P_3$는 3x4 크기의 $P$행렬의 3번째 행으로 1x4의 크기 벡터인 $[p_{31}, p_{32}, p_{33}, p_{34}]^T$이다.) 

에 의해 공간 점 $X=(X,Y,Z,1)^T=(X_t, 1)^T$은 이미지 점 

$x=w(x,y,1)^T=PX$

로 사영된다. 

카메라 중심은 $C=(C_t, 1)^T$이다.  카메라 중심의 사영은 $PC=0$이기 때문에

$w=P_3^TX=P_3^T(X-C)$

이다(즉, $PC=0 \rightarrow P_3^T C=0$이다). 여기서

$P_3^T(X-C)=m_3^T(X_t-C_t)$

이고 여기서 $m_3$는 주축선이다.
(즉, $P_3^T(X-C)=P_3^T[\binom{X_t}{1}-\binom{C_t}{1}]=[m_3^T, p_{34}][\binom{X_t}{1}-\binom{C_t}{1}]=[m_3^T, p_{34}][\binom{X_t-C_t}{0}]$이다)

따라서 공간 점의 깊이는 

$w=m_3^T(X_t-C_t)$

이다.
(동차좌표 표현에서 $X$의 4번째 항이 1이 아니고 $T$라면 $X_t=X/T$이다. 따라서 $w$의 크기는 $T$에 영향을 받는다.
다시 말해서, $X_t$와 $C_t$는 정규화가 안되었을 수 있다. 즉, 동차좌표의 마지막 항이 1이 아니고 $T$일 수도 있다. 따라서, $T$로 나누어 정규화하는 것이 필요하다 $\rightarrow$ 나중에 $X_t$와 $C_t$는 $T$로 나누어 주고, $m_3^T$는 자신의 norm에 의해 나누어 준다.)
$w$는 카메라 원점에서 공간 점을 향하는 선과 주축 선의 내적이다.  

카메라 행렬은 스케일 모호성이 있기 때문에 $m_3$도 $X_t, C_t$처럼 정규화 되어야 한다. 

$det(M)>0$,
||$m_3$||=1

로 정규화 시키면 $m_3$는 양의 단위벡터이다. ($M$은 $P$행렬의 앞 3x3 부분으로 회전 행렬에 대응한다. 따라서 $det(M)$은 회전 행렬의 방향을 의미한다.)

정리하면 

$w(x, y, 1)^T=P(X, Y, Z, T)^T$

일때 

$depth(X; P)=( sign(det M)w )/( T||m_3|| )$

이다. 여기서 $T$, ||$m$||는 $X$와 $P$의 크기 정규화를 의미한다. $sign(det M)$은 회전행렬의 방향 정규화이다.
(결국, $depth$는 $w$의 값이다. 그런데 $sign(det M)$은 의해 회전 행렬의 방향에 따라 $+1$ 또는 $-1$이 될 수 있다.   $T$와 ||$m_3$||는 $w$의 계산에 사용되는 $m_3, X_t, C_t$의 정규화를 위한 값이다.)

depth 값으로 공간점 $X$가 카메라 앞에 있는지를 일관적으로 결정할 수 있다.  





댓글 1개:

  1. 안녕하세요 Geometry에 대하여 공부하는 학생입니다.
    Rotation과 Translation으로 이루어진 4개의 솔루션중 한가지의 correct solution을 찾기 위하여 서치를 하다가 여기까지 오게 되었습니다.

    혹여나 시간이 되신다면 위에 적혀있는 w 와 m의 정의에 대해 쉽게 설명해 주실수 있으신지요 또한 이둘의 관계식도 알려주시면 감사하겠습니다

    답글삭제