# 멀티 카메라 배열

멀티 카메라 배열은 여러 대의 카메라를 사용하여 하나의 장면을 다양한 각도에서 촬영하고, 각 카메라의 위치 및 방향을 정확히 파악하여 통합된 3D 정보를 얻는 것을 목적으로 한다. 이러한 배열은 스테레오 비전뿐만 아니라 멀티 뷰 시스템을 통해 깊이 추정 및 공간 내 물체의 위치를 보다 정확하게 추정할 수 있게 해준다.

#### 카메라 배열의 기본 개념

멀티 카메라 배열에서는 각 카메라가 서로 다른 위치에 설치되므로, 각 카메라에서 캡처된 이미지가 서로 다른 시각 정보를 담고 있다. 이를 통해 물체의 3차원 정보를 추출할 수 있으며, 특히 깊이 정보(depth information)를 추정하는 데 유리하다. 기본적으로 카메라 배열은 각 카메라의 내부 및 외부 파라미터를 정확히 알고 있어야 한다.

**내부 및 외부 파라미터**

멀티 카메라 배열에서 각 카메라의 **내부 파라미터**는 다음과 같다:

* 초점 거리 $f$
* 주점(Principal point)의 위치 $(u\_0, v\_0)$
* 픽셀 비율 $s\_x, s\_y$

**외부 파라미터**는 다음을 포함한다:

* 카메라의 위치 $\mathbf{T} \in \mathbb{R}^3$
* 카메라의 방향(회전 행렬) $\mathbf{R} \in \mathbb{R}^{3 \times 3}$

이 파라미터들은 각각의 카메라가 3D 공간 내에서 어떻게 배치되어 있는지를 나타내며, 이를 통해 각 카메라에서 동일한 물체를 바라보는 시점을 정밀하게 계산할 수 있다.

#### 멀티 카메라 배열의 기본 원리

멀티 카메라 배열에서 여러 대의 카메라는 서로 다른 시점에서 동일한 장면을 캡처한다. 이를 위해서 각 카메라의 2D 이미지에서 3D 좌표로 변환하는 과정이 필요하다. 각 카메라의 관측 모델은 핀홀 카메라 모델을 기반으로 하며, 이를 통해 2D 이미지 상의 점을 3D 공간의 점으로 매핑한다.

**핀홀 카메라 모델**

멀티 카메라 배열에서 각 카메라는 기본적으로 핀홀 카메라 모델을 따른다. 핀홀 카메라 모델은 다음과 같은 수식으로 표현된다:

$$
\mathbf{p} = \mathbf{K} \[ \mathbf{R} | \mathbf{T} ] \mathbf{P}
$$

여기서,

* $\mathbf{p} \in \mathbb{R}^2$는 2D 이미지 평면 상의 점을 의미한다.
* $\mathbf{K} \in \mathbb{R}^{3 \times 3}$는 카메라의 내부 파라미터 행렬이다.
* $\mathbf{R} \in \mathbb{R}^{3 \times 3}$는 회전 행렬이며, 카메라의 방향을 나타낸다.
* $\mathbf{T} \in \mathbb{R}^3$는 카메라의 위치를 나타내는 변위 벡터이다.
* $\mathbf{P} \in \mathbb{R}^3$는 3D 공간에서의 물체의 좌표이다.

**다중 뷰 기하학**

멀티 카메라 배열에서는 각 카메라에서 얻은 2D 이미지에서 3D 좌표를 추정하기 위한 다중 뷰 기하학(Multi-View Geometry)이 적용된다. 이 과정에서 두 가지 핵심 개념이 중요하다: \*\*기본 행렬(Fundamental Matrix)\*\*와 **에피폴라 기하학(Epipolar Geometry)**.

1. **기본 행렬**: 두 카메라 간의 대응점 사이의 기하학적 관계는 기본 행렬 $\mathbf{F}$로 표현된다. 기본 행렬은 두 이미지 사이의 대응점이 반드시 에피폴라 선(epipolar line) 위에 놓이도록 강제한다. 이를 수식으로 나타내면:

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

여기서,

* $\mathbf{p}\_1, \mathbf{p}\_2$는 각각 두 카메라에서의 대응점이다.

2. **에피폴라 기하학**: 에피폴라 기하학은 두 개의 카메라가 동일한 물체를 관측할 때, 한 이미지에서의 점이 다른 이미지에서 에피폴라 선 위에 대응하는 점을 가져야 한다는 원리를 따른다. 이를 통해 이미지 간의 상호 관계를 파악할 수 있다.

**동기화와 정렬**

멀티 카메라 시스템에서 각 카메라는 동일한 시간에 장면을 캡처해야 한다. 이를 위해 카메라 간의 **동기화**가 필수적이다. 동기화되지 않은 카메라는 서로 다른 시간대의 장면을 캡처할 수 있으며, 이는 정확한 3D 정보 추정에 방해가 된다. 동기화 외에도 각 카메라의 정확한 **정렬**이 필요하다. 정렬이 맞지 않을 경우, 이미지 상의 왜곡이 발생할 수 있다.

