DLT를 이용하여 공간에서 평면을 또 다른 평면으로 변환 시키는 파라메터를 구해보자.
어떤 선형변환 문제가 있다고 하자:
어떤 선형변환 문제가 있다고 하자:
$x=Ay$
여기서 $x$, $y$는 known vector이고 $A$ 행렬은 unknown이다. (사실 이 식에는 스케일 불확실성이 들어가 있다. 엄밀하게는 $x \sim Ay$이다($x$는 $Ay$에 비례, 여기서 ~는 비례관계). 상수를 추가하여 비례를 없애면 $ax = Ay$이다. $a$는 스케일 상수이다.
DLT는 $x$와 $y$ 벡터가 주어질 때, 행렬 $A$를 구하는 방법이다.
이런 모양은 projective geometry에서 많이 나타난다. Homography$^{(*)}$
${x'}=Hx$
가 그런 예이다.
${x'}=Hx$
가 그런 예이다.
DLT 풀이를 위해 양 변을 곱한다.
$(x) \times (Ay) = 0$
이고 이 식은 같은 벡터 2개를 cross product하면 0이 되므로
$(x) \times (Ay) = (x) \times (x) = 0$
관계식에서 나왔다.
이고 이 식은 같은 벡터 2개를 cross product하면 0이 되므로
$(x) \times (Ay) = (x) \times (x) = 0$
관계식에서 나왔다.
이 식을 조작하여
$Bh=0$
으로 만든다. 구하려는 미지수 행렬 $A$ 요소는 $h$ 벡터로 들어 간다.
$h$는 새로 형성된 행렬 $B$의 특이값 분해(SVD: Singular Value Decomposition)로 구한다.
$(*)$ Homography: 평면상에 있는 점을 또 다른 평면 위 좌표로 바꾸어 준다. 이 변환은 사영 아래에서 plane-to-plane 변환이다. $x'$, $x$는 homogeneous ($3 \times 1$) 벡터이고 Homography 행렬 $H$는 ($3 \times 3$)의 평면 변환 행렬이다. 사영(perspective) 변환이므로 평면의 투사 변환이다.
(Ex.)
DLT를 이용하여 $x'=Hx$에서 $H$를 계산해 보자. 여기서, 대응 점 $x$, $x'$ 정보는 알고 있다.
$x'=(u,v,w)'$이고, $H=[h1'; h2'; h3']$이다.
따라서,
$H \cdot x = [h1'x; h2'x; h3'x]$
이다.
$H$를 구하기 위해 DLT를 적용하면
$(x') \times (H \cdot x)=0$
이다.
$(x') \times H \cdot x = [vh3'x-wh2'x; wh1'x-uh3'x; uh2'x-vh1'x]$
이고, $H$를 분리하면
$[0'\ {-wx'}\ vx'; wx'\ 0'\ {-ux'}; {-vx'}\ ux'\ 0'] \cdot [h1; h2; h3] = Ah = 0$
이다. $A$ 행렬은 ($3 \times 9$)이고, $h$ 행렬은 ($9 \times 1$)이다.
그런데 $A$ 행렬의 세번째 행은 1과 2행의 조합으로 만들 수 있다:
$u \times A1+v \times A2=A3$
따라서 $A$ 행렬 세개의 행 중에서 두 개만 선형 독립이고 다음과 같다:
$[0'\ {-wx'}\ vx'; {wx'}\ 0'\ {-ux'}] \cdot [h1; h2; h3] = 0$
이 식을 보면 $x$와 $x'$인 하나의 대응쌍에서 $H$에 대한 2개의 수식(constraints: 제한 조건)이 나온다.
($3 \times 3$) 크기인 $H$ 행렬에는 9개 요소가 있다. 하지만 스케일 불확실성(즉, $H$행렬에 임의 상수를 곱해도 모두 같은 $H$가 될 수 있다)이 있다.
때문에 마지막 요소 1개를 고정시키면(예를 들면, 마지막 값으로 나머지 8개를 나누면
$H=[h11\ h12\ h13;\ h21\ h22\ h23;\ h31\ h32\ 1]$
이다) 8개의 요소가 남아 8 자유도가 된다.
따라서 서로 대응되는 4개의 점이 있다면 8개의 미지수 모두를 결정할 수 있다.
대응 점 수가 아주 많다면 위 제한 조건식을 행 방향으로 쌓으면 된다.
A= [0' -w1x1' v1x1';
w1x1' 0' -u1x1';
------------------------------
0' -w2x2' v2x2';
w2x1' 0' -u2x2';
------------------------------
......
...... ]
$n$개의 대응 점이 있다면 $A$행렬의 크기는 ($2n \times 9$)이다.
$Ah = 0$의 풀이는 $A$를 SVD하여 얻어진 $V$행렬의 마지막 열을 $h$로 취한다.
[U, D, V] = svd(A)
h = V . (0 0 0...1)'
이해에 도움되었습니다. 감사합니다.
답글삭제