# 잔여 오차 평가

잔여 오차(residual error)는 카메라 캘리브레이션 과정에서 매우 중요한 평가 지표이다. 주로 재투영 오차(reprojection error)를 통해 잔여 오차를 측정하며, 이는 카메라 캘리브레이션의 정확성을 확인하는 데 사용된다. 잔여 오차는 실제 이미지 좌표와 예상 이미지 좌표 간의 차이를 의미하며, 이를 통해 캘리브레이션 과정에서의 왜곡과 불일치를 평가할 수 있다.

#### 1. 재투영 오차의 정의

재투영 오차는 3D 공간에서 캘리브레이션된 카메라 모델을 사용해 3D 점을 2D 이미지 평면에 투영할 때, 실제로 관측된 2D 이미지 좌표와 투영된 좌표 간의 차이를 측정한 값이다. 이 차이는 주로 픽셀 단위로 표현되며, 수학적으로 다음과 같이 정의된다.

* $\mathbf{X}\_{\text{world}}$: 3D 월드 좌표계에서의 점.
* $\mathbf{P}$: 카메라 투영 행렬.
* $\mathbf{x}\_{\text{obs}}$: 실제 관측된 2D 이미지 좌표.
* $\mathbf{x}*{\text{proj}}$: 3D 점 $\mathbf{X}*{\text{world}}$를 투영 행렬 $\mathbf{P}$를 통해 계산한 예상 2D 이미지 좌표.

재투영 오차는 다음과 같이 계산된다.

$$
\text{reprojection error} = |\mathbf{x}*{\text{obs}} - \mathbf{x}*{\text{proj}}|
$$

여기서 $|\cdot|$는 벡터의 유클리드 거리(Euclidean distance)를 나타낸다.

#### 2. 재투영 오차의 계산

재투영 오차를 계산하기 위해서는 먼저 카메라의 내부 파라미터와 외부 파라미터가 필요하다. 이를 통해 3D 점을 2D 이미지 평면에 투영하는 과정을 설명할 수 있다.

카메라 투영은 다음과 같은 카메라 투영 방정식을 사용하여 이루어진다.

$$
\mathbf{x}*{\text{proj}} = \mathbf{K} \[ \mathbf{R} | \mathbf{t} ] \mathbf{X}*{\text{world}}
$$

여기서:

* $\mathbf{K}$는 카메라의 내부 파라미터 행렬,
* $\mathbf{R}$은 회전 행렬,
* $\mathbf{t}$는 이동 벡터이다.

내부 파라미터 행렬 $\mathbf{K}$는 다음과 같다.

$$
\mathbf{K} = \begin{bmatrix} f\_x & 0 & c\_x \ 0 & f\_y & c\_y \ 0 & 0 & 1 \end{bmatrix}
$$

여기서:

* $f\_x, f\_y$는 x축과 y축의 초점 거리(focal length),
* $c\_x, c\_y$는 이미지 좌표의 중심점이다.

이 투영 방정식을 사용하여 3D 세계 좌표 $\mathbf{X}*{\text{world}}$를 이미지 평면에서 예상되는 좌표 $\mathbf{x}*{\text{proj}}$로 변환할 수 있다. 그런 다음 실제 관측된 이미지 좌표 $\mathbf{x}\_{\text{obs}}$와의 차이를 계산하여 재투영 오차를 측정한다.

#### 3. 평균 재투영 오차

다중 3D 점을 사용하여 캘리브레이션을 수행할 때, 각 점에 대해 재투영 오차를 계산한 후, 그 평균을 구하여 전체 캘리브레이션의 정확성을 평가한다. 이를 평균 재투영 오차(mean reprojection error)라고 하며, 수학적으로는 다음과 같이 표현된다.

$$
\text{mean reprojection error} = \frac{1}{N} \sum\_{i=1}^{N} |\mathbf{x}*{\text{obs}, i} - \mathbf{x}*{\text{proj}, i}|
$$

여기서 $N$은 캘리브레이션에 사용된 3D 점의 수이다.

#### 4. 재투영 오차의 해석

재투영 오차가 작을수록 캘리브레이션이 더 정확하게 이루어졌음을 의미한다. 일반적으로 재투영 오차는 몇 픽셀 이하로 유지되는 것이 바람직하며, 이는 캘리브레이션 과정에서 사용된 알고리즘과 데이터의 품질에 크게 의존한다.

