Subjects/Computer Vision

[Geometric primitives] 2D points, 2D lines, 2D conics

BiniU 2022. 3. 23. 18:18

Computer vision을 잘 하기 위해서는 먼저 그 기초부터 탄탄해야 한다. 

아쉽게도 그 과정에는 머리가 지끈거리는 수식들도 포함된다...

 

zero-base로 시작하는 것이 마음이 착잡하지만... 한 번 해보자!

 

컴퓨터 비젼 하면 다들 카메라를 떠올릴 것이고, 

카메라로부터 얻게된 이미지를 떠올린다. 

 

실제로 존재하는 어떤 3차원 공간의 물체가 카메라를 통해 2차원 공간의 이미지에 투영되는 과정을 이해하기 위해서는

먼저 그들을 구성하는 geometric primitives에 대한 이해를 하고 있어야 한다. 

 

이들은 앞으로 우리가 공부할 3차원 구조물들을 설명하기 위한 building block이 될 것이다.

먼저, 이번에는 그 중에 2D geometric primitives에 대해서 알아본다. 

 


2D Point

2D point 는 2차원에서 정의된 하나의 점이다.

2D point는 쌍을 이룬 두 값으로, 아래와 같이 표현할 수 있다. 

$$x = (x, y) \in R^2$$

$$x = [x, y]^T$$

 

2D point에 대한 augmented vector form과 homogeneous coordinate는 다음과 같다.

$$\bar{x} = (x, y, 1)$$

$$\tilde{x} = (\tilde{x}, \tilde{y}, \tilde{w}) = \tilde{w}(x, y, 1) = \tilde{w}\bar{x}$$

 

Homogeneous 좌표와 inhomogeneous 좌표간의 변환 관계는 단순하다. 

 

1) Homogeneous coordinate → Inhomogeneous coordinate

 

Homogeneous 좌표와 대응하는 Inhomogeneous 좌표는 쉽게 구할 수있다. 

$(\tilde{x}, \tilde{y}, \tilde{w})$ 에서 마지막 $\tilde{w}$ 성분으로 각각을 아래와 같이 나눠주어 구할 수 있다. 

$(\tilde{x} / \tilde{w}, \ \tilde{y} / \tilde{w}, \ \tilde{w} / \tilde{w})$

$= ({\tilde{x} / \tilde{w}}, \ {\tilde{y} / \tilde{w}}, \ 1)$

$= (x, y, 1)$ ← augmented vector form

$= (x, y)$ ← inhomogeneous coordinate form 

 

2) Inhomogeneous coordinate → Homogeneous coordinate

 

Inhomogeneous 좌표와 대응하는 Homogeneous 좌표는 scale 값($\tilde{w}$)에 따라 무수히 많다.

원리는 위에서 보여준 Homogeneous → Inhomogeneous의 역순이다. 

$(x, y)$ ← inhomogeneous coordinate form 

$= (x, y, 1)$ ← augmented vector form

$= (\tilde{w}x, \tilde{w}y, \tilde{w})$

$= (\tilde{x}, \tilde{y}, \tilde{w})$ ← homogeneous coordinate form 

 

이 때 homogeneous 좌표계에서 $\tilde{w} = 0$인 경우는 ideal points 혹은 points at infinity 라고 부른다. 그 이유는 homogeneous 좌표를 inhomogeneous 좌표계로 나타내기 위해서 $\tilde{x}$, $\tilde{y}$, $\tilde{w}$를 $\tilde{w}$로 각각 나눠주게 되면 $\tilde{w}$값이 0에 가까워질수록 inhomogeneous 좌표계의 $x$, $y$ 값이 양의 무한대, 혹은 음의 무한대로 발산하기 때문이다.

 


2D Line

2D point들은 모여서 2D line을 구성한다.

2D line은 2D point와 다르게 만족하는 값이 하나가 아니고, 수 많은 2D point들의 집합이라고 생각할 수 있다.

따라서 2D point와는 다르게 표현할 수 있는 방식이 다양하다.

