논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses

[cite]10.1109/TPAMI.2006.153[/cite]

1. Introduction

실제 카메라들의 지오메트리를 정확하게 모델링하는 것에 집중하고자 합니다. 이 논문은 어안 렌즈에서도 잘 작동하는 캘리브레이션 방법도 제안하는데, 이는 일반적인 평평한 캘리브레이션 패턴을 사용합니다.

2. Generic Camera Model

어안 렌즈에는 퍼스펙티브 프로젝션 모델이 알맞지 않으므로 좀 더 유연한 원형으로 대칭인 프로젝션 모델(radially symmetric projection model)을 사용하고자 합니다.

A. Radially Symmetric Model

핀홀 카메라에서의 프로젝션 모델은 아래와 같습니다.

  • Perspective projection : $ r= f \tan \theta $

여기서 $\theta$는 광축과 광선간의 각도입니다. 또한 $r$은 이미지 위치와 주점과의 거리입니다. $f$는 focal length 입니다.

어안 렌즈에서 사용되는 프로젝션은 다음 중 한가지를 주로 사용합니다.

  • Stereographic projection : $ r = 2 f \tan (\theta / 2) $
  • Equidistance projection : $ r = f \theta $
  • Equisolid angle projection : $ r = 2 f \sin (\theta / 2) $
  • Orthogonal proejction : $ r = f \sin (\theta)$

하지만 실제 렌즈에서는 렌즈의 설계 디자인에 꼭 맞게 생산되지 않습니다. 더군다나 캘리브레이션 하는 입장에서는 어느 디자인을 사용한지도 모릅니다. 따라서 일반적인 형태를 사용하고자 합니다.

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

짝수번 제곱수가 없는 이유는 r을 음수 방향으로도 확장시키기 위함입니다.

계산을 위하여 사용할 항의 수를 결정해야 하는데, 여기서는 5개의 항을 사용하면 충분하였습니다.

이제 $\mathcal{F}$을 광선이 정규화된 이미지 좌표계(normalized image coordinates)로 매핑되는 함수를 만들 수 있습니다.

$$ \begin{pmatrix} x \\ y\end{pmatrix} = r(\theta) \begin{pmatrix} \cos \varphi \\ \sin \varphi \end{pmatrix} = \mathcal{F}(\Phi)$$

$\Phi = (\theta, \varphi)^T$는 광선이 들어오는 방향을 의미합니다.

B. Full Model

이러한 모델을 이용하여도 실제 렌즈와 차이가 있습니다. 예를 들어 렌즈의 부품들이 잘 정렬이 되지 못하면 원형 대칭성이 정확하지 않게 됩니다. 또한 광축이 틀어지면 이미지가 틸트되어 나타나게 됩니다. 따라서 이러한 모든 현상들을 모델링하기 보다는 수학적으로 왜곡 모델을 만들어 풀어가고자 합니다.

많이 쓰이는 것처럼 원형(radial), 수직형(tangential) 왜곡의 두가지로 나누어 모델링 하였습니다.

$$ \Delta_{r}(\theta, \varphi) = (l_1 \theta + l_2 \theta^3 + l_3 \theta^5) (i_1 \cos \varphi + i_2 \sin \varphi + i_3 \cos 2 \varphi + i_4 \sin 2 \varphi)$$

$$ \Delta_{t}(\theta, \varphi) = (m_1 \theta + m_2 \theta^3 + m_3 \theta^5) (j_1 \cos \varphi + j_2 \sin \varphi + j_3 \cos 2 \varphi + j_4 \sin 2 \varphi)$$

이제 왜곡에 대한 항을 원래의 대칭형 모델에 삽입하면 전체 모델은 다음과 같습니다.

$$ \mathbf{x}_d = r(\theta) \mathbf{u} (\varphi) + \Delta_r (\theta, \varphi) \mathbf{u}_r (\varphi) + \Delta_t (\theta, \varphi) \mathbf{u}_\varphi (\varphi) $$

여기서 $ \mathbf{u}_r = [ \cos( \varphi ), \sin (\varphi)]^T, \mathbf{u}_\varphi = [ - \sin( \varphi ), \cos (\varphi)]^T$는 각각 원형, 수직형 방향의 유닛 벡터입니다.

이 식을 그대로 이미지 픽셀 좌표계로 변환하면 다음과 같습니다. 흔히 사용되는 시고가 같습니다.

$$ \begin{pmatrix} u \\ v \end{pmatrix} = \begin{bmatrix} m_u &\ 0 \\ 0 &\ m_v \end{bmatrix} \begin{pmatrix} x_d \\ y_d \end{pmatrix} + \begin{pmatrix} u_0 \\ v_0 \end{pmatrix} = \mathcal{A}(\mathbf{x}_d) $$

이런 과정을 통틀허 전방 카메라 모델로 사용합니다.

$$ \mathbf{m} = \mathcal{P}_c ( \Phi )$$

C. Backward Model

역방 카메라 모델은 $\Phi = \mathcal{P}_c^{-1} ( \mathbf{m}) $은 이미지 좌표 $mathbf{m} = (u, v)^T$를 광선이 들어오는 방향 $\Phi = (\theta, \varphi)^T$로 변환하는 과정입니다. $\mathcal{P}_c$는 $\mathcal{P}_c = \mathcal{A} \circ \mathcal{D} \circ \mathcal{F}$로 이루어져 있습니다. 따라서 그 역 변환 또한 $\mathcal{P}_c^{-1} = \mathcal{F}^{-1} \circ \mathcal{D}^{-1} \circ \mathcal{A}^{-1}$임을 생각할 수 있습니다.

$\mathcal{F}^{-1}$와 $\mathcal{A}^{-1}$ 단순한 연산이고 $\mathcal{D}^{-1}$가 문제입니다.

$\mathcal{D}^{-1}$는 사실 $\mathbf{x} = \mathbf{x}_d - \mathbf{s}$로 단순히 위치를 이동시키는 것가 같다고 볼 수 있습니다. 테일러 확장을 통하여 이 이동량은 다음과 같이 추정해볼 수 있습니다.

$$s \simeq \big( I + \frac{\partial \mathcal{S}}{\partial \Phi } (\Phi_d) \big( \frac{\partial \mathcal{F}}{\partial \Phi } (\Phi_d) \big)^{-1} \big)^{-1} \mathcal{S}(\Phi_d)$$

$$ \mathcal{S}(\Phi) = \Delta_r(\theta, \varphi) \mathbf{u}_r (\varphi) + \Delta_d(\theta, \varphi) \mathbf{u}_\varphi (\varphi)$$

3. Justification of the Projection Model

4. Calibrating the Generic Model

제조사의 focal과 최대 화각을 참고하여 각 파라미터의 초기값을 결정하고 Levenberg-marquardt 방법을 이용하여 최적화하여 캘리브레이션을 수행합니다.

5. Calibration Experiments

6. Conclusions


Add a Comment Trackback