중간고사도 끝났으니, 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 에서 유한한 점과 상관관계를 맺지 못합니다. 그러므로 평행한 직선은 무한히 만나지 못한다라는 흔히 알고 있는 상식에 부합합니다.