#### 깊이 정보 추정

멀티 카메라 배열의 주요 목표 중 하나는 3D 공간 내의 깊이 정보를 추정하는 것이다. 이를 위해서는 두 가지 주요 기법이 사용된다: \*\*삼각측량(Triangulation)\*\*과 **스테레오 매칭(Stereo Matching)**.

1. **삼각측량**: 삼각측량은 두 개 이상의 카메라에서 동일한 물체를 관측할 때, 해당 물체의 3D 좌표를 추정하는 방법이다. 두 카메라의 관찰 각도와 거리를 이용하여 물체의 깊이를 계산한다. 삼각측량의 수식은 다음과 같이 표현된다:

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

여기서,

* $\mathbf{A}$는 관측된 2D 좌표와 카메라 파라미터 행렬로 구성된 행렬이다.
* $\mathbf{b}$는 카메라의 외부 파라미터로부터 계산된 벡터이다.

#### 스테레오 매칭

스테레오 매칭은 멀티 카메라 배열에서 매우 중요한 기법으로, 두 개 이상의 카메라에서 동일한 물체의 대응점을 찾는 과정이다. 스테레오 매칭을 통해 각 카메라에서 관측된 물체의 위치 차이를 기반으로 깊이를 추정할 수 있다. 이 과정은 주로 다음의 단계를 거친다:

1. **이미지 정렬**: 먼저, 각 카메라의 이미지가 동일한 평면에서 비교될 수 있도록 정렬한다. 이를 위해 에피폴라 기하학을 이용하여 이미지 상의 대응점들이 에피폴라 선 위에 위치하도록 변환한다.
2. **특징점 추출**: 각 카메라의 이미지에서 눈에 띄는 특징점을 추출한다. 이는 코너(corners), 엣지(edges), 또는 특정 패턴 등이 될 수 있다.
3. **특징점 매칭**: 두 이미지 간의 특징점을 비교하여 동일한 물체의 특징을 찾는다. 이 때, 에피폴라 제약을 사용하여 검색 범위를 좁힐 수 있다.
4. **깊이 계산**: 대응점을 찾으면, 두 카메라 간의 거리 및 시차(Disparity)를 이용하여 깊이를 계산한다. 시차는 물체가 두 카메라 이미지에서 서로 다른 위치에 나타나는 차이를 의미한다. 깊이 $Z$는 다음 수식으로 표현된다:

$$
Z = \frac{f \cdot B}{d}
$$

여기서,

* $Z$는 추정된 깊이,
* $f$는 카메라의 초점 거리,
* $B$는 두 카메라 사이의 베이스라인(baseline),
* $d$는 시차(disparity)를 나타낸다.

#### 에피폴라 제약을 활용한 정합

스테레오 매칭에서 두 이미지 간의 대응점을 찾는 과정에서, 에피폴라 제약(epipolar constraint)을 사용하여 검색 공간을 줄일 수 있다. 에피폴라 제약은 다음과 같이 정의된다:

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

이 제약 조건은 한 이미지에서의 점이 다른 이미지에서 에피폴라 선 위에 존재해야 한다는 의미로, 이를 통해 각 카메라에서 관찰된 점들이 동일한 물체에 해당하는지를 빠르게 확인할 수 있다.

#### 멀티 카메라 배열의 캘리브레이션

멀티 카메라 배열에서 중요한 단계는 각 카메라의 정확한 캘리브레이션이다. 이를 통해 각 카메라의 내부 및 외부 파라미터를 결정하고, 카메라 간의 상대적인 위치와 방향을 파악할 수 있다. 멀티 카메라 캘리브레이션은 주로 \*\*전역 최적화(global optimization)\*\*를 통해 수행되며, 이를 통해 모든 카메라의 파라미터를 동시에 최적화한다.

**전역 최적화 기법**

멀티 카메라 배열의 캘리브레이션에서는 전역 최적화 기법을 사용하여 각 카메라의 위치와 방향을 동시에 최적화한다. 이 과정에서 각 카메라의 관찰된 이미지 좌표와 실제 3D 좌표 간의 오류를 최소화하는 방식으로 최적화가 이루어진다. 대표적인 전역 최적화 기법으로는 **Levenberg-Marquardt 알고리즘**이 사용된다. 최적화 과정에서의 목적 함수는 다음과 같다:

$$
\min \sum\_{i=1}^{N} | \mathbf{p}\_i - \hat{\mathbf{p}}\_i |^2
$$

여기서,

* $\mathbf{p}\_i$는 관찰된 이미지 상의 점,
* $\hat{\mathbf{p}}\_i$는 추정된 이미지 상의 점,
* $N$은 총 관측된 점의 개수이다.

이와 같은 최적화를 통해 카메라 간의 상대적인 위치 및 방향을 정밀하게 결정할 수 있다.
