# 3D 구조 복원을 위한 에피폴라 제약의 활용

#### 에피폴라 제약의 개념

에피폴라 제약은 두 개의 이미지에서 관찰된 같은 3D 점들이 에피폴라 기하학적으로 제약을 받는다는 사실에 기반한다. 이 제약은 두 카메라의 투영 지점에서 대응점을 찾는 과정을 크게 단순화하여, 3D 구조를 복원하는 데 중요한 역할을 한다.

#### 두 카메라 시스템에서의 3D 포인트 투영

3D 공간에 존재하는 한 점 $\mathbf{X}$는 두 카메라 $\mathbf{P}\_1$과 $\mathbf{P}\_2$에 의해 각각 $\mathbf{x}\_1$과 $\mathbf{x}\_2$로 투영된다. 각 투영 지점은 아래와 같이 표현될 수 있다.

$$
\mathbf{x}\_1 = \mathbf{P}\_1 \mathbf{X}
$$

$$
\mathbf{x}\_2 = \mathbf{P}\_2 \mathbf{X}
$$

여기서 $\mathbf{P}\_1$과 $\mathbf{P}\_2$는 각 카메라의 투영 행렬이며, $\mathbf{X}$는 3차원 동차 좌표계에서의 점을 나타낸다.

#### 에피폴라 제약의 수학적 표현

두 이미지 사이에서 에피폴라 제약은 아래와 같은 형태로 정의된다:

$$
\mathbf{x}\_2^\top \mathbf{F} \mathbf{x}\_1 = 0
$$

여기서 $\mathbf{F}$는 기본 행렬 (fundamental matrix)이고, $\mathbf{x}\_1$과 $\mathbf{x}\_2$는 각각 첫 번째와 두 번째 이미지에서의 대응점 좌표이다. 이 방정식은 두 이미지에서 동일한 3D 점 $\mathbf{X}$에 대해 항상 성립하는 제약 조건이다.

#### 에피폴라 제약을 이용한 3D 구조 복원

에피폴라 제약을 활용하여 3D 구조를 복원하기 위해서는 여러 이미지에서 같은 3D 점을 관찰한 대응점들이 필요하다. 대응점들이 주어지면, 기본 행렬 $\mathbf{F}$을 계산하고, 이를 바탕으로 각 점의 삼각 측량을 통해 3D 좌표 $\mathbf{X}$를 구할 수 있다. 삼각 측량은 두 카메라의 투영선을 이용하여 3D 공간에서의 점을 추정하는 과정이다.

기본 행렬 $\mathbf{F}$은 두 카메라의 상대적인 위치와 방향을 포함하며, 이를 통해 대응점들 간의 관계를 설명할 수 있다. 삼각 측량 과정은 일반적으로 아래의 단계를 포함한다:

1. 두 이미지에서 대응점 $\mathbf{x}\_1$과 $\mathbf{x}\_2$를 찾는다.
2. 기본 행렬 $\mathbf{F}$를 이용하여 두 점이 에피폴라 제약을 만족하는지 확인한다.
3. 만족하는 경우, 삼각 측량을 통해 두 카메라로부터의 거리와 함께 3D 좌표를 복원한다.

#### 삼각 측량을 통한 3D 복원

삼각 측량은 두 개의 이미지를 사용하여 3D 좌표를 복원하는 과정이다. 두 카메라에서 관찰된 대응점 $\mathbf{x}\_1$과 $\mathbf{x}\_2$를 알고 있으면, 두 카메라로부터 이 점들이 형성하는 선들을 통해 실제 3D 공간에서의 위치를 추정할 수 있다. 각 카메라에서 투영된 점은 3D 공간에서 특정한 선을 따라 위치하게 되며, 이 두 선들의 교차점이 해당 3D 점의 위치를 나타낸다.

이때 삼각 측량에 의해 복원된 3D 좌표 $\mathbf{X}$는 아래와 같이 표현될 수 있다:

$$
\mathbf{X} = \mathbf{A}^{-1} \mathbf{b}
$$

여기서 $\mathbf{A}$는 카메라의 투영 행렬과 관련된 매트릭스이며, $\mathbf{b}$는 관찰된 이미지 좌표와 관련된 벡터이다. 삼각 측량은 주어진 두 카메라 위치 및 방향, 그리고 이미지에서의 대응점을 바탕으로 3D 구조를 복원할 수 있는 강력한 도구이다.

#### 기본 행렬과 본질 행렬을 이용한 복원

기본 행렬 $\mathbf{F}$과 본질 행렬 $\mathbf{E}$은 3D 구조 복원에서 중요한 역할을 한다. 기본 행렬은 두 카메라 사이의 대응점 관계를 정의하며, 본질 행렬은 더 나아가 두 카메라의 내적 및 외적 파라미터를 포함한 기하학적 정보를 제공한다.

