8.8 내부 보정(Intrinsic Calibration)

8.8 내부 보정(Intrinsic Calibration)

1. 내부 보정의 정의와 목적

내부 보정(intrinsic calibration)은 센서의 내부 물리적·광학적 특성에 의해 결정되는 파라미터를 정밀하게 추정하는 과정이다. 내부 파라미터는 센서의 측정 모델을 완전히 기술하기 위해 필요하며, 센서가 측정하는 원시 값을 물리적으로 의미 있는 단위(미터, 각도 등)로 정확하게 변환하는 데 필수적이다.

자율주행에서 내부 보정은 주로 카메라 센서에 대해 수행된다. LiDAR와 레이더는 일반적으로 제조 과정에서 내부 보정이 완료된 상태로 출하되며, 사용자 수준에서의 내부 보정이 별도로 요구되는 경우는 드물다.

2. 카메라 내부 보정

2.1 핀홀 카메라 모델

카메라 내부 보정의 기본 모델은 핀홀 카메라 모델(pinhole camera model)이다. 3차원 공간의 점 \mathbf{P}_c = (X_c, Y_c, Z_c)^T(카메라 좌표계)가 영상 평면의 2차원 좌표 (u, v)로 투영되는 과정은 다음과 같이 기술된다.

\lambda \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = \mathbf{K} \begin{pmatrix} X_c \\ Y_c \\ Z_c \end{pmatrix}

여기서 \lambda = Z_c는 깊이(스케일 팩터)이며, \mathbf{K}는 카메라 내부 파라미터 행렬(intrinsic matrix 또는 calibration matrix)이다.

\mathbf{K} = \begin{pmatrix} f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix}

각 파라미터의 의미는 다음과 같다.

파라미터의미단위
f_x, f_y수평 및 수직 방향의 초점 거리(화소 단위)pixel
c_x, c_y주점(principal point) 좌표pixel
s비대칭 계수(skew coefficient), 대부분의 현대 카메라에서 0pixel

초점 거리 f_x, f_y는 물리적 초점 거리 f(mm)와 화소 크기 \Delta x, \Delta y(mm/pixel)의 비율로 결정된다.

f_x = \frac{f}{\Delta x}, \quad f_y = \frac{f}{\Delta y}

8.8.2.2 렌즈 왜곡 모델

실제 카메라의 렌즈는 이상적인 핀홀 모델로부터 벗어나는 왜곡(distortion)을 발생시킨다. 렌즈 왜곡은 크게 방사 왜곡(radial distortion)과 접선 왜곡(tangential distortion)으로 분류된다.

방사 왜곡(radial distortion): 광축으로부터의 거리에 따라 영상 좌표가 방사 방향으로 이동하는 왜곡이다. 배럴 왜곡(barrel distortion)과 핀쿠션 왜곡(pincushion distortion)이 있다. 정규화된 영상 좌표 (x_n, y_n)에 대한 방사 왜곡 모델은 다음과 같다.

x_d = x_n (1 + k_1 r^2 + k_2 r^4 + k_3 r^6)

y_d = y_n (1 + k_1 r^2 + k_2 r^4 + k_3 r^6)

여기서 r^2 = x_n^2 + y_n^2이고, k_1, k_2, k_3는 방사 왜곡 계수이다.

접선 왜곡(tangential distortion): 렌즈와 이미지 센서의 정렬 오차에 의해 발생하는 왜곡이다.

x_d = x_n + [2p_1 x_n y_n + p_2(r^2 + 2x_n^2)]

y_d = y_n + [p_1(r^2 + 2y_n^2) + 2p_2 x_n y_n]

여기서 p_1, p_2는 접선 왜곡 계수이다.

자율주행용 광각 렌즈 및 어안 렌즈(fisheye lens)에서는 방사 왜곡이 매우 크므로, 고차 왜곡 계수 또는 등거리(equidistant), 등입체각(equisolid angle) 등의 전용 왜곡 모델이 사용된다(Kannala & Brandt, 2006).

8.8.2.3 내부 보정 파라미터의 요약

카메라 내부 보정에서 추정하여야 하는 파라미터의 총 수는 다음과 같다.

파라미터 그룹파라미터
핀홀 모델f_x, f_y, c_x, c_y (비대칭 s \approx 0 가정)4
방사 왜곡k_1, k_2 (또는 k_1, k_2, k_3)2–3
접선 왜곡p_1, p_22
합계8–9

8.8.3 Zhang의 카메라 보정 방법

Zhang(2000)이 제안한 방법은 평면 체스보드 패턴을 다양한 자세로 촬영한 복수의 영상으로부터 카메라 내부 파라미터와 왜곡 계수를 동시에 추정하는 기법이다. 이 방법은 구현의 편의성과 충분한 정확도로 인해 사실상의 표준으로 널리 사용된다.

8.8.3.1 보정 절차

  1. 체스보드 영상 획득: 알려진 크기의 체스보드 패턴을 다양한 자세(거리, 각도, 위치)에서 촬영하여 10–20장 이상의 영상을 획득한다.

  2. 코너점 검출: 각 영상에서 체스보드의 내부 코너점(corner point) 좌표 \mathbf{u}_i = (u_i, v_i)를 서브픽셀(sub-pixel) 정확도로 검출한다.

  3. 호모그래피 추정: 체스보드 평면의 3차원 좌표 \mathbf{X}_i = (X_i, Y_i, 0)(평면 위이므로 Z = 0)와 영상 좌표 \mathbf{u}_i 사이의 호모그래피(homography) 행렬 \mathbf{H}를 각 영상에 대해 추정한다.

