잔여 오차(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 이미지 좌표.
재투영 오차는 다음과 같이 계산된다.
여기서 \|\cdot\|는 벡터의 유클리드 거리(Euclidean distance)를 나타낸다.
2. 재투영 오차의 계산
재투영 오차를 계산하기 위해서는 먼저 카메라의 내부 파라미터와 외부 파라미터가 필요하다. 이를 통해 3D 점을 2D 이미지 평면에 투영하는 과정을 설명할 수 있다.
카메라 투영은 다음과 같은 카메라 투영 방정식을 사용하여 이루어진다.
여기서: - \mathbf{K}는 카메라의 내부 파라미터 행렬, - \mathbf{R}은 회전 행렬, - \mathbf{t}는 이동 벡터이다.
내부 파라미터 행렬 \mathbf{K}는 다음과 같다.
여기서: - 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)라고 하며, 수학적으로는 다음과 같이 표현된다.
여기서 N은 캘리브레이션에 사용된 3D 점의 수이다.
4. 재투영 오차의 해석
재투영 오차가 작을수록 캘리브레이션이 더 정확하게 이루어졌음을 의미한다. 일반적으로 재투영 오차는 몇 픽셀 이하로 유지되는 것이 바람직하며, 이는 캘리브레이션 과정에서 사용된 알고리즘과 데이터의 품질에 크게 의존한다.
5. 재투영 오차의 분포
재투영 오차는 단일 값으로 표현될 뿐만 아니라, 2D 이미지 평면 상의 여러 점에 걸쳐 분포할 수 있다. 이를 통해 특정 이미지 영역에서 캘리브레이션의 정확도가 어떻게 변하는지 확인할 수 있다. 예를 들어, 이미지의 중심부에서는 오차가 작고, 가장자리로 갈수록 오차가 커질 수 있다. 이러한 현상은 주로 렌즈 왜곡과 관련이 있다.
재투영 오차의 분포를 시각화하는 방법 중 하나는 오차 히스토그램을 사용하는 것이다. 각 2D 이미지 좌표에서 측정된 오차의 크기를 히스토그램으로 나타내어, 오차의 빈도 분포를 분석할 수 있다.
6. 카메라 캘리브레이션의 정밀도 향상 방법
잔여 오차를 줄이기 위한 방법에는 여러 가지가 있다. 그 중 일부는 다음과 같다.
-
더 많은 캘리브레이션 이미지 사용: 다양한 각도와 거리에서 촬영된 다수의 이미지를 사용하면 캘리브레이션의 정확성을 향상시킬 수 있다. 특히, 피사체가 이미지의 전체 영역을 차지하도록 촬영하면 왜곡의 영향을 더 잘 파악할 수 있다.
-
고품질 패턴 사용: 캘리브레이션 패턴(예: 체스보드 패턴)의 해상도와 품질이 높을수록, 정확한 2D 이미지 좌표를 추출할 수 있다.
-
더 높은 해상도의 이미지: 고해상도 이미지를 사용하면 더 세밀한 오차를 측정할 수 있어 캘리브레이션의 정확성을 높일 수 있다.
-
최적화 알고리즘의 개선: Levenberg-Marquardt 최적화나 Gauss-Newton 방법과 같은 비선형 최적화 알고리즘을 사용할 때, 초기값의 선택과 알고리즘의 반복 횟수를 조절하여 캘리브레이션 성능을 개선할 수 있다.
-
왜곡 모델의 개선: Radial 및 Tangential 왜곡을 포함하는 복잡한 왜곡 모델을 사용하면 렌즈 왜곡으로 인한 오차를 더 잘 보정할 수 있다. 특히, 광각 렌즈나 어안 렌즈와 같은 왜곡이 심한 렌즈의 경우, 더욱 정교한 왜곡 모델이 필요하다.
7. 잔여 오차의 시각화
카메라 캘리브레이션 후, 잔여 오차를 시각화하여 캘리브레이션의 성능을 직관적으로 확인할 수 있다. 일반적으로 사용되는 시각화 기법은 다음과 같다.
-
재투영 오차 벡터 시각화: 이미지 상에서 관측된 점과 예상된 점을 연결하는 벡터를 시각적으로 나타내는 방법이다. 이 벡터의 길이가 재투영 오차의 크기를 나타내며, 방향은 예상된 점이 얼마나 벗어났는지를 보여준다.
-
오차 히트맵(Heatmap): 이미지 상의 각 점에 대해 계산된 재투영 오차의 크기를 색상으로 표현하여, 특정 영역에서 오차가 더 큰지 시각적으로 파악할 수 있다. 이러한 히트맵은 특히 이미지 가장자리에서 발생하는 왜곡 문제를 파악하는 데 유용하다.
-
평균 오차 그래프: 캘리브레이션에 사용된 모든 점에 대한 평균 재투영 오차를 그래프로 나타내어, 캘리브레이션 성능의 변화를 한눈에 볼 수 있다.
8. 잔여 오차의 한계
잔여 오차는 카메라 캘리브레이션의 정확성을 평가하는 데 중요한 지표지만, 다음과 같은 한계가 있다.
-
데이터 의존성: 잔여 오차는 캘리브레이션에 사용된 데이터 세트에 크게 의존한다. 특정 각도나 위치에서 데이터가 충분히 확보되지 않으면, 캘리브레이션이 특정 영역에서 부정확할 수 있다.
-
비선형 오차: 왜곡 모델이 충분히 정교하지 않으면, 특정 영역에서 비선형적인 오차가 발생할 수 있으며, 이러한 오차는 잔여 오차만으로 완전히 설명되지 않을 수 있다.