핀홀카메라 투영

Camera obscura to modern camera

바늘 구멍 사진기(Camera obscura)

  • 빛이 전혀 통하지 않은 폐쇄된 공간을 만들고 바늘 구멍을 뚫고 빛을 안으로 들어오게 하면 반대편의 상을 맺음
  • 이를 통해 2D 이미지를 구할 수 있었음 -> 2D 이미지를 측량해서 3D 세상과 비교 -> 3D to 2D Mapping 관계에 대한 수식으로 발전
    • 빛은 직선으로 이동한다는 원리와 상이 맺히는 것(3D 공간의 정보가 2D 이미지(상)으로 투영됨)을 이용함

image

현대 카메라 (Modern Camera)

  • 바늘 구멍 사진기와 같은 원리가 적용됨
  • Light Control(빛의 양 조절)
    • Hardware-level pre-processing : Exposure, Aperture(조리개)
    • Electronic Post Processing : ISO gain, Normalization
  • Focal Point(초점)
    • Lens

Camera Projection

  • 3D World 에서 2D Image로 Transformation
\[x = PX\]
  • X : 3D World Coordinate Points
  • P : Projection Matrix
  • x : 2D Image Coordinate Points

Projection Steps

  • World Coordinate System(3D) -> Camera Coordinate System(3D) -> Image Coordinate System(2D)

image

World Coordinate (3D) -> Camera Coordinate (3D)

image

  • Rigid body motion
    • Rotation : 3 x 3 Matrix(SO(3))
    • Tranlsation : 3 x 1 Vector
    • Transformation : 4 x 4 Matrix(SE(3))
    • World 3D Point에 SE(3)를 곱하면 Camera 3D Point가 됨

image

Camera Coordinate (3D) -> Image Coordinate (2D)

image

  • Principal axis
  • Image plane
  • p
  • x_im

원래라면 상이 뒤집혀야 하는 것 아닌가요?

  • 실제로는 상이 뒤집혀서 맺히지만 Vision이나 Graphics에서는 관용적으로 다음과 같이 표현함

image

X_im의 값은 어떻게 구할 수 있을까?

  • Camera Frame의 모습을 2D 단면적으로 확인해보면 아래와 그림과 같음 (X가 화면을 뚫고 들어가는 단면)

image

  • 삼각형의 닮음을 이용해서 X_im 값을 구할 수 있음
    • 삼각형 (X_c, C, Z) 과 삼각형 (X_im, C, P) 과 닮음

image

image

  • 이미지의 중앙이 (0, 0) 값을 갖고 있으므로 좌측 상단이 (0, 0) 값을 가질 수 있게 중앙을 옮겨야 함

image

image

  • K Matrix(Intrinsic Matrix)를 다음과 같이 구할 수 있음 (아래의 수식 역순)
    • Intrinsic Matrix는 카메라 시점에서 본 3D Point를 2D Image 상에 맺히게 함

image

2가지 steps을 합치게 되면..
  1. World Frame으로 표현된 3D Point인 X_w에 World2Camera Rigid Body를 적용하여 Camera Frame으로 3D Point인 X_c 로 표현
  2. X_c에 카메라 K Matrix를 적용하여 Image Pixel인 x_im을 표현함
  3. 따라서 K Matrix * [R t] Matrix * X_w가 됨
  • Intrinsic : K Matrix
  • Extrinsic : [R t] Matrix

image

image