Multiple View Geometry-Projective Geometry and Transformations of 2D

중간고사도 끝났으니, Multiple View Geometry라는 책에 대해서 공부하여 정리하고자 합니다. 책의 시작(기본적인) 내용부터 차근차근 정리할 예정입니다.

Planar geometry

Planar geometry의 접근 방법으로는 크게 2가지가 존재합니다.

  • Coordinate free method
  • Algebraic method

Coordinate free method는 기하학적 quantities를 좌표 측면에서 나타내는 것은 종종 혼란을 야기하기에, 기하학적 물체와의 관계를 나타낼 때 특정 좌표계를 사용하지 않습니다. 그래서 Coordinate free method에서는 point를 벡터로 생각하지 않으며, point의 크기나 vector의 위치를 계산할 수 없습니다.
반면 Algebraic method는 좌표 측면으로 놓고 계산하기에, point 또는 line을 vector로 표현할 수 있으며, conic을 symmetric matrix로 표현합니다. 이러한 Algebraic method의 장점으로는, 현실적인 계산 방식 및 알고리즘을 도출할 때 Algebraic method를 사용하면 훨씬 간편하므로 계산의 용의성이 있다고 생각하시면 될 것 같습니다.

2D projective plane
우리도 잘 알고 있듯이, 평면 안에 존재하는 점들은 R^2 안에 존재하는 좌표계 (x,y)로 나타낼 수 있습니다. 이러한 R^2 를 vector space로 보게 되면, 좌표쌍 (x, y)도 vector로 볼 수 있게 되는데, 다시 말하면 점(point)를 vector라고 생각할 수 있게 됩니다.

Geometry관점에서 가장 default로 사용되는 표현 방식은 Column vector입니다. 그리고 그것의 transpose를 row vector라고 합니다. 예를 들어 어떤 평면에 한 점을 column vector로 표현해야 한다면, row vector (x, y)로 표현하지 않고, column vector인 (x, y)^T 로 표현합니다.

Points and lines

Homogeneous representation of lines
평면 속 직선은 ax + by + c = 0 으로 표현하는데, a 와 b, c값이 달라짐에 따라 서로 다른 직선으로 볼 수 있습니다. 그리고 이러한 직선은 vector (a, b, c)^T 로 나타낼 수도 있는데, 이때 직선 ax + by + c = 0 kax + kby + kc = 0 이 같은 직선이라는 성질에 따라, 벡터도 (a, b, c)^T == k(a, b, c)^T로 표현할 수 있습니다. 즉 전체 scale과 관련된 두 벡터는 서로 같은 벡터라고 볼 수 있고 이러한 관계를 가진 벡터를 homogeneous vector라고 합니다.

Homogeneous representation of points
만약 ax + by + c = 0 이 성립한다면, 점 x = (x, y)^T 이 직선 l = (a, b, c)^T 위에 존재한다고 할 수 있습니다. 이것을 내적으로 표현하면 (x, y, 1)(a, b, c)^T =(x, y, 1)l = 0으로 볼 수 있는데, 이때 (x, y)^T 에서 마지막 좌표에 1을 추가한 것입니다. 여기에 추가로, 0이 아닌 상수 k와 직선 l에 대한 방정식 k(x, y, 1)l = 0 역시 (x, y, 1)l = 0 에 따라 참이라고 할 수 있습니다. 그러므로 점 (x, y)^T 의 표현 방법은 k에 따라 다양한 벡터 집합으로 고려될 수 있으며, 이를 통해 직선 위에 점들은 homogeneous vector로 표현할 수 있게 됩니다.

Degrees of freedom (dof)
하나의 점(point)를 표현하기 위해서는 반드시 2개의 값들( x-, y- coordinates)이 존재해야 합니다. 그래서 점의 자유도(dof)는 2입니다. line에 경우에도 두개의 파라미터로 명시할 수 있기 때문에, 자유도는 2를 가집니다. 라인의 파라미터 2개중 하나는 원점과의 기울기를 나타내며, 나머지 하나의 파라미터는 원점과의 거리를 나타냅니다.

Intersection of lines
두개의 직선 l, l’이 주어진다면, 우리는 두 직선의 intersection을 구할 수 있습니다. 먼저 vector x를 x = l x l' 로 정의합니다. 그 이유를 설명드리자면, 삼중곱의 특성 중 동일 평면상에 있는 두 벡터(직선)은 다음 식처럼 나타납니다. l.(l x l') = l'.(l x l') = 0 . 이 식과 위에서 설명했던 직선위에 한 점 x와 직선 l 또는 l’과의 내적은 0인 특성을 이용하여 점 x는 두 직선 l 과 ㅣ’의 교점이라고 볼 수 있으며 이때 공식은 [label] x = l x l’ [/latex] 입니다.

Intersection of parallel lines
ax + by + c = 0 , ax + by + c' = 0 인 두개의 직선이 있다고 해봅시다. 이러한 직선은 첫번째와 두번째 좌표값이 같은 vector l = (a,b,c)^T, l' = (a,b,c')^T 로 표현할 수가 있습니다. 이러한 두 직선의 intersection은 위에서 설명드린 공식 두 직선간의 외적을 통해 (c' - c)(b, -a, 0)^T 로 구할 수 있습니다. 그럼 scale factor인 (c’ -c)를 무시하면, 교차점은 (b, -a, 0)^T 가 됩니다.
자 그럼 이제 우리가 구한 교차점을 inhomogeneous로 표현하게 되면 (b/0, -a/0)^T 가 되는데, 분모가 0이므로 교차점이 무한대가 아닌 이상은 성립이 되지 않습니다. 즉 어떤 homogeneous coordinates 인 점 x = (x , y, 0)^T R^2 에서 유한한 점과 상관관계를 맺지 못합니다. 그러므로 평행한 직선은 무한히 만나지 못한다라는 흔히 알고 있는 상식에 부합합니다.

Author: 신 정민

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다