먼저 2D line의 Homogeneous 표현은 아래와 같다.

$$\tilde{l} = (a, b, c)$$

 

그리고 line equation은 아래와 같이 표현된다. 

$$\bar{x} \cdot  \tilde{l} = ax + by + c = 0$$

더보기

2D line은 일반적으로 ax+by+c = 0으로 나타낼 수 있고,

a, b, c의 값에 따라 line의 모양이 결정된다. 

 

따라서 선은 $[a, b, c]^T$와 같이 벡터로 표현할 수 있다. 

하지만 선과 위의 벡터는 일대일 대응되지 않는다. 

 

그 이유는 하나의 선을 나타내는 방정식 ax+by+c = 0은

$[a, b, c]^T, [2a, 2b, 2c]^T, [ka, kb, kc]^T$와 같이 여러 개의 벡터들과 대응되기 때문이다. 

 

따라서 ax+by+c = 0의 homogeneous representation은

$\tilde{l} = [a, b, c]^T$ 이라고 할 수 있다.

위 식에서 알 수 있는 중요한 성질 중 하나는 아래와 같다.

어떤 점 $\tilde{x}$가 선 $\tilde{l}$ 위에 존재한다면, 
$\tilde{x}$와 $\tilde{l}$의 dot product는 0이다.

 

위에서 나타낸 line equation은 아래와 같이 normalize 할 수 있다. 

$$l = (\hat{n}_x, \hat{n}_y, d) = (\hat{n}, d)$$

 

이 때, 2D line은 하나의 normal vector $\hat{n}$와 원점으로부터의 거리 $d$로도 표현된다.

이 normal vector는 직선과 평행하고, 크기가 1인 벡터이다.

$$||\hat{n}|| = 1$$

 

2D line은 또한 $\tilde{l} = (0, 0, 1)$일 때 'line at infinity'라고 한다.

 

2D line을 나타내는 다른 방법들도 있다.

하지만 여기서는 생략하도록 한다. (polar coordinate 등)

 


2D conic

출처: Wikipedia

2D conic은 위의 그림과 같이 원뿔 두개와 평면이 만나서 생기는 교선의 모양을 의미한다. 

2D conic은 원, 타원, 포물선, 쌍곡선으로 4 종류가 있다. 

 

Inhomogeneous coordinate에서 conic의 general한 일반식은 아래와 같다.

$$ax^2 + bxy + cy^2 + dx + ey + f = 0$$ 

 

이 식을 homogeneous coordinate에서 나타내면 어떻게 될까?

$$x = \tilde{x} / \tilde{w}, \ y = \tilde{y} / \tilde{w}$$

 

위를 conic의 일반식에 대입해서 식을 정리해보면 아래와 같이 나타낼 수 있다.

$$a\tilde{x}^2+b\tilde{x}\tilde{y} + c\tilde{y}^2 + d\tilde{x}\tilde{w} + e\tilde{y}\tilde{w} + f\tilde{w}^2 = 0$$

 

위 식을 matrix form으로 변경하면 아래와 같이 정리된다.

 

$$\begin{bmatrix}\tilde{x} & \tilde{y} & \tilde{w}\end{bmatrix}\begin{bmatrix}a & b/2 & d/2 \\ b/2 & c & e/2 \\ d/2 & e/2 & f \end{bmatrix} \begin{bmatrix}\tilde{x} \\ \tilde{y} \\ \tilde{w} \end{bmatrix}$$

 

 

위 식은 다시 한번 아래와 같이 독특한 형태로 정리될 수 있고, 

이 형태를 quadric form이라고 한다.

$$Q = \begin{bmatrix}a & b/2 & d/2 \\ b/2 & c & e/2 \\ d/2 & e/2 & f \end{bmatrix}$$

$$\tilde{x} = (\tilde{x}, \tilde{y}, \tilde{w})$$

$$\tilde{x}^TQ\tilde{x} = 0$$

 


TBD: Line joining 2 points

TBD: Point intersecting 2 lines

반응형