본문 바로가기
DL|ML

[Tübingen ML] Computer Vision - Lecture 2.2 (Image Formation: Geometric Image Formation)

by 이든Eden 2023. 3. 14.

 

튀빙겐 대학교의 Lecture: Computer Vision 2.2을 공부하며 정리한 자료입니다.

 

 

Origins of the Pinhole Camera

 

핀홀 카메라에 대한 이야기. 별거 없었던 것 같다.

[그림 1] 핀홀 카메라의 시작

 

아래 [그림 2]에서는 물리적 카메라 모델(physical camera model)과 수학적 카메라 모델(mathmatical camera model)을 비교한다.

 

[그림 2] Physical Camara Model과 Mathmatical Camera Model의 차이

 

  • 물리적 카메라 모델은 focal point뒤에 상이 맺혀서 상이 뒤집힌다.
  • Perspective projection(3D to 2D)을 모델링할 때는 즉, 수학적 카메라 모델은 이미지 플레인이 focal point 앞에 있다고 가정한다.
  • Image coordinates의 적절한 변화를 주면 두 모델은 같다.

 

Projection Models

카메라 calibration 예전에 검색해보면서 perspective projection은 많이 익숙해졌는데 orthographic projection은 처음 들어봤다. 둘의 큰 차이는 orthographic projection은 camera coordinate system == image coordinate system인 것이고 perspective projection은 다르다.

 

[그림 3] Projection Models

 

오른쪽 이미지에서는 살짝 소실점 얘기를 했던 것 같은데 깊게는 안했다.

 

Orthographic Projection

[그림 4] Orthographic Projection

 

  • Orthographic peojction은 3D point인 $\mathtt{x}_c \in \mathbb{R}^3$ 를 pixel coordinates인 $\mathtt{x}_s \in \mathbb{R}^2$으로 바꾸는 것이다.
  • $x_s = x_c$라는 뜻은 좌표 값 그대로 projection 한다는 뜻.

 

이 강의에서는 $x_s$를 screen coordinates로 사용하는데 image coordinates랑 같은 의미로 사용하는 것 같다.

 

[그림 5] Orthographic projection matrix

 

좌표값(숫자?) 그대로 바뀌기 때문에 대각선으로 1이 있는 것 같음.

 

[그림 6] Scaled orthographic projcetion

[그림 6]은 world coordinates를 이미지 센서(pixel)에 맞게 scale 해주는 scaled orthogroaphic projection이라고 한다. 이미지 센서마다 pixel 기준이 다르기 때문에 그걸 맞추는듯.

 

Perspective Projection

대부분의 카메라들에 사용하는 projection 기법이라고 한다. 아래 [그림 7]은 perspective projection을 간단히 표현한 그림이다.

 

[그림 7] Perspective Projection

 

  • Perspective projection은 3D point인 $\mathtt{x}_c \in \mathbb{R}^3$ 를 pixel coordinates인 $\mathtt{x}_s \in \mathbb{R}^2$으로 바꾸는 것이다.
  • Light ray가 camera center를 향해 이어지고 $\mathtt{x}_s$는 픽셀이고 $\mathtt{x}_c$는 3D point이다.
  • z축이 Image plane에 수직이다.
  • 닮음으로 focal length $f$를 구할 수 있다 : $f : z_c = \mathtt{x}_s : \mathtt{x}_c$

 

[그림 8] Perspective projection

 

  • [그림 8]은 camera coordinates의 3D points를 2D인 이미지에 맵핑하는 식을 보여준다. 위에서 보여준 $f : z_c = \mathtt{x}_s : \mathtt{x}_c$ 으로 $x_s$와 $y_s$를 구할 수 있다. 그것이 왼쪽에 보이는 $\begin{pmatrix} x_s \\ y_s \end{pmatrix} = \begin{pmatrix} f x_c / z_c \\ f y_c / z_c \end{pmatrix}$ 식이다.
  • 왼쪽 식을 homogeneous하게 바꾸면 오른쪽 식인 $\tilde{x}_s = \begin{bmatrix} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \overline{\mathtt{x}_c}$ 이다.

 

 

아래 [그림 9]는 [그림 7]의 3D 버전이라고 한다.

 

[그림 9] Without or with principal point offset

 

  • principal point offset은 그럼에서 $\mathtt{c}$로 표현한 것이다. 카메라 내부 파라미터 중 하나인 principal point는 이미지 평면의 중심점을 나타내는 좌표이다. 이 좌표는 이미지의 중앙에 위치하며, 보통 이미지의 중심에 대한 상대적인 위치를 나타내는 방식으로 정의된다.
  • 카메라 내부 파라미터(intrinsic parameters) 중에서는 앞에서 봐온 focal lengthprincipal point가 가장 중요한 파라미터이다. 이 파라미터들은 projection matrix를 계산하는 데에 사용되며, 3차원 공간 상의 점들을 2차원 이미지 평면 상으로 투영하는 데에 있어서 매우 중요한 역할을 한다.

 