\lambda \begin{pmatrix} u_i \\ v_i \\ 1 \end{pmatrix} = \mathbf{H} \begin{pmatrix} X_i \\ Y_i \\ 1 \end{pmatrix}

  1. 초기 내부 파라미터 추정: 복수의 호모그래피로부터 내부 파라미터 행렬 \mathbf{K}의 초기 추정값을 해석적으로 산출한다. \mathbf{H} = \mathbf{K} [\mathbf{r}_1 \, \mathbf{r}_2 \, \mathbf{t}] 관계와 회전 행렬의 직교성 구속 조건을 이용한다.

  2. 비선형 최적화: 초기 추정값을 시작점으로 하여, 모든 영상의 모든 코너점에 대한 재투영 오차(reprojection error)를 최소화하는 Levenberg-Marquardt 최적화를 수행한다. 이 과정에서 내부 파라미터, 왜곡 계수, 각 영상의 외부 파라미터(체스보드 자세)가 동시에 정제된다.

\min_{\mathbf{K}, k_i, p_j, \mathbf{R}_n, \mathbf{t}_n} \sum_{n=1}^{N} \sum_{i=1}^{M} \| \mathbf{u}_{n,i} - \hat{\mathbf{u}}(\mathbf{K}, k_i, p_j, \mathbf{R}_n, \mathbf{t}_n, \mathbf{X}_i) \|^2

8.8.3.2 보정 품질 평가

보정 결과의 품질은 재투영 오차의 RMS(Root Mean Square) 값으로 평가한다. 양호한 보정의 경우 RMS 재투영 오차는 0.1–0.5 화소 수준이다. 1 화소를 초과하는 경우 보정 절차의 재검토가 필요하다.

8.8.4 어안 렌즈(Fisheye Lens) 보정

자율주행 차량의 어라운드뷰(around-view) 카메라 등에 사용되는 어안 렌즈는 180도 이상의 시야각을 제공하나, 표준 핀홀 모델로는 왜곡을 적절히 기술할 수 없다. 어안 렌즈에는 다음과 같은 전용 투영 모델이 사용된다.

등거리 투영(equidistant projection): r = f \cdot \theta

등입체각 투영(equisolid angle projection): r = 2f \sin(\theta / 2)

정사 투영(orthographic projection): r = f \sin\theta

입체 투영(stereographic projection): r = 2f \tan(\theta / 2)

여기서 r은 영상 평면에서 주점으로부터의 거리, f는 초점 거리, \theta는 입사각(incident angle)이다. Kannala와 Brandt(2006)는 이러한 다양한 어안 모델을 통합하는 일반 모델을 제안하였다.

r(\theta) = k_1 \theta + k_2 \theta^3 + k_3 \theta^5 + k_4 \theta^7 + k_5 \theta^9

OpenCV 라이브러리는 이 모델의 변형을 cv::fisheye 모듈로 구현하고 있다.

3. LiDAR 내부 보정

LiDAR의 내부 보정은 레이저 빔의 방향(각도 오프셋), 거리 측정 바이어스, 빔 간 상대적 위치 오차 등을 보정하는 과정이다. 다채널 기계식 회전형 LiDAR에서 각 레이저 채널은 고유한 수직 각도(elevation angle)와 수평 각도 오프셋(azimuth offset)을 가지며, 이 값들이 내부 보정 파라미터에 해당한다.

대부분의 상용 LiDAR는 제조 시 내부 보정을 수행하고, 보정 파라미터를 센서 내부 펌웨어 또는 보정 파일로 제공한다. 사용자가 별도로 내부 보정을 수행하는 것은 일반적이지 않으나, 고정밀 응용에서는 추가적인 정제(refinement)가 수행되기도 한다(Muhammad & Lacroix, 2010).

4. 영상 왜곡 보정(Undistortion)

내부 보정을 통해 추정된 왜곡 계수를 이용하여 왜곡된 원시 영상을 이상적인 핀홀 모델에 부합하는 왜곡 보정 영상(undistorted image)으로 변환하는 과정을 영상 왜곡 보정(undistortion) 또는 정류(rectification)라 한다.

왜곡 보정은 다음 두 가지 방식으로 구현된다.

순방향 매핑(forward mapping): 원시 영상의 각 화소 좌표에 왜곡 모델의 역함수를 적용하여 보정 영상의 좌표를 산출한다. 역함수의 해석적 형태가 존재하지 않는 경우가 많아, 수치적 반복법(iterative method)이 필요하다.

역방향 매핑(backward mapping): 보정 영상의 각 화소 좌표에 왜곡 모델을 적용하여 원시 영상에서의 대응 좌표를 산출하고, 보간(interpolation)을 통해 화소 값을 결정한다. 이 방식은 보정 영상의 모든 화소에 값이 할당됨을 보장하며, 실용적으로 더 많이 사용된다.

왜곡 보정 과정에서의 좌표 매핑은 사전에 계산하여 리맵(remap) 테이블로 저장하고, 프레임별로 테이블 참조와 보간만 수행함으로써 실시간 처리가 가능하다.


참고문헌

  • Kannala, J., & Brandt, S. S. (2006). A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses. IEEE Transactions on Pattern Analysis and Machine Intelligence, 28(8), 1335–1340.
  • Muhammad, N., & Lacroix, S. (2010). Calibration of a rotating multi-beam lidar. IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 5648–5653.
  • Zhang, Z. (2000). A flexible new technique for camera calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11), 1330–1334.

버전: v1.0, 2026-04-11