본질 행렬 $\mathbf{E}$은 두 카메라의 상대적인 위치와 방향을 포함하며, 다음과 같이 표현된다:

$$
\mathbf{E} = \mathbf{K}\_2^\top \mathbf{F} \mathbf{K}\_1
$$

여기서 $\mathbf{K}\_1$과 $\mathbf{K}\_2$는 각각 두 카메라의 내적 파라미터 행렬이다. 본질 행렬을 이용하면 대응점 사이의 기하학적 관계를 보다 정확하게 파악할 수 있다. 본질 행렬을 통해 카메라 간의 상대적 위치와 방향을 알아내면, 3D 구조를 더 정밀하게 복원할 수 있다.

본질 행렬을 사용한 3D 복원 과정은 다음과 같은 절차를 따른다:

1. 두 이미지에서 대응점을 찾고, 기본 행렬 $\mathbf{F}$을 계산한다.
2. 카메라의 내적 파라미터 행렬 $\mathbf{K}\_1$과 $\mathbf{K}\_2$를 이용하여 본질 행렬 $\mathbf{E}$를 계산한다.
3. 본질 행렬을 통해 두 카메라의 상대적인 위치와 방향을 추정하고, 이를 바탕으로 3D 구조를 복원한다.

본질 행렬을 사용한 복원은 카메라의 기하학적 구성을 고려하기 때문에 더욱 정밀한 3D 복원을 가능하게 한다.

#### 에피폴라 제약을 이용한 3D 복원의 구체적인 과정

3D 구조 복원을 위해 에피폴라 제약을 활용하는 구체적인 과정은 다음과 같다.

1. **카메라 캘리브레이션**: 두 카메라의 내적 파라미터 ($\mathbf{K}\_1$ 및 $\mathbf{K}\_2$)를 통해 각 카메라의 초점 거리, 광학 중심, 왜곡 등의 정보를 얻는다. 이 정보는 에피폴라 제약과 본질 행렬을 계산하는 데 필수적이다.
2. **기본 행렬 $\mathbf{F}$ 계산**: 대응점 $\mathbf{x}\_1$과 $\mathbf{x}\_2$가 주어진다면, 이들을 이용해 기본 행렬 $\mathbf{F}$을 추정할 수 있다. 기본 행렬은 다음과 같은 방법으로 계산된다:

   * 최소한 8쌍의 대응점이 주어졌을 때, **8점 알고리즘**을 통해 $\mathbf{F}$를 계산할 수 있다. 이 알고리즘은 두 이미지의 대응점 관계를 기반으로 기본 행렬을 추정한다.

   기본 행렬은 두 카메라의 상대적인 위치와 방향을 고려하지 않기 때문에, 다중 뷰에서 3D 구조 복원에 사용할 수 있는 기초가 된다.
3. **본질 행렬 $\mathbf{E}$ 계산**: 카메라의 내적 파라미터가 알려져 있을 때, 기본 행렬로부터 본질 행렬을 계산할 수 있다. 본질 행렬은 두 카메라 간의 기하학적 관계를 설명하며, 이 행렬을 통해 카메라 간의 회전 및 변환을 추정할 수 있다.
4. **삼각 측량을 통한 3D 좌표 추정**: 본질 행렬과 카메라의 투영 행렬을 이용하여, 대응점들로부터 3D 좌표를 추정할 수 있다. 삼각 측량 알고리즘을 통해 두 카메라로부터 투영된 선들의 교차점을 찾아 3D 공간에서의 점을 복원한다.

   삼각 측량의 대표적인 방식은 선형 최소자승법을 사용하여 두 카메라에서 투영된 선들의 교차점을 추정하는 것이다. 이 과정에서 잡음이 섞인 데이터도 처리할 수 있어 현실적인 3D 구조 복원에 적합한다.

#### 에피폴라 제약 기반의 3D 복원 성능

에피폴라 제약을 활용한 3D 복원 성능은 대응점의 정확도와 카메라의 캘리브레이션 상태에 크게 의존한다. 대응점 매칭에서 오차가 발생하면 복원된 3D 구조가 왜곡될 수 있으며, 카메라 캘리브레이션이 정확하지 않을 경우 본질 행렬 및 삼각 측량 과정에서 오류가 발생할 수 있다.

따라서, 에피폴라 제약 기반의 3D 복원을 성공적으로 수행하기 위해서는 다음의 요소들이 중요하다:

* 정확한 대응점 추출
* 카메라의 정밀한 캘리브레이션
* 삼각 측량 알고리즘의 적용

에피폴라 제약은 두 이미지 간의 기하학적 관계를 이용하여 3D 구조를 복원하는 데 강력한 도구이지만, 정확한 데이터 처리와 알고리즘 선택이 필수적이다.
