Homogeneous Coordinates
R² 을 2차원 실수 공간이라고 하자.
R² 에 속하는 하나의 직선은 ax + by + c = 0 을 만족하는, R² 에 속하는 점 (x, y) 의 집합이다.
이를 통해 R² 에 속하는 하나의 직선은 (a, b, c) 를 통해 나타낼 수 있다.
이때 l 을 (a, b, c) 라는 3차원 파라미터 벡터라고 하자.
그러면 (x, y) 라는 2차원 물리 점은 3D 벡터 (x, y, 1) 로 나타낼 수 있다.
ax + by + c = 0 이라는 등식은 (a, b, c) · (x, y 1) 으로 나타낼 수 있다.
이때 3차원 실수 공간 R³ 에 속하는 (x, y, 1) 을 2차원 실수 공간 내부의 점 (x, y) 에 대한 homogeneous coordinate 표현이라고 한다.
=> 정리하면, 2차원 좌표 (x, y) 를 동차 좌표계로 나타내면 (x, y, 1) 이 된다.
이때 3차원 실수 공간을 볼 때, 0이 아닌 실수 k 에 대해 k · (x y 1) 의 값 (kx, ky, k) 는 (x, y, 1) 과 같은 2차원 점을 나타낸다.
그래서 이런 점들을 equivalence class 라고 분류하기도 한다.
Line
이는 선에 대해서도 마찬가지라, 0이 아닌 실수 k 에 대해 k (a, b, c) 는 (a, b, c) 와 같은 직선을 나타낸다.
이때 이와 관련하여 2가지 응용을 할 수 있다.
1. 두 직선이 (a1, b1, c1) (a2, b2, c2) 로 주어졌을 때, 이 두 직선의 교점은 (a1, b1, c1) x (a2, b2, c2) 이다. (외적)
2. 두 점 (x1, y1, 1) (x2, y2, 1) 이 주어졌을 때, 두 점을 지나는 직선은 (x1, y1, 1) x (x2, y2, 1) 이다. (외적)
1은, 두 직선의 교점이 두 직선 위에 모두 존재해야하므로, (a1, b1, c1) · (x, y 1) = 0 , (a2, b2, c2) · (x, y 1) = 0 을 모두 만족해야 한다. 내적이 0이라는 의미는 90도라는 것을 의미하므로, (a1, b1, c1) 과 (a2, b2, c2) 는 (x, y, 1)에 모두 수직이다. 따라서 이 둘의 외적은 (x, y, 1) 과 같다.
2 도 비슷하다. 임의의 직선 (a, b, c) · (x, y, 1) = 0 에 두 점 (x1, y1, 1), (x2, y2, 1) 을 모두 대입했을 때 성립하려면 외적이 0이어야 한다.
예제
두 점 (1, 2), (2, 3) 을 지나는 직선을 계산하자.
따라서 x - y + 1 = 0 이 구하는 직선이다.
Parallel lines
2차원 실수 공간에서 직선의 기울기는 a / b 로 나타낸다.
이때 서로 다른 두 직선 ( a, b, c1 ) 와 ( a, b, c2 ) 는 반드시 평행하다.
이때 이 두 직선의 교점을 외적으로 구해보면
다음과 같이 ( b, -a, 0 ) 이라는 동차좌표계로 나타낼 수 있다.
여기에서 '점' 의 마지막 세번째 원소가 1이 아닌 0이 나오는데, 이 0의 의미를 어떻게 해석할 수 있을까?
동차좌표계로 표현한 어떤 임의 점을 ( u, v, w ) 라고 하면 이 점은 ( u/w, v/w, 1 ) 과 같으므로 (u/w, v/w) 라는 2차원 점을 나타낸다.
따라서 ( b, -a, 0 ) 이 나타내는 점을 2차원 좌표에 표시하려면 ( u, v, w ) 에서 w를 0을 향해 극한을 보내는 것과 같다.
그러면 이 점은 ( u/w, v/w ) 라는 점을 나타낸다고 했을 때, w가 0에 가까워지므로 ( u/w, v/w ) 는 무한대에 가까워진다.
따라서 이 점은 a, b 에 상관없이 결국 무한대 위치에 있는 점을 나타내게 된다.
이때 (a, b) 는 방향을 나타내는데, 이 무한대를 나타내는 점들을 쭉 그려서 나타내면 하나의 원을 그리게 된다.
이런 점들을 가리켜 'Ideal Points' 라고 부른다. 이 점들은 무한대 라인에서 만난다.
만약 u 가 0이고 v 가 1이면 이때는 x축 위에 있는 무한대 점을 나타내게 된다.
그런데 이 점들이 비록 원을 그리는 것처럼 보여도 또 이걸 무한대로 늘리고보면 직선이 된다.
이는 이 무한대 점 2개를 서로 외적해서 직선을 찾아보면 알 수 있다.
이렇게 서로 다른 무한대 위의 점을 외적하면 (0, 0, 1) 이라는 u, v 에 상관없이 일정한 직선이 나온다.
이 직선이 무한대에 있는 직선을 나타낸다.
이 직선은 카메라 모델에서 소실선 (Vanishing Line) 으로서 중요한 역할을 수행한다.
Conic
conic은 카메라 모델링과 카메라 calibration 작업에 중요하게 사용되는 3차원 geometric entity이다.
Conic은 3차원 엔티티이지만, 2차원 평면에서 보면 2차 곡선 (원, 타원, 포물선, 쌍곡선 등)을 나타낸다.
이 2차 곡선들을 모두 conic 이라고 부른다. (원은 타원의 특별한 형태)
모든 conic들은 2개의 원뿔을평면으로 잘랐을 때 보이는 단면으로 얻을 수 있다.
2차원 물리 공간 R² 에서 conic의 implicit 형태 수식은 아래와 같이 나타낼 수 있다.
이를 homogeneous coordinates 로 나타내기 위해서 (x, y) 를 (x1, x2, x3) 형태로 나타낼 필요가 있다.
( x = x1/x3, y = x2/x3 이 될 것이다.)
이에 맞게 행렬을 작성하면 아래와 같이 나타낼 수 있다.
여기에서 아래와 같이 (x1, x2, x3) 과 행렬을 기호화 하면
이렇게 표현할 수도 있다.
이때 행렬 C를 Homogeneous Coordinates 방식으로 표현한 conic 이라고 한다.
이때 이 x는 conic 위의 한 점을 나타낼텐데, 만약 여기에 점이 아니라 line (a, b, c) 를 대입한다면, 그 conic에 접하는 접점을 구할 수 있다.
왜냐하면 conic과 그에 접하는 접선 위를 모두 지나는 점에 대해 아래와 같은 등식이 성립하기 때문이다.
접선 l 은 conic 위의 유일한 접점 하나를 만들어낸다.
Degenerate Conics
만약 double conies를 자를 때 정확히 그 중심축을 지나도록 자른다면, 그때는 쌍곡선이 아니라 교차하는 두 직선이 나올 것이다.
위 그림과 같은 두 교차하는 직선 역시 conic에 속하는데, 이를 'degenerate conic' 이라고 부른다.
이 직선의 H.C 표현을 각각 l, m 이라고 하자.
그러면 이 conic의 행렬은 아래와 같이 표현할 수 있다.
이렇게 얻어낸 행렬도 아래 conic 등식을 만족한다.
한번 연습문제를 풀어보자.
중심이 원점이고, 반지름이 5인 원 (conic) 이 있다.
이 원 위의 점 (3, 4)를 지나는 접선이 x 축과 만나는 교점을 구해보자.
주어진 conic 행렬과 접점의 외적을 구하면 접선이 나온다.
접선을 구하고 y = 0 을 대입하면 x축과의 교점을 구할 수 있다.
'CS > HCI 윈도우즈프로그래밍' 카테고리의 다른 글
[Computer Vision] 4. Geometry Primer (3) : Transform (0) | 2024.06.02 |
---|---|
[Computer Vision] 3. Geometry Primer (2) : Homography (0) | 2024.05.31 |
[Computer Vision] 1. introduction (0) | 2024.05.29 |
중간고사 최종 정리 (1) | 2024.04.22 |
[OpenGL] 18. Transformation (6) - View Change (VCS) (0) | 2024.04.21 |