선의 동치 표현(Homogeneous representation of lines)
평면에 존재하는 선은 ax + by + c = 0 과 같은 방정식으로 표현될 수 있습니다. 이를 직선의 방정식이라고 하는데, 어떤 a,b,c를 선택하느냐에 따라 다른 선이 됩니다. 따라서, 선은 일방적으로 벡터 (a,b,c)^T로 표현합니다. 이는 열벡터를 의미합니다. 선과 벡터 (a,b,c)^T는 one-to-one 대응이 아닙니다. 동치 좌표(homogeneous coordinates)에 의해서 선 ax + by + c = 0은 선 (ka)x + (kb)y + (kc) = 0와 동일합니다. 따라서, 벡터 (a,b,c)^T와 k(a,b,c)^T는 동일한 선을 나타냅니다. 그리고 이러한 관계에 있는 벡터들을 동치류(equivalence class of vector)라고 부르며, homogeneous vector로 알려져 있습니다.
유클리디안 3차원 공간 R^3에 존재하는 벡터들의 동치류(equivalence class)의 집합은 사영 공간(projective space) P^2를 형성합니다. (0,0,0)^T는 어떤 선을 나타내지 않습니다.
점의 동치 표현(Homogeneous representation of points)
선 l = (a,b,c)^T에 점 x = (x,y)^T 가 놓여있다고 하겠습니다. 점 x를 동치 좌표(homogeneous coordinate)로 x = (x,y,1)T로 표현할 수 있습니다. 선l과 점x를 내적의 관점으로 표현하면 (x,y,1)(a,b,c)T = (x,y,1)l = 0 이 됩니다. 2차원 공간에 존재하는 점 (x,y)는 마지막 좌표 1을 추가하여 3차원 벡터로 표현되었는데, homogeneous coordinate에 의해서 (kx, ky, k)와 동일한 점을 나타냅니다. 즉, (x,y,k)l=0이면 (kx,ky,k)l=0을 만족합니다.
임의의 점이 homogeneous vector 표현에 의해 x=(x1,x2,x3)T로 나타내진 경우, 이는 2차원 공간에서 (x1/x3, x2/x3)T인 점과 동일합니다. 그리고 x=(x1,x2,x3)T는 2차원 사영 공간의 원소입니다.
점이 직선에 놓여있는지 판단하는 간단한 방정식은 xTl = 0 을 만족하는지 확인하는 것입니다. xTl 은 두 벡터 l과 x의 내적 또는 scalar product 입니다. 또한 이 책에서는 3-vector인 homogeneous coordinates x = (x1,x2,x3)T 와 2-vector인 inhomogeneous coordinate (x,y)T를 구분합니다.
선들의 교점(Intersection of lines)
두 개의 선 l = (a,b,c)T, l' = (a', b', c')T 가 주어진 경우에 두 선의 교점은 다음과 같이 찾을 수 있습니다. 벡터 x = l $\times$ l' 로 정의하겠습니다. 여기서 $\times$는 외적(cross product)를 의미합니다. 점 x가 선 l과 l'에 놓여져 있는 경우에 l$\cdot$(l$\times$l') = l'$\cdot$(l$\times$l') = 0을 만족합니다. 즉, lTx = l'Tx = 0을 만족하는 점 x는 선 l과 l'에 놓여져 있다는 의미이므로 이 점이 두 선의 교점이 됩니다.
이 결과는 선들과 점들이 homogeneous vector을 사용한 결과로부터 도출됩니다.
두 선의 교점을 찾는 예시 문제를 풀어보겠습니다.
점들을 지나는 직선(Line joining points)
두 점 x와 x'를 지나는 직선은 다음과 같이 계산합니다. 직선 l = x $\times$ x'를 만족하는 선 l이 두 점을 지나는 직선입니다.
참고자료
[1] Multiple View Geometry in Computer Vision