[그림 10] principal point를 추가한 matrix

 

  • [그림 8]에서 본 $x_s$와 $y_s$를 구하는 방법에 Principal point를 추가하면 [그림 10]에서 보이는 식을 얻을 수 있다. 이걸 homogeneous하게 바꾸면 오른쪽 식인$\tilde{x}_s = \begin{bmatrix} f_x & s & c_x & 0 \\ 0 & f_y & c_y & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \overline{\mathtt{x}_c}$이 된다.
  • 빨간 부분인 $3 \times 3$ submatrix를 calibration matrix K라고 부른다. 그리고 위에서 이야기한 카메라 내부 파라미터(intrinsic parameters)와 같다.
  • $s$는 skew parameter인데 보통은 0으로 사용하지만 이미지 평면의 축이 서로 직교하지 않는 경우에 사용된다. 일반적으로, 이미지 평면은 x축과 y축이 서로 직교하게 정렬되어 있는데, 일부 카메라에서는 이미지 평면의 x축과 y축이 서로 직교하지 않을 수 있다. 이때, s 파라미터는 이미지 평면의 x축과 y축이 직교하지 않는 정도를 나타내는 값이다.
  • 실제로는 $f_x = f_y$로 그리고 위해서 이야기한 것 처럼 $s=0$으로 설정한다. $f_x$와 $f_y$는 일반적으로 같은 값을 가지지만, 이미지 센서가 정사각형이 아닌 경우, $f_x$와 $f_y$는 다른 값을 가지게 되며, 이 경우에는 $f_x$와 $f_y$를 각각 구분하여 사용해야 한다.

 

Chaining Transformations

Extrinsics에 대해 설명 안하셨잖아요 교수님.. 아마도 지난 시간에 봤던 transformation으로 퉁치는건가보다. 여기 참고

 

[그림 11] chaining transformation

 

  • 카메라 내부 파라미터(intrinsic parameters) : 카메라의 렌즈 특성과 이미지 센서의 속성 등, 카메라 내부의 파라미터. 내부 파라미터는 보통 카메라 매트릭스(camera matrix)로 표현되고, $\begin{bmatrix} f_x & s & c_x & 0 \\ 0 & f_y & c_y & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix}$라고 나타낸다. 이 matrix로 3D points를 2D image plane으로 projection 할 수 있다.
  • 카메라 외부 파라미터(extrinsic parameters): 카메라의 위치와 방향 등을 나타내는 파라미터. 외부 파라미터는 일반적으로 R, t로 표현된다. 여기서 R은 회전 행렬(rotation matrix)이며, t는 카메라의 위치를 나타내는 변위 벡터이다. R과 t를 이용하여 3D points를 카메라 좌표계(camera coordinate system)로 변환할 수 있습니다.
  • 이 두 가지 transformation을 chaining해서 3D points인 world coordinates에서 image로 projection 할 수 있다.

 

Full Rank Representation

 

[그림 12] Full rank representation

 

  • 가끔은 full rank $4 \times 4$로 projection matrix를 나타내는 것을 선호한다.
  • 그렇기 때문에 homogeneous vector $\tilde{x}_s$는 이제 4D vector이고 normalize 되어 있어야한다.

 

이 부분 이해 잘 못함.. ㅎ

 

Lens Distortion

 

[그림 13] Lens distortion

  • Lens distortion(렌즈 왜곡)은 물리적인 카메라 렌즈의 특성으로, 이미지 센서에 들어오는 빛을 렌즈가 굴절할 때 발생하는 왜곡 현상을 의미한다. 이러한 왜곡은 대개 렌즈의 불완전한 설계나 제조 과정에서 발생한다.
  • 주로 나타나는 왜곡 유형은 방사 왜곡(Radial distortion)과 접선 왜곡(Tangential distortion)이 있다.
  • 방사 왜곡(Radial distortion)은 렌즈 중앙부터 멀어질수록 발생하는 왜곡으로, 주로 중심에 가까운 부분은 실제보다 커지고, 멀어질수록 실제보다 작아지는 현상을 보인다.
  • 접선 왜곡(Tangential distortion)은 렌즈의 뒷면이나 전면면이 평행하지 않은 경우 발생하는 왜곡으로, 이미지에서 직선이 완벽한 직선이 아니게 나타나는 현상을 보인다.
  • 렌즈 왜곡은 이미지 기반의 애플리케이션에서 문제가 될 수 있으며, 보정이 필요한 경우가 있다. 카메라 내부 파라미터를 조정하여 왜곡 보정을 수행하거나, 왜곡 보정을 위한 알고리즘을 적용하여 왜곡 보정이 가능하다.

 

[그림 14] Lens distortion 예시