#### 5. 재투영 오차의 분포

재투영 오차는 단일 값으로 표현될 뿐만 아니라, 2D 이미지 평면 상의 여러 점에 걸쳐 분포할 수 있다. 이를 통해 특정 이미지 영역에서 캘리브레이션의 정확도가 어떻게 변하는지 확인할 수 있다. 예를 들어, 이미지의 중심부에서는 오차가 작고, 가장자리로 갈수록 오차가 커질 수 있다. 이러한 현상은 주로 렌즈 왜곡과 관련이 있다.

재투영 오차의 분포를 시각화하는 방법 중 하나는 오차 히스토그램을 사용하는 것이다. 각 2D 이미지 좌표에서 측정된 오차의 크기를 히스토그램으로 나타내어, 오차의 빈도 분포를 분석할 수 있다.

#### 6. 카메라 캘리브레이션의 정밀도 향상 방법

잔여 오차를 줄이기 위한 방법에는 여러 가지가 있다. 그 중 일부는 다음과 같다.

1. **더 많은 캘리브레이션 이미지 사용**: 다양한 각도와 거리에서 촬영된 다수의 이미지를 사용하면 캘리브레이션의 정확성을 향상시킬 수 있다. 특히, 피사체가 이미지의 전체 영역을 차지하도록 촬영하면 왜곡의 영향을 더 잘 파악할 수 있다.
2. **고품질 패턴 사용**: 캘리브레이션 패턴(예: 체스보드 패턴)의 해상도와 품질이 높을수록, 정확한 2D 이미지 좌표를 추출할 수 있다.
3. **더 높은 해상도의 이미지**: 고해상도 이미지를 사용하면 더 세밀한 오차를 측정할 수 있어 캘리브레이션의 정확성을 높일 수 있다.
4. **최적화 알고리즘의 개선**: Levenberg-Marquardt 최적화나 Gauss-Newton 방법과 같은 비선형 최적화 알고리즘을 사용할 때, 초기값의 선택과 알고리즘의 반복 횟수를 조절하여 캘리브레이션 성능을 개선할 수 있다.
5. **왜곡 모델의 개선**: Radial 및 Tangential 왜곡을 포함하는 복잡한 왜곡 모델을 사용하면 렌즈 왜곡으로 인한 오차를 더 잘 보정할 수 있다. 특히, 광각 렌즈나 어안 렌즈와 같은 왜곡이 심한 렌즈의 경우, 더욱 정교한 왜곡 모델이 필요하다.

#### 7. 잔여 오차의 시각화

카메라 캘리브레이션 후, 잔여 오차를 시각화하여 캘리브레이션의 성능을 직관적으로 확인할 수 있다. 일반적으로 사용되는 시각화 기법은 다음과 같다.

1. **재투영 오차 벡터 시각화**: 이미지 상에서 관측된 점과 예상된 점을 연결하는 벡터를 시각적으로 나타내는 방법이다. 이 벡터의 길이가 재투영 오차의 크기를 나타내며, 방향은 예상된 점이 얼마나 벗어났는지를 보여준다.
2. **오차 히트맵(Heatmap)**: 이미지 상의 각 점에 대해 계산된 재투영 오차의 크기를 색상으로 표현하여, 특정 영역에서 오차가 더 큰지 시각적으로 파악할 수 있다. 이러한 히트맵은 특히 이미지 가장자리에서 발생하는 왜곡 문제를 파악하는 데 유용하다.
3. **평균 오차 그래프**: 캘리브레이션에 사용된 모든 점에 대한 평균 재투영 오차를 그래프로 나타내어, 캘리브레이션 성능의 변화를 한눈에 볼 수 있다.

#### 8. 잔여 오차의 한계

잔여 오차는 카메라 캘리브레이션의 정확성을 평가하는 데 중요한 지표지만, 다음과 같은 한계가 있다.

* **데이터 의존성**: 잔여 오차는 캘리브레이션에 사용된 데이터 세트에 크게 의존한다. 특정 각도나 위치에서 데이터가 충분히 확보되지 않으면, 캘리브레이션이 특정 영역에서 부정확할 수 있다.
* **비선형 오차**: 왜곡 모델이 충분히 정교하지 않으면, 특정 영역에서 비선형적인 오차가 발생할 수 있으며, 이러한 오차는 잔여 오차만으로 완전히 설명되지 않을 수 있다.
